Agregar número de versión al documento desde el archivo

Agregar número de versión al documento desde el archivo

Me he estado volviendo loco buscando una solución. Básicamente, necesito agregar el número de versión del documento en algún lugar de la página de título. Lo que quiero hacer es tener un archivo que version.texcontenga un número de compilación (como 23) y cada vez que pdfse genera, el contador se lee del archivo, se aumenta y se almacena nuevamente en él. De esta manera el número de documento aumenta y puedo realizar un seguimiento de las diferentes versiones. Entonces, como ejemplo:

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

He mirado el gitinfo2paquete pero parece demasiado complicado. Cualquier ayuda es apreciada

Respuesta1

Como dijo Ulrike Fischer: El contador se incrementaría cada vez que se compilara, lo cual es básicamente inútil. La compilación funcionará incluso para una versión sin cambios, que entonces debería tener algún número de versión.

Sin embargo, esta es la característica solicitada:

Al principio del documento se aumenta el contador y al final el valor actual se almacena en el .auxarchivo ( \@auxout). Dado que este archivo se lee antes de \begin{document}actuar, ya existe algún valor de contador versionNumber, por lo que \stepcounterpuede actuar.


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

EditarOtro enfoque

Utilice otro archivo externo, que se actualiza mediante una versión real del software, por ejemplo, y \readinun comando de bajo nivel, que almacena la línea en una macro, por ejemplo \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.verscontiene por ejemplo esta línea

42 Gandalf 04/22/2015 16:03

ingrese la descripción de la imagen aquí

Respuesta2

Me doy cuenta de que llego un poco tarde, pero me estaba haciendo exactamente la misma pregunta y encontré un paquetito muy bonito:mversión.

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}

El número de versión "real" se establece estáticamente, pero el número de compilación se genera dinámicamente. Si desea "restablecer" el contador, el paquete crea un simpleversión.datarchivo en el directorio de compilación que se puede editar manualmente. Ahora vamos a poner el número de versión en un archivo separado. Para documentos grandes/complejos, pongo todas las configuraciones de mi documento en un archivo TeX comoDocSettings.texe importarlos en mi archivo principal.

MWE modificado:

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.

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

Respuesta3

Si necesita imprimir un valor diferente de cada ejecución de TeX, entonces debe hacer: 1) leer el valor del archivo, 2) agregar el valor, 3) guardar el valor en el archivo. Esto se puede hacer mediante herramientas TeX elementales (es decir, primitivas TeX más macros comunes) mediante este código:

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

información relacionada