我正在寻找一种方法来只编译给定命令(或环境)中的内容。我正在攻读博士学位,这样,我就可以拥有一份完整的文档,其中有一些写得不好的部分,供我自己使用,还有一个版本,只包含正确的部分,供我的导师使用。
一开始,我
\newcommand{\blank}[1]{}
但具体说明什么是可以的,而不是相反,会更加实际。
我有两个想法。
第一个是:
\documentclass{article}
\long\def\blank#1\endblank{}
\long\def\keep#1{\endblank#1\blank}
\begin{document}
\blank
XXX
\keep{AAA}
XXX
\endblank
\end{document}
但是 LaTex 似乎\keep
在寻找时不会扩展\endblank
,最终一切都被避免,并且没有什么可打印的。
我的第二个想法是:
\documentclass{article}
\long\def\blank#1\keep{\next}
\long\def\next#1{
\def\foo{#1}
\ifx\foo\empty\else
#1\blank
\fi
}
\begin{document}
\blank
XXX
\keep{AAA}
XXX
\keep{}
\end{document}
这个似乎有效,但是因为\keep
它应该处理相当大的文本块,所以我担心我做错了什么。
我的问题是:
有没有办法让第一个想法发挥作用并让 LaTeX 扩展一些命令来寻找分隔符?
第二种解决方案是否“稳定”并且适合在大文件中使用?
有没有更好/更合适的方法来做到这一点,或者我是否需要进行一些外部预处理?
附加问题:有没有一种简单的方法可以使第二个想法在环境中发挥作用
\begin{keep}
?
写完这篇文章后,我注意到我可能应该把这个问题分成两部分,很抱歉...请告诉我是否应该这样做!