在LaTeX文档标题中添加版本号

19

我的LaTeX文档的标题部分通常是这样的:

\title{Title}
\author{Me}
%\date{}      %// Today's date will appear when this is commented out.

\begin{document}
\maketitle

我真的很想在标题部分增加另一行来显示版本号:

\title{Title}
\author{Me}
\version{v1.2}
%\date{}      %// Today's date will appear when this is commented out.

\begin{document}
\maketitle

命令名不一定要叫做version,但是我应该如何在日期(作者之后)之后显示版本号呢?我可以手动设置版本号。

所以:

标题

4/13/2010

v1.2


1
你正在使用哪个版本控制系统(VCS)? - Joel J. Adamson
9个回答

20

我想要做的最简单的方法就是简单地使用:

\title{Title}
\author{Me}
\date{\today\\v1.2}

\begin{document}
\maketitle

1
这样在 \ 后面省略空格是否规范?我一直用 "\ " 来换行... - lindhe

14

我的回答可能对原来的线程来说有点晚了,但是Latex有一个非常有趣的包叫做vrsion(没有'e'), 它是标准发行版的一部分。它可以给.dvi文件编号,也就是每次运行Latex时增加编号。

个人而言,我使用这个包作为Git中缺少友好文档版本号的简单解决方法。虽然不是理想的方案,但有时我会有多份文档副本,这有助于避免一些混淆。


1
谢谢Max。这是一个很好的选择。我真的很高兴你发布了你的答案。不幸的是,它似乎并没有实际改变生成的文件名(正如我认为你的帖子所建议的那样),但它用一个很棒的工具回答了我的原始问题! - physicsmichael
实际上,我使用了这个软件包并进行了更多的搜索,发现了这个很棒的资源:http://www.tug.org/pracjourn/2007-3/scharrer/scharrer.pdf。它详细描述了如何在使用Subversion进行版本控制时,在LaTeX文档中添加页脚,例如“Rev: 185_______Page 1_____2006-11-10 09:54”。再次感谢。 - physicsmichael
嗨vgm64,感谢您的评论。文件名不会更改。您可以使用\version命令将版本号添加到文档中(例如在页脚、页眉等位置)。vrsion会在您的文件夹中创建一个文件(.vrs),通过重建文档来维护版本号。请查看vrsion手册;它比我能解释得更好。 - Max
似乎使用hyperref包和version一起编写的tex文件无法编译。你有什么解决方法吗? - lmsasu
使用外部程序如git与使用版本控制Latex包(例如在此处列出的http://texcatalogue.ctan.org/bytopic.html#classes)相比,有哪些优势? - skan
版本似乎不再存在/不再是标准分发的一部分。 - Buochserhorn

6
对于许多版本控制系统,checkin和checkout程序将文档中的某些字符串扩展为版本控制系统拥有的关于系统的元数据,包括版本号。如果在Tex定义的正文中包含这些字符串,则可以在文档中使用它们。很难在不知道您使用的版本控制系统的情况下说更多,但CTAN有vc bundle,而rcs.sty非常适合那些仍然使用不分布式甚至不并发VC的人。一旦获得了这些字符串(哦,我看到您说手动输入也可以),则可以使用以下方式排版:\title{Title\\\normalsize Version \versionnumber}。如果您真的想在两者之间加上作者,那么就不能以通常的方式同时使用\title和\author-您应该在\title命令中另起一行写上您的名字。

回答不错,但我认为你指的是 vc 包,而不是 cv 包(链接没问题) - Matthew Leingang
@Matthew:没错,是打错了。不过至少链接是正确的,所以应该不会太让人困惑。 - Charles Stewart

4
如果您将文档控制在git仓库中,则可以使用gitinfo包来实现此目的。如果正确配置(需要向git系统添加后置钩子),则可以简单地使用\gitVtag调用版本号(体现在git标签中)或例如\gitAbbrevHash获取存储库当前提交的缩写哈希值。

这是第一个合理的答案。 - varantir

3

简单的手工方法:

  1. 创建一个名为(比如)version.tex的文件:

    \providecommand{\versionnumber}{3.0.1}

  2. 在需要使用它的地方:

    \input{version}
    \title{标题\\\normalsize 版本 \versionnumber}

这将为您在项目或多个项目中的单个共同位置手动更新版本。


2
如果你只想在标题页中显示版本号,那么你只需要使用以下方式进行修改。
    \begin{titlepage}
    ...
    Version 1.x
    ...
    \end{titlepage}

在使用命令\maketitle后,需要注意以下几点:

如果您需要在文档中多次调用它,请定义一个变量,这样更加方便。

\def\Version#1{\def\version{#1}}

你可以通过使用\Version{}来定义版本号,然后通过\version进行调用。


1
为什么不直接使用\def\version{bleepbloop}呢? - Sean Allred

1
为了提供类似于\author\version命令,您可以这样做:
\let\theversion=\relax
\providecommand{\version}[1]{\renewcommand{\theversion}{#1}}

如果您没有使用titlepage环境,可以重新定义\maketitle本身。查看article.cls(或任何您正在使用的类文件),复制并粘贴,并在所需位置插入\theversion。如果您想在放入标题之前检查版本号,请执行以下操作:

\def\maketitle{%
% ... stuff copied from original class file...
\ifx\theversion\relax
% do nothing if there is no version defined
\else\bfseries\theversion% set the version
\fi

如果您不需要在标题中使用它,您可以将其作为日期的脚注添加(这两个属性都与资源的新鲜度有关,因此将它们放在一起是有意义的)。

\title{My article}
\version{v1.2}
\date{\today\thanks{\theversion}}

1

看看 rcsinforcs 这两个包。它们包括从文档中提取 RCS 标签数据的关键字,因此如果您使用 CVS,这将起作用。我在《LaTeX Companion》第837页找到了这个。与您选择的版本控制系统兼容的工具可能已经被编写出来了。


0

我在文档开头使用vhistory包来创建变更日志表格。

\subject{Institute for nice formatted docs}
\title{My important document}
\subtitle{\vhCurrentVersion, \vhCurrentDate}
\author{Me}
\date{} % Activate to display a given date or no date (if empty)
\begin{document}
    \maketitle
    \clearpage
   \begin{versionhistory}
      \vhEntry{v0.1}{17.05.2019}{Me}{First release}
      \vhEntry{v0.2}{12.08.2019}{Someone}{Rewrite of chapter 2 ...}
      \vhEntry{v0.3}{04.03.2021}{Another editor}{Change after feedback of ...}
   \end{versionhistory}
   \tableofcontents

   [...]
\end{document}

使用以下命令,您可以获取任何位置的当前版本和当前日期,这些信息可以用于标题部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接