曾是:文档以尺寸作为文本开始
pgfgantt
我在子目录中使用文件,该文件使用standalone
subpreambles 功能包含。但是,维度的文本值不知何故被插入到我的文档的开头,导致文档无法编译
main.tex
:
\documentclass{report}
\usepackage[subpreambles=true]{standalone}
\begin{document}
Before
\input{main/gantt.tex}
\end{document}
main/gantt.tex
:
\documentclass{standalone}
\usepackage{pgfgantt}
\begin{document}
\begin{ganttchart}[
vgrid={*1{dotted}},
x unit=4mm,
y unit chart=8mm,
y unit title=4mm,
time slot format=isodate-yearmonth,
time slot unit=month,
title height=1
]{2020-06}{2022-12}
\gantttitlecalendar{year}
\end{ganttchart}
\end{document}
建设成果main.tex
:
l.3 \gtt@chartextrasize
{0}{0.4pt}
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
Overleaf 的预览:
为什么00.4pt
输出中会出现?它是从哪里来的?
编辑:正如评论中指出的那样,这无法编译。
如果我添加\usepackage{pgfgantt}
到main.tex
,那么错误和维度就会消失。
为什么这是必要的?
答案1
正如评论中指出的那样,这似乎是 中的一个错误standalone
。该类文档提及(第 23 页):
使用钩子在序言末尾加载包
\AtBeginDocument
。
手册的这部分是关于sort
选项的,但有关加载包的注释也适用于subpreambles
不带 的选项sort
。
这可以在包代码中看到(在文件的中间附近):
\AtBeginDocument{%
\let\subpreamble\@gobble
\let\endsubpreamble\relax
\let\standalonepreambles\relax
\let\endstandalonepreambles\relax
\ifsa@sortsubpreambles
\let\sa@orig@usepackage\usepackage
\let\usepackage\sa@usepackagewithoutoptions
\fi
\InputIfFileExists{\jobname.sta}{}{}%
\ifsa@sortsubpreambles
\let\usepackage\sa@orig@usepackage
\fi
\immediate\openout\sa@out=\jobname.sta\relax
\immediate\write\sa@out{\string\standalonepreambles}%
}
然而,\AtBeginDocument
被执行后文件.aux
被读取(例如aux文件什么时候被读写?)。要及时执行代码,您可以使用包\AtEndPreamble
中的代码etoolbox
。从手动的(第 4 页):
\AtEndPreamble{<code>}
此钩子与 不同之处在于\AtBeginDocument
,它<code>
是在前导码末尾执行的,在aux
读取主文件(如上一次 LaTeX 传递中所写)之前以及在任何\AtBeginDocument
代码之前执行的。
standalone.sty
您可以通过复制到与您的文档相同的目录、添加到\RequirePackage{etoolbox}
并将提到standalone.sty
的 更改为 来检查这是否确实可以用于解决问题。\AtBeginDocument
\AtEndPreamble
standalone
将此(或等效修复)添加到. 1将会很有用
1我正在考虑添加一个问题https://bitbucket.org/martin_scharrer/standalone/issues但 Bitbucket 问题跟踪器目前是只读的。