mikky06
@mikky06

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Tex 参照 ??

解決したいこと

実験のレポートでTexを使っているのですが、参照のするときに
下のように\ref の部分が??と出力さえます。
調べていくと二回コンパイルをしなければいけないようですが、
やり方がわかりませんので教えていただきたいです
texはこの記事を参考に導入しました。
https://qiita.com/passive-radio/items/623c9a35e86b6666b89e

発生している問題・エラー

\documentclass{ltjsarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{pdfpages}  
\usepackage{url}
\usepackage{amsmath,amssymb}
\usepackage{ascmac}
\usepackage{bm}
\usepackage{mathtools}
\usepackage{graphicx}
\usepackage{pdfpages}
\usepackage{hyperref}
\usepackage{pxjahyper}
\usepackage{float}

\begin{document}
 \begin{eqnarray}
  a+b=c
  \label{eq:a}
 \end{eqnarray}
式(\ref{eq:a})は,足し算である。
\end{document}

上のようなコードを書くと、下のように参照部分が??となってしまいます。
a + b = c (1)
式 (??) は, 足し算である。
 これを直すためには二回コンパイルしなければいけないと考えたのですが、
どこの部分を書き換えれば二回コンパイルするのかがわかりません。教えていただきたいです。

###setting.json

{
// 日本語文書で単語移動を使うため、助詞や読点、括弧を区切り文字として指定する
"editor.wordSeparators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~? 、。「」【】『』()!?てにをはがのともへでや",

// 設定: LaTeX Workshop

// LaTeX Workshop ではビルド設定を「Tool」と「Recipe」という2つで考える
//   Tool: 実行される1つのコマンド。コマンド (command) と引数 (args) で構成される
//   Recipe: Tool の組み合わわせを定義する。Tool の組み合わせ (tools) で構成される。
//           tools の中で利用される Tool は "latex-workshop.latex.tools" で定義されている必要がある。

// latex-workshop.latex.tools: Tool の定義
"latex-workshop.latex.tools": [
  
    // latexmk を利用した lualatex によるビルドコマンド
    {
      "name": "Latexmk (LuaLaTeX)",
      "command": "latexmk",
      "args": [
        "-f", "-gg", "-pv", "-lualatex", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
      ]
    },
    // latexmk を利用した xelatex によるビルドコマンド
    {
      "name": "Latexmk (XeLaTeX)",
      "command": "latexmk",
      "args": [
        "-f", "-gg", "-pv", "-xelatex", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
      ]
    },
    // latexmk を利用した uplatex によるビルドコマンド
    {
      "name": "Latexmk (upLaTeX)",
      "command": "latexmk",
      "args": [
        "-f", "-gg", "-pv", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
      ]
    },
    // latexmk を利用した platex によるビルドコマンド
    // 古い LaTeX のテンプレートを使いまわしている (ドキュメントクラスが jreport や jsreport ) 場合のため
    {
      "name": "Latexmk (pLaTeX)",
      "command": "latexmk",
      "args": [
        "-f", "-gg", "-pv", "-latex='platex'", "-latexoption='-kanji=utf8 -no-guess-input-env'", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
      ]
    }
],

// latex-workshop.latex.recipes: Recipe の定義
"latex-workshop.latex.recipes": [
    // LuaLaTeX で書かれた文書のビルドレシピ
    {
      "name": "LuaLaTeX",
      "tools": [
        "Latexmk (LuaLaTeX)"
      ]
    },
    // XeLaTeX で書かれた文書のビルドレシピ
    {
      
      "name": "XeLaTeX",
      "tools": [
        "Latexmk (XeLaTeX)"
      ]
    },
    // LaTeX(upLaTeX) で書かれた文書のビルドレシピ
    {
      "name": "upLaTeX",
      "tools": [
        "Latexmk (upLaTeX)"
      ]
    },
    // LaTeX(pLaTeX) で書かれた文書のビルドレシピ
    {
      "name": "pLaTeX",
      "tools": [
        "Latexmk (pLaTeX)"
      ]
    },
],

// latex-workshop.latex.magic.args: マジックコメント付きの LaTeX ドキュメントをビルドする設定
// '%!TEX' で始まる行はマジックコメントと呼ばれ、LaTeX のビルド時にビルドプログラムに解釈され、
// プログラムの挙動を制御する事ができる。
// 参考リンク: https://blog.miz-ar.info/2016/11/magic-comments-in-tex/
"latex-workshop.latex.magic.args": [
  "-f", "-gg", "-pv", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
],

// latex-workshop.latex.clean.fileTypes: クリーンアップ時に削除されるファイルの拡張子
// LaTeX 文書はビルド時に一時ファイルとしていくつかのファイルを生成するが、最終的に必要となるのは
// PDF ファイルのみである場合などが多い。また、LaTeX のビルド時に失敗した場合、失敗時に生成された
// 一時ファイルの影響で、修正後のビルドに失敗してしまう事がよくある。そのため、一時的なファイルを
// 削除する機能 (クリーンアップ) が LaTeX Workshop には備わっている。
"latex-workshop.latex.clean.fileTypes": [
    "*.aux", "*.bbl", "*.blg", "*.idx", "*.ind", "*.lof", "*.lot", "*.out", "*.toc", "*.acn", "*.acr", "*.alg", "*.glg", "*.glo", "*.gls", "*.ist", "*.fls", "*.log", "*.fdb_latexmk", "*.synctex.gz",
    // for Beamer files
    "_minted*", "*.nav", "*.snm", "*.vrb",
],

// latex-workshop.latex.autoClean.run: ビルド失敗時に一時ファイルのクリーンアップを行うかどうか
// 上記説明にもあったように、ビルド失敗時に生成された一時ファイルが悪影響を及ぼす事があるため、自動で
// クリーンアップがかかるようにしておく。

"latex-workshop.latex.autoClean.run": "onBuilt",

// latex-workshop.view.pdf.viewer: PDF ビューアの開き方
// VSCode 自体には PDF ファイルを閲覧する機能が備わっていないが、
// LaTeX Workshop にはその機能が備わっている。
// "tab" オプションを指定すると、今開いているエディタを左右に分割し、右側に生成されたPDFを表示するようにしてくれる
// この PDF ビュアーは LaTeX のビルドによって更新されると同期して内容を更新してくれる。
"latex-workshop.view.pdf.viewer": "tab",

// latex-workshop.latex.autoBuild.run: .tex ファイルの保存時に自動的にビルドを行うかどうか
// LaTeX ファイルは .tex ファイルを変更後にビルドしないと、PDF ファイル上に変更結果が反映されないため、
// .tex ファイルの保存と同時に自動的にビルドを実行する設定があるが、文書が大きくなるに連れてビルドにも
// 時間がかかってしまい、ビルドプログラムの負荷がエディタに影響するため、無効化しておく。
"latex-workshop.latex.autoBuild.run": "never",

"[tex]": {
    // スニペット補完中にも補完を使えるようにする
    "editor.suggest.snippetsPreventQuickSuggestions": false,
    // インデント幅を2にする
    "editor.tabSize": 2
},

"[latex]": {
    // スニペット補完中にも補完を使えるようにする
    "editor.suggest.snippetsPreventQuickSuggestions": false,
    // インデント幅を2にする
    "editor.tabSize": 2
},

"[bibtex]": {
    // インデント幅を2にする
    "editor.tabSize": 2
},


// ---------- LaTeX Workshop ----------

// 使用パッケージのコマンドや環境の補完を有効にする
"latex-workshop.intellisense.package.enabled": true,

// 生成ファイルを "out" ディレクトリに吐き出す
"latex-workshop.latex.outDir": "out",

}

.latexmkrc.

# 通常の LaTeX ドキュメントのビルドコマンド
$latex = 'uplatex %O -kanji=utf8 -no-guess-input-enc -synctex=1 -interaction=nonstopmode %S';
# pdfLaTeX のビルドコマンド
$pdflatex = 'pdflatex %O -synctex=1 -interaction=nonstopmode %S';
# LuaLaTeX のビルドコマンド
$lualatex = 'lualatex %O -synctex=1 -interaction=nonstopmode %S';
# XeLaTeX のビルドコマンド
$xelatex = 'xelatex %O -no-pdf -synctex=1 -shell-escape -interaction=nonstopmode %S';
# Biber, BibTeX のビルドコマンド
$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
$bibtex = 'upbibtex %O %B';
# makeindex のビルドコマンド
$makeindex = 'upmendex %O -o %D %S';
# dvipdf のビルドコマンド
$dvipdf = 'dvipdfmx %O -o %D %S';
# dvipd のビルドコマンド
$dvips = 'dvips %O -z -f %S | convbkmk -u > %D';
$ps2pdf = 'ps2pdf.exe %O %S %D';

# PDF の作成方法を指定するオプション
## $pdf_mode = 0; PDF を作成しない。
## $pdf_mode = 1; $pdflatex を利用して PDF を作成。
## $pdf_mode = 2; $ps2pdf を利用して .ps ファイルから PDF を作成。
## pdf_mode = 3; $dvipdf を利用して .dvi ファイルから PDF を作成。
## $pdf_mode = 4; $lualatex を利用して .dvi ファイルから PDF を作成。
## $pdf_mode = 5; xdvipdfmx を利用して .xdv ファイルから PDF を作成。
$pdf_mode = 4;

# PDF viewer の設定
$pdf_previewer = "start %S";  # "start %S": .pdf に関連付けられた既存のソフトウェアで表示する。

## Windows では SyncTeX(PDF をビューアーで開いたまま中身の更新が可能で更新がビューアーで反映される機能) が利用できる SumatraPDF 等が便利。
## ぜひ SyncTeX 機能のあるビューアーをインストールしよう。
## SumatraPDF: https://www.sumatrapdfreader.org/free-pdf-reader.html
## $pdf_previewer = 'SumatraPDF -reuse-instance';
0

2Answer

調べていくと二回コンパイルをしなければいけないようですが、やり方がわかりません

1回目のコンパイルで(??)が出るはずなので,もう一度コンパイルすれば良いだけです(小泉構文喋ってるみたい).

1Like

Comments

  1. @mikky06

    Questioner

    申し訳ないのですが、具体的にはどこのコードを変えると2回コンパイルできるのか教えていただきたいです。

    画像右上の三角マークだとコンパイルではなくてbuildですよね?
    スクリーンショット 2023-10-16 170216.png

\documentclass{ltjsarticle}だと、buildができないコードだったのできませんでした。
二回コンパイルするためには、下のように変更を加えればいいのかと考えたのですが、
参照部分が??になってしまいます。

            "Latexmk (upLaTeX)",
            "Latexmk (upLaTeX)"
    // LuaLaTeX で書かれた文書のビルドレシピ
    {
      "name": "LuaLaTeX",
      "tools": [
        "Latexmk (LuaLaTeX)"
      ]
    },
    // XeLaTeX で書かれた文書のビルドレシピ
    {
      
      "name": "XeLaTeX",
      "tools": [
        "Latexmk (XeLaTeX)"
      ]
    },
    // LaTeX(upLaTeX) で書かれた文書のビルドレシピ
    {
      "name": "upLaTeX",
      "tools": [
        "Latexmk (upLaTeX)"
      ]
    },
    // LaTeX(pLaTeX) で書かれた文書のビルドレシピ
    {
      "name": "pLaTeX",
      "tools": [
        "Latexmk (pLaTeX)"
      ]
    },
],

の部分を

"latex-workshop.latex.recipes": [
        // LuaLaTeX で書かれた文書のビルドレシピ
        {
          "name": "LuaLaTeX",
          "tools": [
            "Latexmk (LuaLaTeX)",
            "Latexmk (LuaLaTeX)"
          ]
        },
        // XeLaTeX で書かれた文書のビルドレシピ
        {
          
          "name": "XeLaTeX",
          "tools": [
            "Latexmk (XeLaTeX)",
            "Latexmk (XeLaTeX)"
          ]
        },
        // LaTeX(upLaTeX) で書かれた文書のビルドレシピ
        {
          "name": "upLaTeX",
          "tools": [
            "Latexmk (upLaTeX)",
            "Latexmk (upLaTeX)"
          ]
        },
        // LaTeX(pLaTeX) で書かれた文書のビルドレシピ
        {
          "name": "pLaTeX",
          "tools": [
            "Latexmk (pLaTeX)",
            "Latexmk (pLaTeX)"
          ]
        },
    ],
0Like

Comments

  1. それがうまくいかないとなると,"latex-workshop.latex.autoClean.run": "onBuilt",を無効にして2回ビルドボタン押すことになりそうです.

Your answer might help someone💌