ファイルからドキュメントにバージョン番号を追加する

ファイルからドキュメントにバージョン番号を追加する

私は解決策を探し求めて必死になっています。基本的に、タイトル ページのどこかにドキュメントのバージョン番号を追加する必要があります。私がやりたいのは、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

少し遅れたことに気づいていますが、私もまったく同じ質問を自分に問いかけていて、素敵な小さなパッケージを見つけました。転向

MWE:

\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.

メイン.tex

\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.

関連情報