在我编辑文档时,经常会有一些很长的部分我暂时没有处理。我想在输出文档中隐藏这些部分,这样我就可以专注于相关部分。
\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
引入环境,但命令不起作用。看来,我们需要一种不同于使用环境的方法来定义来自隐藏部分的引用。comment
verbatim
\endcomment
comment
\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}