带有 metapost 的页面左下角到右上角的线

带有 metapost 的页面左下角到右上角的线

我有这个例子,我想用在背景中从一角到页面的对角画一条线 metapost,问题是这条线没有到达两端,我不知道缺少了什么

% lualatex
\documentclass{article}
\usepackage{luamplib}

\AddToHook{shipout/background}
{%
\put(0,-\paperheight){%
\begin{mplibcode}
beginfig(1);
 draw origin -- (\the\paperwidth,\the\paperheight);
endfig;
\end{mplibcode}
}
}

\begin{document}

text

\end{document}

答案1

如果仔细查看输出,您可能会发现 a4(210 毫米 x 297 毫米)和 letter(8.5 英寸 x 11 英寸)不匹配。您的 PDF 似乎有 a4 纸,但paperheightpaperwidth设置为 letter 纸。

a4paper如果我明确设置并添加一个神奇的 2pt 左移,您的示例就可以正常工作。

% lualatex
\documentclass[a4paper]{article}
\usepackage{luamplib}

\AddToHook{shipout/background}
{%
\put(-2,-\paperheight){
\begin{mplibcode}
beginfig(1);
 drawdblarrow (origin --  (\the\paperwidth,\the\paperheight));
endfig;
\end{mplibcode}
}
}

\begin{document}

text

\end{document}

我添加箭头只是为了显示线的末端。

在此处输入图片描述

但实际的解决方案是添加geometry包。这样做的一个有用的功能是规范化 PDF 纸张大小,使其与 LaTeX 纸张大小相匹配。令人惊讶的是,标准类没有这样做!

但如果你只添加\usepackage{geometry}示例就会按预期工作:

% lualatex
\documentclass{article}
\usepackage{geometry}
\usepackage{luamplib}

\AddToHook{shipout/background}
{%
\put(0,-\paperheight){%
\begin{mplibcode}
beginfig(1);
 draw origin -- (\the\paperwidth,\the\paperheight);
endfig;
\end{mplibcode}
}
}

\begin{document}

text

\end{document}

编译后结果为:

在此处输入图片描述

相关内容