如何在 TeXstudio 中编译当前文档而不是根文档?

如何在 TeXstudio 中编译当前文档而不是根文档?

在选项->根文档中,TeXstudio 允许用户自动检测根文档或手动设置根文档。然后按 F5 将从该根文件构建和查看。这是一个非常好的功能。

但是,我希望能够构建和查看当前文件。这是大多数其他编辑器的工作方式,但我无法使用 TeXstudio 做到这一点。

答案1

这是一个开放的功能要求

作为一种解决方法,您可以将子文件的根目录设置为它们自己。例如,如果您有mysubfile.tex,则可以将以下条目添加到其顶部:

% !TeX root = mysubfile

答案2

假设您仅导入主文档中带有前言的子文档,\input\include这些单独的文件将无法自行编译。有两种可能的解决方案:

  1. 快速、一次性。创建主文件的副本并删除所有不需要的子文档(或注释掉那些包含行)。编译。大功告成!

  2. 如果你确实需要能够编译单独的子文档(文章集合是一种可能的情况),请查看独立包。它允许您编译主文档和单独的输入文件,就好像它们是单独的项目一样,带有它们的前言(无论您是否选择下面显示的选项)。只需将您想要的类(例如article)用于具有相应包的根文档即可。

在您的主文件中使用它(根据其文档,您越早包含该standalone包越好):

\documentclass{article} % Root document
\usepackage[subpreambles=true]{standalone}

最后一行是正确处理章节特定序言所必需的。然后,对于每个章节(或您用于文档各部分的任何划分),使用

\documentclass[crop=false]{standalone} % Sub-document
\usepackage[subpreambles=true]{standalone}

这将允许您编译主文档和子文档。

如果你不熟悉,请尝试以下示例这篇精彩的文章(在示例中,子文件的扩展名被假定为.tex,因此您可以创建它们作为示例,然后从文件中复制文本和序言以查看它是否有效)。

答案3

调整 faltfe 的解决方案:在 TeXstudio 中,如何仅编译子文件?

您可以使用以下宏来编译当前文档并将其显示在嵌入的 pdf 查看器中:

%SCRIPT

function quote(filename){
    return '"' + filename + '"';
}

var filename = app.getCurrentFileName();
var dir = filename.substring(0, filename.lastIndexOf("/"));
var pdflatexcmd = '../MikTex/texmfs/install/miktex/bin/x64/pdflatex.exe  -src -interaction=nonstopmode '
var proc = system(pdflatexcmd + quote(filename), dir);
proc.waitForFinished();

var pdfFilename = quote(filename.replace(/\.[^/.]+$/, ".pdf"));

app.runInternalCommand("txs:///view-pdf-internal" , "--embedded", pdfFilename);

您可以为此宏注册一个键盘快捷键,例如:Shift+ F1

您只需运行此宏即可编译和查看当前选定的文档。

(有关定义/运行宏的更多信息,请参阅:http://texstudio.sourceforge.net/manual/current/usermanual_en.html#SECTION33

相关内容