在 LaTeX 中制作一个文档的两个版本?

在 LaTeX 中制作一个文档的两个版本?

因此,我想要一个 LaTeX 文档的两个版本,其中一个版本包含附加信息 - 例如通过声明:

\section(important){Formula}
importantFormulaXYZ
\subsection(notimportant){additional Info}
some information about why this formula is important

然后,我希望能够在文档的开头设置一个变量,true或者false其中 true 打印所有章节和小节,而 false 仅打印我标记为重要的章节。

我真的不知道这样的事情是怎么发生的,这样我就可以轻松地在获取文档之间切换

Formula
importantFormulaXYZ

和文件

Formula
importantFormulaXYZ
additional Info
some information about why this formula is important

如果有人能帮助我,那就太好了:) 我发现一些 examsheet 包似乎可以做类似的事情,但它的功能远远超出了我的需要,所以我希望有一种更简单的方法来做到这一点:)

附录

我希望能够直接在小节中设置何时打印的信息(例如在示例中为“重要”和“不重要”),而不是在文档开头写着“打印第 1,2,3,7,8 节等”,因为我认为节越多,就越令人困惑,也更难管理更改节的状态等...

答案1

据我所知,您的问题似乎是关于界面的。理想情况下,您希望标记应在章节级别包含的内容。不幸的是,这在 LaTeX 中实际上是不可能的,因为章节或小节等的结尾没有明确标明 - 这意味着 LaTeX 根本不会跟踪章节的结束时间,除非您告诉它这样做(例如通过将它们转换为用户界面级别的环境,这无论如何都不是一个好主意)。

完成您想要的操作的通常方法是简单地声明一个新的 switch,\newif\ifonlyimportant然后将附加部分包装在该条件中:

\section{Formula}
importantFormulaXYZ

\ifonlyimportant
  \subsection{additional Info}
  some information about why this formula is important
\fi

在文档的开头,您可以调用\onlyimportanttrue是否应该省略附加部分,\onlyimportantfalse否则。

我认为从界面的角度来看,通过环境执行此操作更方便(即使差异很小)。通常的方法是使用包comment

\documentclass{article}
\usepackage{comment}

%\includecomment{comment}

\begin{document}
\section{Formula}
importantFormulaXYZ

\begin{comment}
  \subsection{additional Info}
  some information about why this formula is important
\end{comment}
\end{document}

如果您想要独立于包,您可以使用该机制的以下轻量级版本。

\documentclass{article}
\usepackage{environ}

\makeatletter
\newif\if@nlyimportant
\newtoks\@dditionalinf@
\NewEnviron{additionalinfo}{%
  \global\@dditionalinf@=\expandafter{\BODY}
  \if@nlyimportant\else\the\@dditionalinf@\@dditionalinf@{}\fi}
\let\hideadditional\@nlyimportanttrue
\let\printadditional\@nlyimportantfalse
\makeatother

\hideadditional
%\printadditional

\begin{document}
\section{Formula}
importantFormulaXYZ

\begin{additionalinfo}
  \subsection{additional Info}
  some information about why this formula is important
\end{additionalinfo}
\end{document}

相关内容