我真的很喜欢这段代码块为我制作的装饰:
\usepackage{eso-pic}
\makeatletter
\AddToShipoutPicture{%
\begingroup
\setlength{\@tempdima}{2mm}%
\setlength{\@tempdimb}{\paperwidth-\@tempdima-2cm}%
\setlength{\@tempdimc}{\paperheight-\@tempdima}%
\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimc}){%
\pgfornament[anchor=north west,width=2cm]{63}}
\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdima}){%
\pgfornament[anchor=south west,width=2cm,symmetry=h]{63}}
\put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdimc}){%
\pgfornament[anchor=north east,width=2cm,symmetry=v]{63}}
\put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdima}){%
\pgfornament[anchor=south east,width=2cm,symmetry=c]{63}}
\endgroup
}
\makeatother
它来自图案并使四个角都有您在链接的 PDF 中看到的漂亮装饰。
去年我自己用它处理了几份文档,结果和你在链接的 PDF 中看到的结果一样,但今年它似乎出问题了,没有任何有用的错误信息。现在不是四个角都有这些漂亮的装饰,而是只有左边两个角有装饰,排版过程每装饰一页都会停止,并出现以下错误信息:
Missing number, treated as zero.
<to be read again>
\relax
我认为自从我上次成功使用此代码以来,我一定升级了一个或多个软件包,这可能是它崩溃的原因,但我对错误消息感到困惑,不知道如何修复该问题。我已经确认(通过注释掉代码块)此代码确实是引发错误消息的原因,即使我可以继续使用“s”进行编译,PDF 输出不再装饰所有 4 个角,所以我想修复它。
对于如何解决这个问题,有任何的建议吗?
答案1
由于您正在对长度进行一些加法/减法运算,因此您需要加载calc
包裹:
\documentclass{article}
\usepackage[a6paper]{geometry}% just for the exmaple
\usepackage{pgfornament}
\usepackage{eso-pic}
\usepackage{calc}
\makeatletter
\AddToShipoutPicture{%
\begingroup
\setlength{\@tempdima}{2mm}%
\setlength{\@tempdimb}{\paperwidth-\@tempdima-2cm}%
\setlength{\@tempdimc}{\paperheight-\@tempdima}%
\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimc}){%
\pgfornament[anchor=north west,width=2cm]{63}}
\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdima}){%
\pgfornament[anchor=south west,width=2cm,symmetry=h]{63}}
\put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdimc}){%
\pgfornament[anchor=north east,width=2cm,symmetry=v]{63}}
\put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdima}){%
\pgfornament[anchor=south east,width=2cm,symmetry=c]{63}}
\endgroup
}
\makeatother
\begin{document}
Test
\end{document}
或者使用\dimexpr
:
\documentclass{article}
\usepackage[a6paper]{geometry}% just for the exmaple
\usepackage{pgfornament}
\usepackage{eso-pic}
\makeatletter
\AddToShipoutPicture{%
\begingroup
\setlength{\@tempdima}{2mm}%
\setlength{\@tempdimb}{\dimexpr\paperwidth-\@tempdima-2cm\relax}%
\setlength{\@tempdimc}{\dimexpr\paperheight-\@tempdima\relax}%
\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimc}){%
\pgfornament[anchor=north west,width=2cm]{63}}
\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdima}){%
\pgfornament[anchor=south west,width=2cm,symmetry=h]{63}}
\put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdimc}){%
\pgfornament[anchor=north east,width=2cm,symmetry=v]{63}}
\put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdima}){%
\pgfornament[anchor=south east,width=2cm,symmetry=c]{63}}
\endgroup
}
\makeatother
\begin{document}
Test
\end{document}
两种情况下的结果: