可能重复:
我怎能忽视一切除了指定的环境?
我正在寻找一个包或命令,比如说compileonly
,可以执行以下任务:
对于.tex
以下文件,
\begin{document}
This is A.
\begin{compileonly}
This is B
\end{compileonly}
This is C
\end{document}
结果将是This is B
。
这样的事情存在吗?
感谢大家的回复。最后,最好的解决方案是使用xcomment
包并定义一个新环境,并在其中\compileconly
使用\begin{compileonly}
和\end{compileonly}
\begin{xcomment}{compileonly}
\end{xcomment}
答案1
看看这个:我怎样才能忽略除指定环境之外的所有内容? (我不知道如何将这个问题标记为可能的重复;此外,我希望 OP 确认这一点。)
答案2
\begin{document}
\iffalse
This is A.
\else
This is B
\fi
\iffalse
This is C
\else
% nothing in this part
\fi
\end{document}
或者
\begin{document}
\iffalse
This is A.
\fi
This is B
\iffalse
This is C
\fi
\end{document}
答案3
这是使用该comment
包的解决方案。它并不完全符合您的要求,因为它要求您指定两个环境:dontcompile
和compileonly
\documentclass{article}
\usepackage{comment}
\excludecomment{dontcompile}
\includecomment{compileonly}
\begin{document}
\begin{dontcompile}
This is A.
\end{dontcompile}
\begin{compileonly}
This is B
\end{compileonly}
% will always be compiled as it's not within dontcompile or compileonly
This is C
\end{document}
和可以来回切换\includecomment
。\excludecomment
这种方法的替代方法是将您的文档分成多个文件,然后\include
按照评论中提到的和这篇文章中描述的那样:
以及其中的链接。
答案4
实现此目的的最简单方法是指定一个从 开始\begin{document}
并结束于 的注释环境\begin{compileonly}
。不幸的是,据我所知,没有一个 LaTeX 注释包允许您指定结束标记。
在 ConTeXt 中,你可以使用buffers
它轻松实现所需的结果。例如:
\def\starttext
{\dostartbuffer[ignore][starttext][startcompileonly]}
\def\startcompileonly{\ctxcommand{starttext()}}
\def\stopcomileonly {\ctxcommand{stoptext()}}
使用此功能后,以下测试文件可按预期工作。
\starttext
Text to be ignore
\iffalse
\undefined
\startcompileonly
Only compile this
\stopcomileonly
Text to be ignore
\iffalse
\undefined
\stoptext