我有一篇类似文章的文档,其中包含一些要传递给班级的信息。我需要一半的班级只获取奇数部分,另一半获取偶数部分。是否有任何函数或宏允许我编译仅显示符合这些条件的选定部分的文件?
谢谢你!
答案1
这假设您的文本中没有明确的 TeX 条件。
\documentclass{article}
\usepackage{lipsum}
\newcommand\choice{}% for printing odd numbered sections
%\newcommand\choice{\unless}% for printing even numbered sections
\newcommand\startsection{%
\stepcounter{section}%
\choice\ifodd\value{section}%
\addtocounter{section}{-1}%
\section
}
\let\stopsection\fi
\begin{document}
\startsection{This is odd}
\lipsum[2]
\stopsection
\startsection{This is even}
\lipsum[2]
\stopsection
\startsection{This is odd}
\lipsum[2]
\stopsection
\startsection{This is even}
\lipsum[2]
\stopsection
\startsection{This is odd}
\lipsum[2]
\stopsection
\startsection{This is even}
\lipsum[2]
\stopsection
\end{document}
如果你切换注释字符,也就是说,你有
%\newcommand\choice{}% for printing odd numbered sections
\newcommand\choice{\unless}% for printing even numbered sections
输出将是
答案2
这是使用 的一种方法\nullfont
。然而,这很有挑战性,因为 -命令打印的数字\section
不遵循这一点。
可能还有其他东西无法通过这种方式隐藏。隐藏某些东西的最佳方法是使用以下软件包comment
并将其包装在环境中。既然你提到了练习,你可以看看exercisebank
管理模块化练习(mixnmatch)。
不管怎样,我\section
对命令进行了一些“修改”,但似乎有效:
\documentclass{article}
\usepackage{everypage}
\usepackage{ifthen}
\usepackage{lipsum}
\newif\ifprintodd%<- false by default
\let\oldSection\section
\def\hidesection{\nullfont\stepcounter{section}}
\newcommand\showsection[2][]{\normalfont\oldSection[#1]{#2}}
\renewcommand\section[2][]{%
% Check if current section is odd numbered
\ifodd\thesection\relax%
% Check if we should print it
\ifprintodd\showsection[#1]{#2}\else\hidesection\fi
\else%
% Current section is even. Check if we should print it
\ifprintodd\hidesection\else\showsection[#1]{#2}\fi
\fi
}
% Uncomment below to switch
% \printoddtrue
\begin{document}
\section{First}This is shown when printoddfalse is called.\lipsum[1]
\section{second}This is shown when printoddtrue is called\lipsum[2]
\end{document}