![Agregar número de versión al documento desde el archivo](https://rvso.com/image/309880/Agregar%20n%C3%BAmero%20de%20versi%C3%B3n%20al%20documento%20desde%20el%20archivo.png)
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.tex
contenga un número de compilación (como 23) y cada vez que pdf
se 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 gitinfo2
paquete 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 .aux
archivo ( \@auxout
). Dado que este archivo se lee antes de \begin{document}
actuar, ya existe algún valor de contador versionNumber
, por lo que \stepcounter
puede 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 \readin
un 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.vers
contiene por ejemplo esta línea
42 Gandalf 04/22/2015 16:03
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}
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.