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的计数器来避免重复,大家可以根据自己的需求自行选择合适的计数器。