TeXworks:使用 \includeonly 仅编译当前文档

TeXworks:使用 \includeonly 仅编译当前文档

我有一个包含多个部分的大型文档:

main.tex

\documentclass{article}
\begin{document}
\include{part1}
\end{document}

part1.tex

% !TEX root = main.tex
Hello World!

这样,我就可以用part1.texopen 来编译 PDF,而且我可以只编译其中的一部分(\includeonly{part1})。

有没有办法只编译当前文档,即\includeonly{currently opened file}在编译前插入?

我的第一个想法是使用 LuaTeX 插入一个includeonly依赖于命令行参数(使用 Lua 变量arg),但我仍然没有找到附加命令行参数的方法。

答案1

这不是我想要的,但对我来说效果很好。它使用 Lua 确定最后更改的文件(通常是我当前正在编辑的文件)并写入\includeonly{file}前言。

includeonlylastmodified.lua

require "lfs"

function mtimesort(a,b)
   return lfs.attributes(a..'.tex',"modification") 

main.tex:

\documentclass{article}

\directlua{
   files = {'part1','part2'}
   dofile('includeonlylastmodified.lua')
}

\begin{document}
\include{part1}
\include{part2}
\end{document}

相关内容