我想找到文本区域西北角的准确位置。使用\layout
(参见笔记部分),似乎所需的偏移量current page.north west
是
xshift=1.0in+\hoffset+\oddsidemargin,
yshift=-1.0in-\voffset-\headsep,
使用showframe
包:(与 MWE 中一样)
下面的图片是文本区域的西北角,缩放到 6400%,我在这里放置了一个灰色+
和填充的圆圈。从视觉上看,这看起来非常接近正确的位置。然而,要到达这个位置,需要对
(-0.35pt,2.35pt)%% Required shift to obtain image below (see MWE)
从上述参数可以看出。
列出的相关问题参考inner sep
部分提到了和的问题\parindent
,这两个问题都已得到解决。(实际上这里不需要它们,但还是添加了它们)。
为什么需要进行这个额外的调整?
使用 showframe选项包装geometry
:
如果我不使用showframe
包,而是使用
\usepackage[showframe]{geometry}
所需的调整略有不同:
(-0.1pt,1.8pt)
得出的结果是:
参考:
笔记:
代码:
\documentclass{article}
\usepackage{showframe}
\usepackage{tikz}
\usepackage{layout}
\usepackage{geometry}
\newcommand*{\ShowNorthWestOfTextArea}{%
\begin{tikzpicture}[remember picture, overlay]
\coordinate (X) at ([
xshift=1.0in+\hoffset+\oddsidemargin-0.35pt,
yshift=-1.0in-\voffset-\headsep+2.35pt,
]current page.north west);
\draw [draw=red, fill=yellow, text=gray] (X) circle (1pt)
node [inner sep=0pt] {+};
\end{tikzpicture}%
}%
\begin{document}%\layout% <-- uncomment to obtain the layout parameters
\noindent\ShowNorthWestOfTextArea%
\end{document}
答案1
文本区域相对于页角的位置
图像的顶部\layout
通常看起来像下面的图像,但在您的情况下,虚线似乎与标题的底部重合,因为④(\topmargin
= -13pt)和⑤(\headheight
= 12pt)几乎抵消。
您可以读出文本左上角相对于页面左上角之间的水平/垂直距离是
水平距离 =
1in+\hoffset+\oddsidemargin
或1in+\hoffset+\evensidemargin
,
垂直距离 =1in+\voffset+\topmargin+\headheight+\headsep
(\oddsidemargin
适用于单面文档和双面文档的奇数页,以及\evensidemargin
双面文档的偶数页。)
文本区域相对于的位置current page.north west
对于 TikZ,文本区域左上角的坐标是 (wrt current page.north west
)
(1in+\oddsidemargin, -1in-2\voffset-\topmargin-\headheight-\headsep)
对于单面文档和双面文档的奇数页(\evensidemargin
双面文档的偶数页相同)。
笔记:我不知道为什么你需要添加
-2\voffset
y 坐标,但这似乎是一个错误。也许在纠正 时代码中的某个地方出现了符号错误\voffset
?然而,通常
\hoffset
和\voffset
都等于零,所以这并不重要。
这是具有正确参数的 MWE 版本:
\documentclass{article}
\usepackage{showframe}
\usepackage{tikz}
\usepackage{geometry}
\newcommand*{\ShowNorthWestOfTextArea}{%
\begin{tikzpicture}[remember picture, overlay]
\coordinate (X) at ([
xshift=1.0in+\oddsidemargin,
yshift=-1.0in-2\voffset-\topmargin-\headheight-\headsep,
]current page.north west);
\draw [draw=red, fill=yellow, text=gray] (X) circle (1pt)
node [inner sep=0pt] {+};
\end{tikzpicture}%
}%
\begin{document}
\noindent\ShowNorthWestOfTextArea%
\end{document}
注意showframe
绘制边框大约文本区域。
答案2
包裹tikzpage节点提供了一组有用的蒂克兹坐标为:
- 当前页面文本区域
- 当前页面边距区域
- 当前页眉区域
- 当前页脚区域
因此,如果tikzpage节点(current page text area.north west)
加载后,您可以使用环境内部获取“文本区域的西北角”
tikzpicture
。您需要使用remember picture,overlay
才能使其工作。
调整问题中的 MWE,我们可以使用:
\documentclass{article}
\usepackage{showframe}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usepackage{layout}
\usepackage{geometry}
\newcommand*{\ShowNorthWestOfTextArea}{%
\begin{tikzpicture}[remember picture, overlay]
\coordinate (X) at (current page text area.north west);
\draw [draw=red, fill=yellow, text=gray] (X) circle (1pt)
node [inner sep=0pt] {+};
\end{tikzpicture}%
}%
\begin{document}%\layout% <-- uncomment to obtain the layout parameters
\ShowNorthWestOfTextArea%
\end{document}
使用此代码,文本区域的西北角看起来像: