通过 \section、\subsection 等选项隐藏章节内容

通过 \section、\subsection 等选项隐藏章节内容

在我编辑文档时,经常会有一些很长的部分我暂时没有处理。我想在输出文档中隐藏这些部分,这样我就可以专注于相关部分。

\includeonly我知道这可以通过或comment环境(来自verbatim或包)来完成comment。问题是\includeonly它需要将每个部分移动到单独的文件中,我觉得这太麻烦了。使用comments环境更好,但我宁愿不需要插入\begin{comment}\end{comment}分隔数十甚至数百行代码。

我怎么要隐藏某个部分,只需在部分命令中添加一个选项,例如\section[hide]{My Witty Section Title}。这将隐藏所有内容,直到下一个\section命令。同样,\subsection[hide]{My Trite Subsection Title}将隐藏所有内容,直到下一个子部分。

解决方案设计中需要考虑的几点:

  • 我希望章节标题可见---只有内容是隐藏的。
  • 如果隐藏标签仍然可以被引用(类似于\includeonly)那就太好了。
  • 诸如章节引用和目录之类的内容应该仍然有效。

编辑:第一次尝试

我第一次尝试重新定义从包中\section引入环境,但命令不起作用。看来,我们需要一种不同于使用环境的方法来定义来自隐藏部分的引用。commentverbatim\endcommentcomment

\documentclass{article}

\usepackage{etoolbox}
\usepackage{verbatim}
\usepackage{lipsum}

\let\oldsection=\section%
\newcommand\atEndOfSection{(Default end of section)}%
\renewcommand{\section}[2][]{%
  \atEndOfSection%
  \oldsection{#2}%
  \ifstrequal{#1}{hide}%
      {% HIDE 
      % Set \atEndOfSection to end the comment.
      \renewcommand{\atEndOfSection}{\endcomment (End of hidden section)}
      \comment
      }{% DON'T HIDE 
      % Reset \atEndOfSection.
      \renewcommand{\atEndOfSection}{(End of non-hidden section)}
      }
}%

\begin{document}

\section{My Section (No Hide)}
\lipsum[1]

\section[hide]{My Section (Hide)}
\lipsum[2]

\section{My Section (No Hide)}
\lipsum[3]

\end{document}

输出:

在此处输入图片描述

相关内容