这种情况有点奇怪,实际上是从一项大任务中摘录出来的。
我想从文件名中删除最后两个字符(\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}