通过命令行修剪整个文档的边距(TeX Live 2020 更新后)

通过命令行修剪整个文档的边距(TeX Live 2020 更新后)

我习惯.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>}

相关内容