我一直在疯狂地寻找解决方案。本质上,我需要在标题页的某个地方添加文档的版本号。我想要做的是创建一个包含version.tex
内部版本号(例如 23)的文件,每次pdf
生成时,都会从文件中读取计数器,增加计数器,然后将其存储回文件中。这样,文档编号就会增加,我就可以跟踪不同的版本。因此,举个例子:
\documentclass[]{article}
% Initialize the counter
\newcounter{versionNumber}
% Set it to the current value THIS FAILS
\setcounter{versionNumber}{\input{version.tex}}
%Increase by one
\stepcounter{versionNumber}
% Write to the file the new number
% MISSING
\begin{document}
Version of the document: \theVersionNumber
\end{document}
我查看了该gitinfo2
软件包,但它似乎过于复杂。任何帮助都非常感谢
答案1
正如 Ulrike Fischer 所说:计数器每次编译时都会递增,这基本上是无用的。即使对于未更改的版本,编译仍将有效,那时应该具有某个版本号。
但是,这是所要求的功能:
在文档开始时,计数器会增加,在文档结束时,当前值会存储到文件.aux
( \@auxout
) 中。由于此文件是在\begin{document}
行动之前读取的,因此 中已经有一些计数器值versionNumber
,因此\stepcounter
可以行动。
\documentclass[]{article}
% Initialize the counter
\newcounter{versionNumber}
\makeatletter
% At the end write the current value back to the `.aux` file
\AtEndDocument{%
\immediate\write\@auxout{%
\string\setcounter{versionNumber}{\number\value{versionNumber}}%
}%
}
\makeatother
% Step the counter at the beginning
\AtBeginDocument{%
\stepcounter{versionNumber}
}
\begin{document}
Version of the document: \theversionNumber
\end{document}
编辑另一种方法
使用另一个外部文件,该文件由真实版本软件更新,例如和低级\readin
命令,将该行存储到宏中,比如\versioninfo
。
\documentclass[]{article}
\newcommand{\versionfilename}{\jobname.vers}
\newwrite\versionfile
\AtBeginDocument{%
\immediate\openin\versionfile=\versionfilename
\read\versionfile to \versioninfo % \versioninfo is the macro containing the text line
\immediate\closein\versionfile%
}
\begin{document}
Version of the document: \versioninfo
\end{document}
\jobname.vers
例如包含这一行
42 Gandalf 04/22/2015 16:03
答案2
我意识到我有点晚了,但我问了自己完全相同的问题并发现了一个简洁的小包裹:版本。
梅威瑟:
\documentclass{article}
\usepackage{mversion} %Provides version with build number.
\setVersion{0.1} %Sets the "official" version number.
\increaseBuild %Increases the build number at each build.
\begin{document}
\title{My Document Title}
\author{Author's Name}
\date{\today \\ v\version} %using the version number in the date for example
\maketitle
\thispagestyle{empty} %Removes page number
\end{document}
“实际”版本号是静态设置的,但内部版本号是动态生成的。如果你想“重置”计数器,包会创建一个简单的版本信息构建目录中的文件,可以手动编辑。现在将版本号放在单独的文件中。对于大型/复杂的文档,我将所有文档设置放在 TeX 文件中,例如文档设置.tex并将它们导入到我的主文件中。
修改后的 MWE:
文档设置.tex
\documentclass{article}
\usepackage{mversion} %Provides version with build number.
\setVersion{0.1} %Sets the "official" version number.
\increaseBuild %Increases the build number at each build.
主文本
\input{DocSettings}
\begin{document}
\title{My Document Title}
\author{Author's Name}
\date{\today \\ v\version}
\maketitle
\thispagestyle{empty} %Removes page number
\end{document}
答案3
如果您需要在每次运行 TeX 时打印不同的值,则需要执行以下操作:1) 从文件读取值,2) 添加值,3) 将值保存到文件。这可以通过基本 TeX 工具(即 TeX 基元加上常用宏)通过以下代码完成:
%% 0) declaration:
\newread\verfilein \newwrite\verfileout \newcount\vernum
%% 1) reading the file:
\openin\verfilein=version.txt
\ifeof\verfilein \def\tmp{0}\else \read\verfilein to\tmp \fi
\closein\verfilein
\vernum=\tmp
%% 2) adding +1
\advance\vernum by1
\edef\thevernum{\the\vernum}
%% 3) saving the value to the file:
\immediate\openout\verfileout=version.txt
\immediate\write\verfileout{\the\vernum}
\immediate\closeout\verfileout
%% 4) using the value:
This document has the version \thevernum.