如何处理文本但不打印它?

如何处理文本但不打印它?

例如,我有以下文档

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

相关内容