在选项->根文档中,TeXstudio 允许用户自动检测根文档或手动设置根文档。然后按 F5 将从该根文件构建和查看。这是一个非常好的功能。
但是,我希望能够构建和查看当前文件。这是大多数其他编辑器的工作方式,但我无法使用 TeXstudio 做到这一点。
答案1
这是一个开放的功能要求。
作为一种解决方法,您可以将子文件的根目录设置为它们自己。例如,如果您有mysubfile.tex
,则可以将以下条目添加到其顶部:
% !TeX root = mysubfile
答案2
假设您仅导入主文档中带有前言的子文档,\input
则\include
这些单独的文件将无法自行编译。有两种可能的解决方案:
快速、一次性。创建主文件的副本并删除所有不需要的子文档(或注释掉那些包含行)。编译。大功告成!
如果你确实需要能够编译单独的子文档(文章集合是一种可能的情况),请查看独立包。它允许您编译主文档和单独的输入文件,就好像它们是单独的项目一样,带有它们的前言(无论您是否选择下面显示的选项)。只需将您想要的类(例如
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)