使用包currfile
:
\setcounter{foo}{\inputlineno}%
\def\barfile{.aux/\currfilebase\thefoo.bar}%
\def\texfile{.aux/\currfilebase\thefoo.tex}%
% ...
\input{\texfile}
然后计数器的值加倍:
! LaTeX Error: File `.aux/filename363363.tex' not found.
当\texfile
仅包含\fname
或 仅包含 时\thefoo
,我没有看到任何重复。此外,使用包fink
并且\def\fname{\finkfile}
,没有出现任何问题。
最小工作示例:
创建一个包含以下内容的主文件:
\documentclass{article}
\usepackage{currfile}
\newcounter{counter}
\setcounter{counter}{0}
\begin{document}
\def\texfile{\currfilebase\thecounter.tex}
\input{a_main0.tex}
\input{\texfile}
\end{document}
和另一个名为 的文件a_main0.tex
。排版引发错误:
...
(./a_main.aux) (./a_main0.tex)
! LaTeX Error: File `a_main00.tex' not found.
a_main0.tex
显然,可以通过 找到文件\input
,但是当使用 给出文件名时却找不到\texfile
,因为字符“0”重复了。
答案1
语句\def\texfile{\currfilebase\thecounter.tex}
在第二次调用中被评估\input{\texfile}
,但是当前输入文件a_main0
由于\currfilebase
在 时将其内容切换为该名称\input
,因此\texfile
扩展为a_main00.tex
。
一种可能的解决方案是使用\edef\textfile
,即扩展定义,因此\currentfilebase
不再包含宏,而是包含定义时的值。
a_main.tex
\documentclass{article}
\usepackage{currfile}
\newcounter{counter}
\setcounter{counter}{0}
\begin{document}
\edef\texfile{\currfilebase\thecounter.tex}
\input{a_main0.tex}
\input{\texfile}
\end{document}
a_main0.tex
只包含行
\section{Foo from the file with the 0 suffix}
然而,我既不建议在图形文件名称中使用下划线(即使有使用)(这里不是这种情况),也不建议使用名为;-)currfile
的计数器counter