仅编译 .tex 文件中的一部分内容

仅编译 .tex 文件中的一部分内容

可能重复:
我怎能忽视一切除了指定的环境?

我正在寻找一个包或命令,比如说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包的解决方案。它并不完全符合您的要求,因为它要求您指定两个环境:dontcompilecompileonly

\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

相关内容