Versionsnummer aus Datei zum Dokument hinzufügen

Versionsnummer aus Datei zum Dokument hinzufügen

Ich bin verrückt nach einer Lösung geworden. Im Wesentlichen muss ich die Versionsnummer des Dokuments irgendwo auf der Titelseite hinzufügen. Ich möchte eine Datei wie haben, version.texdie eine Build-Nummer enthält (z. B. 23), und jedes Mal, wenn die pdfgeneriert wird, wird der Zähler aus der Datei gelesen, erhöht und wieder darin gespeichert. Auf diese Weise erhöht sich die Dokumentnummer und ich kann die verschiedenen Versionen verfolgen. Also, als Beispiel:

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

Ich habe mir das Paket angesehen gitinfo2, aber es scheint zu kompliziert. Jede Hilfe ist willkommen.

Antwort1

Wie Ulrike Fischer schon sagte: Der Zähler würde bei jeder Kompilierung hochgezählt, was im Prinzip sinnlos ist. Die Kompilierung funktioniert auch für eine unveränderte Version, die dann die gleiche Versionsnummer haben sollte.

Dies ist jedoch die gewünschte Funktion:

Zu Beginn des Dokuments wird der Zähler erhöht und am Ende der aktuelle Wert in der .auxDatei ( \@auxout) gespeichert. Da diese Datei vor actions eingelesen wird \begin{document}, ist in bereits ein Zählerwert vorhanden versionNumber, so dass \stepcounteract möglich ist.


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

BearbeitenEin anderer Ansatz

Verwenden Sie eine andere externe Datei, die beispielsweise von einer True-Version-Software aktualisiert wird, und einen Low-Level \readin-Befehl, der die Zeile beispielsweise in einem Makro speichert \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.versenthält beispielsweise diese Zeile

42 Gandalf 04/22/2015 16:03

Bildbeschreibung hier eingeben

Antwort2

Ich weiß, dass ich etwas spät dran bin, aber ich habe mir genau die gleiche Frage gestellt und ein nettes kleines Paket gefunden:mversion.

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}

Die "echte" Versionsnummer wird statisch gesetzt, die Buildnummer wird jedoch dynamisch generiert. Wenn Sie den Zähler "zurücksetzen" möchten, erstellt das Paket eine einfacheversion.datDatei im Build-Verzeichnis, die manuell bearbeitet werden kann. Nun zum Einfügen der Versionsnummer in eine separate Datei. Für große/komplexe Dokumente füge ich alle meine Dokumenteinstellungen in eine TeX-Datei ein, wie z. B.DocSettings.texund importiere sie in meine Hauptdatei.

Modifiziertes MWE:

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

Main.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]

Antwort3

Wenn Sie bei jedem Durchlauf von TeX einen anderen Wert drucken müssen, müssen Sie Folgendes tun: 1) den Wert aus der Datei lesen, 2) den Wert hinzufügen, 3) den Wert in der Datei speichern. Dies kann mit elementaren TeX-Tools (also TeX-Grundelementen plus allgemeinen Makros) mit diesem Code erledigt werden:

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

verwandte Informationen