打印选定部分(奇数、偶数)

打印选定部分(奇数、偶数)

我有一篇类似文章的文档,其中包含一些要传递给班级的信息。我需要一半的班级只获取奇数部分,另一半获取偶数部分。是否有任何函数或宏允许我编译仅显示符合这些条件的选定部分的文件?

谢谢你!

答案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}

相关内容