
catchfilebetweentags
パッケージの説明によると、コマンドは\ExecuteMetaData*[<file>]{tag}
と同じ機能を実行する必要がありますが、先頭に\ExecuteMetaData[<file>]{tag}
1 があるコメント行の「コメント解除」も実行する必要があります。ファイル:%
\documentclass{article}
\usepackage{catchfilebetweentags}
\begin{document}
\ExecuteMetaData*[example.tex]{tag}
\end{document}
次のファイル example.tex を使用します。
%<*tag>
some text
%some more text
%</tag>
出力は次のようになります:
いくつかのテキスト いくつかの追加のテキスト
残念ながら、Texmaker では次のようになります:
[example.tex]タグ
Overleaf では 30 秒間コンパイルされ、タイムアウト エラーが表示されます。これを修正するにはどうすればよいでしょうか?
答え1
申し訳ありませんが、解決策はありません。例を見てみましょう
\begin{filecontents*}{\jobname-example}
%<*tag>
some text
%some more text
%</tag>
\end{filecontents*}
\documentclass{article}
\usepackage{catchfilebetweentags}
\begin{document}
\tracingmacros=1 % for debugging
\CatchFileBetweenTags{\foo}{\jobname-example.tex}{tag}\show\foo
\CatchFileBetweenTags*{\foo}{\jobname-example.tex}{tag}
%\ExecuteMetaData[\jobname-example.tex]{tag}
\end{document}
最初\CatchFileBetweenTags
は
\CatchFileBetweenTags #1#2#3->\CatchFileBetweenDelims \CatchFBT@tok {#2}{%<*#3>}{%</#3>}[\CatchFBT@sanitize ]\CatchFBT@Final {#1}
#1<-\foo
#2<-\jobname -example.tex
#3<-tag
一方、2番目は
\CatchFileBetweenTags #1#2#3->\CatchFileBetweenDelims \CatchFBT@tok {#2}{%<*#3>}{%</#3>}[\CatchFBT@sanitize ]\CatchFBT@Final {#1}
#1<-*
#2<-\foo
#3<-\jobname -example.tex
何かが間違っていることがはっきりとわかります。
\ExecuteMetaData
さらに悪いことに、の定義は
% catchfilebetweentags.sty, line 53:
\newrobustcmd*\ExecuteMetaData[2][\jobname]{%
\CatchFileBetweenTags\CatchFBT@tok{#1}{#2}%
\global\expandafter\CatchFBT@tok\expandafter{%
\expandafter}\the\CatchFBT@tok
}% \ExecuteMetaData
だから全く規定がない\ExecuteMetaData
とを区別するため\ExecuteMetaData*
。
どうやら作者はパッケージに関する要望を文書化していたものの、それを実装するのを忘れていたようです。