
Согласно описанию 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 это дает:
[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
тогда как у второго есть
\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*
.
Видимо, автор задокументировал свои пожелания по упаковке, но забыл их реализовать.