我的一个朋友问我是否TeXShop
能够只编译.tex
文件的片段。更一般地,人们可能会问哪些 TeX 编辑器能够只编译.tex
文件的片段?这个问题:
- 与...有关获取 TeX 的实时预览(在 Windows 上)-仅需一小段代码?但面向 Windows,
- 部分回答LaTeX 编辑器/IDE但:
- 它的答案可能并不完整,
- 使得这些信息不容易被找到。
更新
更确切地说,我正在寻找纯 TeX 编辑器解决方案,让用户选择.tex
文件的一个区域并从当前.tex
文件(及其类、包、个人宏,更一般地说是其前言)中只编译此区域。仅是这些编辑器的名称就很好了,如何完成则是锦上添花。
答案1
答案2
使用 Emacs 和 AUCTeX,只需突出显示要编译的文本部分,然后点击C-c C-r
(或M-x TeX-command-region
) 即可。
该命令试图对此保持“智能”,因此如果您这样做C-c C-r RET C-c C-r RET
(即在同一部分运行两次相同的命令),它将首先进行编译,然后打开结果 PDF 的查看器。(默认情况下称为_region_.pdf
)。
要选择区域,最简单的方法是将光标移动到所需区域的开始(或结束),点击C-SPC
(或M-x set-mark-command
)设置标记,然后将其移动到区域的结束(或开始)。然后点击C-c C-r RET
编译该选择。
请注意,这还会创建一个名为 的文件_region_.tex
。
考虑此文件(称为fulldoc.tex
):
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\lipsum[2]
% imagine trying to compile only this list (note you must do the whole environment)
\begin{itemize}
\item More lorem
\item More ipsum
\end{itemize}
% end of region being compiled
\lipsum[3]
\lipsum[4]
\end{document}
这将创建以下文件并pdflatex
在其上运行(在本例中):
\message{ !name(fulldoc.tex)}\documentclass{article}
\usepackage{lipsum}
\begin{document}
\message{ !name(fulldoc.tex) !offset(3) }
\begin{itemize}
\item More lorem
\item More ipsum
\end{itemize}
\message{ !name(fulldoc.tex) !offset(5) }
\end{document}
再次执行C-r RET
将打开一个查看器,_region_.pdf
当然,您也可以_region_.tex
从 shell 等编译文件。
注意:如果您标记一个新区域,它将再次执行相同的操作,但使用相同的_region_
基本文件名。
笔记作为乔达诺注释,开始于版本 11.89AUCTeX 现在可以编译\section
文件的单个部分(不一定是单个“ ”)。从手动的:
命令:
LaTeX-command-section
(
C-c C-z
) 向用户询问命令,并将其应用于当前部分(或部分、章节、小节、段落或子段落)。当前部分由LaTeX-command-section-level
可以使用LaTeX-command-section-change-level
(C-c M-z
) 放大/缩小的内容决定。给定的数字前缀 arg 将添加到 的当前值LaTeX-command-section-level
。默认情况下,LaTeX-command-section-level
使用当前文档的 进行初始化LaTeX-largest-level
。从主文件中提取标题和尾部后,将缓冲区内容写入区域文件。然后,该命令实际上在区域文件上运行。有关详细信息,请参阅TeX-command-region
。
本质上,AUCTeX 所做的与我上面的例子相同。优点是您不需要明确标记要编译的文本部分。
答案3
Kile 有这个功能。它被称为QuickPreview
。我以前从未使用过它,但我在一个最小的示例中测试了它,它似乎有效。
我用另一个问题的答案进行了测试:
\documentclass[tikz,border=10pt]{standalone}
\usepackage{circuitikz}
\standaloneenv{circuitikz}
\usetikzlibrary{fit}
\begin{document}
\tikzset{
pics/multimeter/.style={
code={
\tikzset{
multi meter/.cd,
#1,
}
\begin{scope}[]
\coordinate (\multimetername-o) at (0,0);
\foreach \i/\j/\k/\l in {A/o/south/A,V/o/north/V,TL/mA.west/east/HI,BL/mV.west/east/HI,TR/mA.east/west/LO,BR/mV.east/west/LO} \node (\multimetername-m\i) [multi meter/label, anchor=\k] at (\multimetername-\j) {\l};
\foreach \i in {TL.west,TR.east,BL.south,BR.south} \node [circle, fill, inner sep=1.25pt] at (\multimetername-m\i) {};
\node [draw, fit=(\multimetername-mTR) (\multimetername-mBL)] {};
\end{scope}
}
},
multi meter/.search also={/tikz,/circuitikz},
multi meter/.cd,
label/.style={font=\sffamily, align=center, transform shape, pic actions},
name/.store in=\multimetername,
name=multimeter,
}
\begin{circuitikz}[american, cute inductors]
\draw
(0,0) node[anchor = east] {C} coordinate (C)
(0,2) node[anchor = east] {B} coordinate (B)
(0,4) node[anchor = east] {A} coordinate (A)
pic [rotate=-90] at (3,0) {multimeter={name=M}}
(A) to [short] ++(2,0)
(B) to [short] ++(6,0)
(C) to [short] ++(2,0)
(1.5,0) to[short,*-] ++(0,1.2)
to[short] ++(1,0)
-| (M-mTL.west)
(M-mBR.south) to[short] ++(-1.25,0) coordinate (c) to [short,-*] (B -| c)
;
\end{circuitikz}
\end{document}
突出显示环境的内容document
(但不是环境本身或序言)并选择Build > QuickPreview > Selection
排版选择。
据我所知,其工作原理是 Kile 尝试通过查找包含\documentclass
序言开头的第一行和行来确定序言结束的位置来识别序言。它将序言连同选择一起\begin{document}
复制到临时目录中名为的文件中,并包装在环境中。然后,它会排版此文档并显示结果(如果成功)。preview.tex
document
我测试了该QuickPreview > Selection
选项。其他QuickPreview
选项包括Environment
、Subdocument
和Maths group
。