inputをした際に Duplicate label #1

inputをした際に Duplicate label #1

- t t の投稿
返信数: 9
複数のTeXファイルを、1つのTeXファイルにまとめるというのをやっております。

具体的には、まとめ先の主体のTeXファイルにはdocmuteパッケージを導入して、他のファイルのプリアンブルを無視して、\input{hoge.tex} のように複数のtexファイルを1つのtexファイルの中に読み込んでおります。

その際、各texファイルのプリアンブルに、
\newcommand{\toi}[1]{\refstepcounter{toinum}\noindent\textbf{\boxed{\thetoinum}}\quad \label{#1}}

(toinum は自作のカウンタ)
と書き込んだことにより、「Duplicate label #1」という警告が出ます。

しかし、それらの「#1」というのは、コマンド定義の時の引数であって、それがダブっていても、書き出しには問題が生じないはずです。

この警告を消す方法は無いでしょうか?
t t への返信

Re: inputをした際に Duplicate label #1

- 北見 けん の投稿
ちょっと試してみましたが、
「Duplicate label #1」という警告は出ないようです。
警告が出るようなソースファイルを提示していただけますか?

## 試すためにファイルを三つも作ったりして手間がかかりましたが、
## t t さんのお手元のものとは全く見当違いのものを作っていたかもしれず、
## なんでこんなに手間をかけているのだろう、とモヤモヤしています。
## 自分で勝手にやっているのでべつに良いのですけれど。

そもそも、docmuteパッケージは
読み込むファイルのプリアンブルを読み飛ばすようなので、
プリアンブルのコマンド定義の中身を字の文としてそのまま実行して
「Duplicate label #1」という警告がでる というのは、
何かおかしい気がします。
北見 けん への返信

Re: inputをした際に Duplicate label #1

- t t の投稿
大変申し訳ありません。一般的な現象と思い、ソースを提示しておりませんでした。
現象を再現できる最短のソースは以下です。

まとめ.tex

\documentclass[uplatex]{jsarticle}
\usepackage{docmute}
\newcommand{\toi}[1]{\refstepcounter{toinum}\noindent\thetoinum\quad \label{#1}}
\begin{document}
まとめの本文
\input{読み込み用.tex}
\end{document}


読み込み用.tex

\documentclass[uplatex]{jsarticle}
\usepackage{docmute}
\newcommand{\toi}[1]{\refstepcounter{toinum}\noindent\thetoinum\quad \label{#1}}
\begin{document}
読み込み用の本文
\end{document}



まとめ.texのソースを開くと、VScodeの下の「問題」のところに警告が出ます。添付画像がそのエラーです

YNUEDIrX4swAAAABJRU5ErkJggg==


添付 スクリーンショット_2021-08-04_20.54.20.png
t t への返信

Re: inputをした際に Duplicate label #1

- m c の投稿
TexLive 2021,macOS,TeXworks 0.6.6でご提示の例をコンパイルしてみましたが,
何のエラー,警告もなく処理できています.
#添付はその際のログです

VScodeで処理されているようですが,ターミナルもしくはコマンドラインから手動で処理
(またはVScode以外のツールで処理)されるとどうでしょうか?
t t への返信

Re: inputをした際に Duplicate label #1

- 北見 けん の投稿
サンプルのソースコードをありがとうございます。
こちらで作って試したものとだいだい似たようなものでした。
## つまり、一般的な記述の仕方という見立ては当たっていたようですが、
## それにしても、手元で入力するよりコピー&ペーストできた方が追試が楽ですよね。

で、お示しのコードでも改めて試してみましたが、
やはりlogファイルに警告は現れませんでした。
当方の LaTeX は古いので、そのせいかもしれません。
新しいものを使っている方による追試を待とうと思います。
お役に立てずにすみません。

【追記です。これを書いている間に
 m c さんからの追試報告があったようです。
 やはり警告は出ないようですね。


ところで、警告文の[3,71]というのは
ソースファイルの3行目の71文字目ということですよね。
確かに定義文中の \label のところを指しているようですが、
最近の LaTeX はこんな風に場所を表示してくれるのですね。知りませんでした。

で、最初の「まとめ.tex」の3行71文字の段階で
\label が Duplicate の警告を出しているのですね。
最初のパスなのに Duplicate というのも奇妙ですね。
北見 けん への返信

Re: inputをした際に Duplicate label #1

- Yamamoto Munehiro "munepi" の投稿

添付画像のとおり、 本件は、エディタVisual Studio Codeの拡張機能LaTeX Workshop側の問題のように思います。

どうやら、プリアンブル関係なく、LaTeX文章ファイル全体を舐めているようで、 「\label{#1}」が重複している と勘違いして、この警告を出しているようです。

それゆえ、本件は、TeX Live環境ならびに、最近の((u)p)LaTeXも、無関係です。

添付 ScreenShot_252.png
北見 けん への返信

Re: inputをした際に Duplicate label #1

- 北見 けん の投稿
複数ご指摘があったように、エディタが独自に出している警告なのですね。
しかも TeX の動作を見ずに LaTeX ソースの表面的な形式チェックの可能性が高いと。

最近の TeX エンジンは高機能らしいので、
ソースファイル中の文字位置まで取得するプリミティブが導入されていて
LaTeX もそれを使って詳しい警告を出すように進化しているのかな
と思ってしまいました。
北見 けん への返信

Re: inputをした際に Duplicate label #1

- t t の投稿
皆様、ありがとうございます。
なるほど、これは、VScodeの方の不具合だったのですね。
たしかに、警告は出るものの、タイプセットは問題なくできました。
VScode以外を使ったことがなく、不具合とは思いもしませんでした。

今回は、不具合ということで無視をします。ありがとうございます。
t t への返信

Re: inputをした際に Duplicate label #1

- 帯田 木偶太 の投稿
不具合というか何というか、エディターや統合環境でのアシスト機能で
「完璧」を期待するのは難しいでしょうね。特に TeX の文法は
柔軟・複雑ですから、それを完全に理解するのであれば、
それはエディターとか統合環境ではなく、GUI 環境を備えた
TeX/LaTeX そのものってことになりそう。
t t への返信

Re: inputをした際に Duplicate label #1

- 帯田 木偶太 の投稿
TeX や LaTeX 自体ではなく、エディター乃至その拡張機能・プラグインの類いが
警告を出しているのでしょうね。\input で取り込まれるファイルまでもまとめて
スキャンしておかしなところは指摘してくれるが、マクロ定義内の \label と、
実際に実行される \label とを区別できないでいるということではないでしょうか。

試してみたわけではありませんが、そのまま VSCode からでも、直接コマンド・
プロンプトからでもタイプセットしてみれば、問題なくできあがってしまうのでは
ないでしょうか。