因此,我想要一个 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}