哪些 TeX 编辑器能够编译 .tex 文件的片段?

哪些 TeX 编辑器能够编译 .tex 文件的片段?

我的一个朋友问我是否TeXShop能够只编译.tex文件的片段。更一般地,人们可能会问哪些 TeX 编辑器能够只编译.tex文件的片段?这个问题:

更新

更确切地说,我正在寻找纯 TeX 编辑器解决方案,让用户选择.tex文件的一个区域并从当前.tex文件(及其类、包、个人宏,更一般地说是其前言)中只编译此区域。仅是这些编辑器的名称就很好了,如何完成则是锦上添花。

答案1

令人惊讶的是,TeXShop事实上,确实有这样的功能。问题是,像我这样的长期用户可能不知道这一点。

它可以在“编辑菜单”->“实验”下找到

此菜单将打开一个窗口,您可以在其中复制当前打开的文档的片段。当您按下窗口上的排版按钮时,它将在一个小的预览窗口中显示结果:

TeXShop 实验样本

答案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.texdocument

我测试了该QuickPreview > Selection选项。其他QuickPreview选项包括EnvironmentSubdocumentMaths group

相关内容