將版本號從文件新增至文檔

將版本號從文件新增至文檔

我一直在瘋狂地尋找解決方案。本質上,我需要在標題頁的某個位置添加文件的版本號。我想要做的是有一個文件,例如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}

2]

答案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.

相關內容