Catchfilebetweentags 不起作用

Catchfilebetweentags 不起作用

根据catchfilebetweentags软件包命令的描述\ExecuteMetaData*[<file>]{tag},它应该执行与“取消注释”相同的工作\ExecuteMetaData[<file>]{tag},并且以单个字符%开头。文件:

\documentclass{article}
\usepackage{catchfilebetweentags}
\begin{document}
\ExecuteMetaData*[example.tex]{tag}
\end{document}

使用以下文件 example.tex:

%<*tag>
some text 
%some more text
%</tag>

应该产生输出:

一些文字 更多文字

不幸的是,在 Texmaker 中它给出:

[示例.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

而第二个

\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*

显然,作者记录了他对该软件包的愿望,但忘记实现它们了。

相关内容