我有这个例子,我想用在背景中从一角到页面的对角画一条线 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 纸,但paperheight
和paperwidth
设置为 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}
编译后结果为: