我习惯.tex
用这个命令来编译我的文件:
pdflatex '\AtBeginDocument{\newlength\DX \DX=3cm \paperwidth=\dimexpr\paperwidth-\DX\relax \hoffset=\dimexpr\hoffset-.5\DX\relax \newlength\DY \DY=3cm \paperheight=\dimexpr\paperheight-\DY\relax \voffset=\dimexpr\voffset-.1\DY-.5\footskip\relax \RequirePackage{xcolor}} \nonstopmode\input{test.tex}'
我将在这里以一种更易读的方式写它:
pdflatex '\AtBeginDocument{\newlength\DX
\DX=3cm \paperwidth=\dimexpr\paperwidth-\DX\relax
\hoffset=\dimexpr\hoffset-.5\DX\relax
\newlength\DY \DY=3cm
\paperheight=\dimexpr\paperheight-\DY\relax
\voffset=\dimexpr\voffset-.1\DY-.5\footskip\relax \RequirePackage{xcolor}}
\nonstopmode\input{test.tex}'
但是在 TeX Live 2020 10 月版本的最新更新之后,它不再起作用。
这是 MWE。我的文件包含:
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{jheppub}
\usepackage{blindtext}
\begin{document}
\blindtext
\blindtext
\blindtext\footnote{\blindtext}
\end{document}
我想要一个如下的输出:
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{blindtext}
\usepackage{jheppub}
\usepackage[pass]{geometry}
\newlength\DX \DX=3cm
\paperwidth=\dimexpr\paperwidth-\DX\relax
\hoffset=\dimexpr\hoffset-.5\DX\relax
\newlength\DY \DY=3cm
\paperheight=\dimexpr\paperheight-\DY\relax
\voffset=\dimexpr\voffset-.1\DY-.5\footskip\relax
\begin{document}
\blindtext
\blindtext
\blindtext\footnote{\blindtext}
\end{document}
但我不想更改我的.tex
文件。我需要通过命令行进行操作。
现在,在 TeX Live 2020 更新之后,我得到:
修剪边距错误。我认为问题是由文件中的某些内容引起的jheppub.sty
。
您可以jheppub.sty
在此处找到该文件:https://jhep.sissa.it/jhep/help/JHEP/TeXclass/DOCS/jheppub.sty
答案1
使用来自用户的新 LaTeX\AtBeginDocument
命令(“顶级”)时,将在所有其他命令之后最后执行\AtBeginDocument
。
这意味着如果你更改那里的页面布局,你有责任设置全部相关值。graphicx、color 或 geometry 中的任何代码都无法帮你完成这些。
您缺少设置 pdf 页面值:
\pdfpageheight=\paperheight \pdfpagewidth=\paperwidth
另一种方法是使用较早的钩子:
\AddToHook{begindocument/before}{<your code>}