![将计数器转移到另一个文件](https://linux22.com/image/273982/%E5%B0%86%E8%AE%A1%E6%95%B0%E5%99%A8%E8%BD%AC%E7%A7%BB%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6.png)
我有两个文件,比如说file1.tex
和file2.tex
。file1.tex
它是一系列文件中的第一个,它以计数器开头(例如第 1 章,尽管我的计数器不用于章节)。然后在的末尾file1
,章节的计数器为 7 ;我想将计数器的值进位到,file2.tex
以便我可以使用在 中值为 7 的计数器file2.tex
。这样,我就可以将 中的计数器进位file2.tex
到 中的计数器,file3.tex
依此类推。
我认为我需要file1.tex
先编译,然后file2.tex
,然后file3.tex
......当然。
这可能吗?如果可能的话,怎么做?我什么也想不出来。
答案1
您可以使用以下组合xr
从其他文档中检索标签,以及refcount
将标签的引用分配给计数器(作为参考,请参阅不同文件之间的交叉引用):
file1.tex
:
\documentclass{article}
\makeatletter
\newcommand*{\storecounter}[2]{%
\edef\@currentlabel{\the\value{#1}}% Store current counter value in \@currentlabel
\label{#2}% Store label
}
\makeatother
\newcounter{mycntr}
\begin{document}
Some text
\setcounter{mycntr}{12}\storecounter{mycntr}{first}
\setcounter{mycntr}{99}\storecounter{mycntr}{second}
\end{document}
这将创建file1.aux
有关标签及其关联值的关键信息:
\newlabel{first}{{12}{1}}
\newlabel{second}{{99}{1}}
file2.tex
:
\documentclass{article}
\usepackage{refcount,xr}% http://ctan.org/pkg/{refcount,xr}
\newcommand*{\getcounter}[2]{%
\setcounterref{#1}{#2}% Retrieve label value and store it in a counter
}
\externaldocument[file1:]{file1}
\newcounter{mycntr}
\begin{document}
Counter: \getcounter{mycntr}{file1:first}\themycntr \par
Counter: \getcounter{mycntr}{file1:second}\themycntr
\end{document}