例如,我有以下文档
\documentclass[a4paper,10pt]{article}
\usepackage{vhistory}
\usepackage{ifthen}
\newboolean{IncludeVersionHistory}
\setboolean{IncludeVersionHistory}{false}
\begin{document}
\vhCurrentVersion
\ifthenelse{\boolean{IncludeVersionHistory}}{
\begin{versionhistory}
\vhEntry{0.1}{08.05.2015}{Author}{First draft}
\end{versionhistory}
}{}
\end{document}
如果我将变量设置IncludeVersionHistory
为 true,则一切都会按预期工作并\vhCurrentVersion
打印 0.1。但现在我不希望版本历史记录包含在最终的 pdf 中,但仍使用命令获取最新版本。如果我将其设置IncludeVersionHistory
为 false,pdf 只包含 N/A(因为 if 子句未编译)。
一种解决方法是编译启用了版本历史记录的文档,以便生成辅助数据,然后在没有版本历史记录的情况下再次编译它。我知道这并不费力,但我仍然想知道是否有一种机制不需要在编译之间进行手动更改。
答案1
您可以在盒子寄存器中进行处理,以便写入辅助数据,然后仅根据您的标志使用该盒子:
\documentclass[a4paper,10pt]{article}
\usepackage{vhistory}
\usepackage{ifthen}
\newbox\vhbox
\newboolean{IncludeVersionHistory}
\setboolean{IncludeVersionHistory}{true}
\begin{document}
\vhCurrentVersion
\setbox\vhbox\vbox{%
\begin{versionhistory}
\vhEntry{0.1}{08.05.2015}{Author}{First draft}
\end{versionhistory}
\unskip\unpenalty\unpenalty}
\ifthenelse{\boolean{IncludeVersionHistory}}{
\unvbox\vhbox
}{
}
\end{document}