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