布局包使用 tikz/fontspec/xelatex 将所有长度读取为零?

布局包使用 tikz/fontspec/xelatex 将所有长度读取为零?

在得到建议后使用layouts为了对长度进行可视化调试,我想出了以下示例,并用它来进行编译xelatex test.tex

\documentclass[12pt,a4paper]{article}

\usepackage[pass]{geometry}
\usepackage{tikz,enumitem}

\usepackage{fix-cm}

\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Junicode}

\usepackage{layouts}

\begin{document}

\pdfpagewidth=148mm \pdfpageheight=210mm % for PDF output
\paperwidth=148mm \paperheight=210mm     % for TikZ


\begin{tikzpicture}[overlay,remember picture,inner sep=0pt,yscale=-1,outer sep=0pt,anchor=north west]

  \begin{scope}[shift={(-\oddsidemargin,-\topmargin-\headheight-\headsep-\marginparsep)}]% layer1

%   \path[anchor=north west] (0,0) node[below right] (dbg) {% this goes to (0,0) but after margin
  \path[anchor=north west] (current page.north west) node[below right] (dbg) {%
      \begin{minipage}{\paperwidth}%
        \setlayoutscale{1.0} %
        \drawdimensionstrue %
        \pagedesign %
      \end{minipage}
  }%path
  ;

  \end{scope}

\end{tikzpicture}
\end{document}

 

这就是我得到的输出(图像的上/左/右边缘与 pdf 页面的相应边缘相关):

test.pdf 输出

 

值得注意的是,所有读取的长度都报告为零;否则我希望可以强制将layouts页面图缩放为 1,并使用 tikz 节点覆盖在当前页面上 - 但这显然失败了。

我是否可以layouts按照预期将页面图表叠加到页面上?如果可以,如何实现?

非常感谢您的任何回答,
干杯!

答案1

我猜这是 的一个错误layouts。该软件包的当前维护者是 Will Robertson。我认为你应该发送一个错误报告。

目前,使用以下补丁etoolbox似乎有效:

\documentclass[12pt,a4paper]{article}
\usepackage[pass]{geometry}
\usepackage{layouts}
\usepackage{etoolbox}
\patchcmd{\drawpage}{\ifdrawparameters}{\iftrue}%
  {\typeout{^^J*******\string\drawpage fixed*******^^J}}%
  {\typeout{^^J*******\string\drawpage not fixed*******^^J}}

\begin{document}
\pagedesign
\end{document}

当然你必须自己设置 tikz 环境 ;-)

相关内容