输入动态生成的文件名

输入动态生成的文件名

这种情况有点奇怪,实际上是从一项大任务中摘录出来的。

我想从文件名中删除最后两个字符(\jobname)并输入另一个名称为删除了这两个字符的文件。

当最后两个字符删除工作文件时,处理会在\input命令处停止。

例如,考虑以下代码。

\documentclass{article}

\usepackage{stringstrings}

\begin{document}

% Remove the last two characters from the file name

\newtoks\tn

\tn = {\substring[v]{\jobname}{1}{$-2}}

% The following correctly prints the result in the output 
\the\tn

% However the following does not work.
 \input{\the\tn}

\end{document}

假设上述代码文件名为mainpartAB.tex

虽然我们可以得到输出mainpart,但是\input应该输入名为的文件的命令mainpart.tex却无限停止,只能通过刹车来挽救。

这可能是什么问题?

答案1

您可以使用 expl3 命令,\str_range:Nnn它是可扩展的:

\documentclass{article}


\begin{document}

\newcommand\stringrange{}
\ExplSyntaxOn
\cs_set_eq:NN\stringrange\str_range:Nnn
\ExplSyntaxOff

\input{\stringrange\jobname{1}{-3}}

\end{document}

相关内容