带有 eso-pic 的破损 pgfornaments

带有 eso-pic 的破损 pgfornaments

我真的很喜欢这段代码块为我制作的装饰:

\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}

两种情况下的结果:

在此处输入图片描述

相关内容