a.tex
文件中有个表格,有个\label{tab}
,并在a.tex
内\ref{tab}
。现在第一章1.tex
和第二章2.tex
均\input{a.tex}
。我想要的效果是第一章和第二章对这个表的引用是单独的(当然文字和表本身也是单独的),例如一个是表1,一个是表2。但是由于直接\input
,应该还会报label
重复定义的警告,有什么小技巧可以解决掉这个问题。
最后的效果相当于:我手动把a.tex
的内容分别粘贴至1.tex
和2.tex
里,然后将1.tex
和2.tex
里的\label
和\ref
里的tab
分别改成tab1
和tab2
。
主要是a.tex
被调用多次,可能还需要反复改,不想复制粘贴,容易出错。
目前的解决思路是\CatchFileDef
在1.tex
中将a.tex
的内容定义在\filei
中,然后替换\filei
中出现的tab
为其他的内容;在2.tex
中将a.tex
的内容定义在\fileii
中,然后替换\fileii
中出现的tab
为其他的内容。但是目前没有找到可以替换命令里的内容的方法,替换普通文本是可以用\StrSubstitute
的。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{testa.tex}
\section{test section}
\begin{table}
\centering
\begin{tabular}{c|c}
a & a \\
a & a
\end{tabular}
\caption{Caption}
\label{\lpre:XXXX}
\end{table}
test \ref{\lpre:XXXX}
\end{filecontents}
\newcommand{\lpre}{\Alph{section}\alph{subsection}}
\begin{document}
\input{testa.tex}
\input{testa.tex}
\end{document}
感谢群内大佬的指点,我这边的需求是被重复导入的子文件一定在某个subsection
下,所以使用subsection
的计数器来避免重复,大家可以根据自己的需求自行选择合适的计数器。