表の\label、\ref 相互参照について

表の\label、\ref 相互参照について

- 和人 伊藤 の投稿
返信数: 7
platexでjsreportクラスで書いているのですが、自分は\label、\refは正しく配置しているつもりですが、\refする時、表の番号ではなく、キャプションが表示されます。

Windowsでvscodeのlatex workshopを使っています。問題の部分は

\begin{table}[h]
\centering
\caption{前処理の各手順後のポスト数}
\label{tab:number_of_preprocessed_data}
\begin{tabular}{|c|r|}\hline
...

...
表~\ref{tab:number_of_preprocessed_data}
...

でコンパイルすると、キャプション自体「表 2.1 前処理の各手順後のポスト数」は正しく表示されますが、本文の部分は「表2.1」ではなく、「表 前処理の各手順後のポスト数」と表示されます。

もちろん本文に「表2.1」と表示させたいが、エラーメッセージが出ぜ、コンパイルが成功してしまいます。理由が全くわかりません。
和人 伊藤 への返信

Re: 表の\label、\ref 相互参照について

- 奥村 晴彦 の投稿
\documentclass{jsreport}
\begin{document}

\begin{table}[h]
\centering
\caption{前処理の各手順後のポスト数}
\label{tab:number_of_preprocessed_data}
...
\end{table}

...
表~\ref{tab:number_of_preprocessed_data}
...

\end{document}

でやってみましたが再現できませんでした。ほかに何かスタイルファイルとかがないと再現しないでしょうか?

奥村 晴彦 への返信

Re: 表の\label、\ref 相互参照について

- 和人 伊藤 の投稿
失礼いたしました。
自分のソースファイルのプリアンブルの部分を全部載せます。目次インデントの設定と見出し設定で何か影響があったのでしょうか?

\documentclass[a4paper, 12pt]{jsreport}
% 余白設定
\usepackage{layout}
\usepackage[truedimen]{geometry}
\geometry{left=25truemm, right=25truemm, top=25truemm, bottom=20truemm}
% 目次インデントの設定
\setcounter{tocdepth}{4}
\makeatletter
\renewcommand*{\l@chapter} {\@dottedtocline{1}{0zw}{4zw}}
\renewcommand*{\l@section} {\@dottedtocline{2}{2zw}{2zw}}
\renewcommand*{\l@subsection}{\@dottedtocline{3}{4zw}{3zw}}
\renewcommand*{\l@subsubsection} {\@dottedtocline{4}{6zw}{6zw}}
\makeatother
% 見出し設定
\usepackage{titlesec}
\titleformat{\chapter}{\normalsize\textgt}{第\,\thechapter\,章}{1zw}{}
\titleformat{\section}{\normalsize\textgt}{\thesection}{1zw}{}
\titleformat{\subsection}{\normalsize\textgt}{\thesubsection}{1zw}{}
\titleformat{\subsubsection}{\normalsize\textgt}{\thesubsubsection}{1zw}{}
\titlespacing{\chapter}{0zw}{0\baselineskip}{0\baselineskip}
\titlespacing{\section}{0zw}{0\baselineskip}{0\baselineskip}
\titlespacing{\subsection}{0zw}{0\baselineskip}{0\baselineskip}
\titlespacing{\subsubsection}{0zw}{0\baselineskip}{0\baselineskip}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\chapter}{\if@openright\cleardoublepage\else\clearpage\fi}{}{}{}
\makeatother
% 他のパッケージ
\usepackage{comment}
\usepackage{url}
\usepackage{hhline}
\usepackage{hyperref}
\usepackage[dvipdfmx]{graphicx}
\usepackage{enumerate}
和人 伊藤 への返信

Re: 表の\label、\ref 相互参照について

- 奥村 晴彦 の投稿
```
\documentclass[a4paper, 12pt]{jsreport}
% 余白設定
\usepackage{layout}
\usepackage[truedimen]{geometry}
\geometry{left=25truemm, right=25truemm, top=25truemm, bottom=20truemm}
% 目次インデントの設定
\setcounter{tocdepth}{4}
\makeatletter
\renewcommand*{\l@chapter} {\@dottedtocline{1}{0zw}{4zw}}
\renewcommand*{\l@section} {\@dottedtocline{2}{2zw}{2zw}}
\renewcommand*{\l@subsection}{\@dottedtocline{3}{4zw}{3zw}}
\renewcommand*{\l@subsubsection} {\@dottedtocline{4}{6zw}{6zw}}
\makeatother
% 見出し設定
\usepackage{titlesec}
\titleformat{\chapter}{\normalsize\textgt}{第\,\thechapter\,章}{1zw}{}
\titleformat{\section}{\normalsize\textgt}{\thesection}{1zw}{}
\titleformat{\subsection}{\normalsize\textgt}{\thesubsection}{1zw}{}
\titleformat{\subsubsection}{\normalsize\textgt}{\thesubsubsection}{1zw}{}
\titlespacing{\chapter}{0zw}{0\baselineskip}{0\baselineskip}
\titlespacing{\section}{0zw}{0\baselineskip}{0\baselineskip}
\titlespacing{\subsection}{0zw}{0\baselineskip}{0\baselineskip}
\titlespacing{\subsubsection}{0zw}{0\baselineskip}{0\baselineskip}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\chapter}{\if@openright\cleardoublepage\else\clearpage\fi}{}{}{}
\makeatother
% 他のパッケージ
\usepackage{comment}
\usepackage{url}
\usepackage{hhline}
\usepackage{hyperref}
\usepackage[dvipdfmx]{graphicx}
\usepackage{enumerate}
\begin{document}

\begin{table}[h]
\centering
\caption{前処理の各手順後のポスト数}
\label{tab:number_of_preprocessed_data}
...
\end{table}

...
表~\ref{tab:number_of_preprocessed_data}
...

\end{document}
```

こちらでは正常ですが、そちらではこれでそういう症状が出るのでしょうか?
奥村 晴彦 への返信

Re: 表の\label、\ref 相互参照について

- 和人 伊藤 の投稿
そうです。表の位置とか、どう調整しても、本文中に「表 前処理の各手順後のポスト数」と表示されます。
和人 伊藤 への返信

Re: 表の\label、\ref 相互参照について

- 奥村 晴彦 の投稿
私が打ち込んだ上のコードを実行してもそうなるのですか? そうではなくて、私の示したコードでは正常だけれど伊藤さんの(長い)コードだとうまくいかないということなのでしょうか?
奥村 晴彦 への返信

Re: 表の\label、\ref 相互参照について

- 和人 伊藤 の投稿
そうではないのですが、一応解決しました。
理由はよくわからないのですが、新しい.texファイルに自分のコードを全部コピペして、コンパイルしたら、本文中に表番号が正しく表示されました。
お手を煩わせて申し訳ございませんでした。
和人 伊藤 への返信

Re: 表の\label、\ref 相互参照について

- 和田 勇 の投稿

pdf を作成するとき dvipdfmx が以下に関するたくさんの警告メッセージを出力していますね。

   dvipdfmx:warning: Unknown token "SDict"

vscode でログを表示しながらビルドすると表示されていると思います

hyperref の機能を利用されるなら、これも解消しておかれるとよいでしょう

以下を参考に hyperref にも dvipdfmx のオプションを追加するか documentclass のオプションに dvipdfmx を追加し graphics の方は取り除くでもよいです。

ACMのSIGCHIフォーマットでTeXが大量に出力する警告を消す