我一直在瘋狂地尋找解決方案。本質上,我需要在標題頁的某個位置添加文件的版本號。我想要做的是有一個文件,例如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}
「真實」版本號是靜態設定的,但內部版本號是動態產生的。如果你想「重置」計數器,該包會創建一個簡單的版本.dat建置目錄中的文件,可以手動編輯。現在將版本號放入單獨的檔案中。對於大型/複雜文檔,我將所有文檔設定放在 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.