Adicione o número da versão ao documento do arquivo

Adicione o número da versão ao documento do arquivo

Estou enlouquecendo em busca de uma solução. Essencialmente, preciso adicionar o número da versão do documento em algum lugar da página de título. O que eu quero fazer é ter um arquivo que version.texcontenha um número de compilação (como 23) e toda vez que pdffor gerado, o contador será lido do arquivo, aumentado e armazenado novamente nele. Desta forma o número do documento aumenta e posso acompanhar as diferentes versões. Então, como exemplo:

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

Eu olhei para o gitinfo2pacote, mas parece muito complicado. Qualquer ajuda é apreciada

Responder1

Como disse Ulrike Fischer: O contador seria incrementado a cada tempo de compilação, o que é basicamente inútil. A compilação funcionará mesmo para uma versão inalterada, que deverá ter algum número de versão.

No entanto, este é o recurso solicitado:

No início do documento o contador é aumentado e no final o valor atual é armazenado no .auxarquivo ( \@auxout). Como este arquivo é lido antes de \begin{document}agir, já existe algum valor de contador versionNumber, então \stepcounterpode agir.


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

EditarOutra abordagem

Use outro arquivo externo, que é atualizado por um software de versão verdadeira, por exemplo, e um \readincomando de baixo nível, que armazena a linha em uma macro, digamos \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.verscontém por exemplo esta linha

42 Gandalf 04/22/2015 16:03

insira a descrição da imagem aqui

Responder2

Percebo que estou um pouco atrasado, mas estava me perguntando exatamente a mesma coisa e encontrei um pequeno pacote bacana:versão.

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}

O número de versão "real" é definido estaticamente, mas o número da compilação é gerado dinamicamente. Se você quiser “zerar” o contador, o pacote cria um simplesversão.datarquivo no diretório de construção que pode ser editado manualmente. Agora, sobre como colocar o número da versão em um arquivo separado. Para documentos grandes/complexos, coloco todas as configurações do meu documento em um arquivo TeX, comoDocSettings.texe importe-os no meu arquivo 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]

Responder3

Se você precisar imprimir um valor diferente de cada execução do TeX, então você precisa fazer: 1) ler o valor do arquivo, 2) adicionar o valor, 3) salvar o valor no arquivo. Isso pode ser feito por ferramentas elementares do TeX (ou seja, primitivas do TeX mais macros comuns) por 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.

informação relacionada