我选择width=18cm, height=26cm
geometry.sty。
如果我将原点设置在page center
并将节点定位在 处,(-0.5\textwidth, 0.5\textheight)
则会在 tikzpicture 上出现间隙。
如何消除这个差距。
\documentclass[]{scrartcl}
\usepackage[showframe=true, width=18cm, height=26cm]{geometry}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc, matrix}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[
shift={(current page.center)},
overlay,remember picture,
nodes={inner sep=0pt,outer sep=0pt}
]
\node[
anchor=north west,
draw, red,
minimum width=1.0\textwidth,text width=1.0\textwidth-2mm,
minimum height=6cm,text depth=6cm-4mm,
align=left,
] at (-0.5\textwidth, 0.5\textheight) (Textbox) {ABC};
% Help
\node[blue] at (0,0) {x};
\draw[blue] (0,0) -- (0,0.5\textheight);
\end{tikzpicture}
\end{document}
答案1
解释
您通过纸张尺寸 ( ) 移动 tikz 坐标shift={(current page.center)}
,但将节点相对于文本区域尺寸放置 ( at (-0.5\textwidth, 0.5\textheight)
)。
- 由于纸张尺寸和文本区域尺寸之间的左边距和右边距相同(在您的示例中),因此节点
Textbox
相对于纸张和文本区域都水平居中。 - 由于两个尺寸之间的上下边距不同,节点
Textbox
相对于文本区域并不垂直居中。
解决方案
软件包tikzpagenodes
提供了具有文本区域、边距区域以及页眉和页脚区域大小的额外节点。新节点current page text area
是您的帮助:
\documentclass[]{scrartcl}
\usepackage[showframe=true, width=18cm, height=26cm]{geometry}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc, matrix}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[
% replace node "current page"
shift={(current page text area.center)},
overlay,remember picture,
nodes={inner sep=0pt,outer sep=0pt}
]
\node[
anchor=north west,
draw, red,
minimum width=1.0\textwidth,text width=1.0\textwidth-2mm,
minimum height=6cm,text depth=6cm-4mm,
align=left,
] at (-0.5\textwidth, 0.5\textheight) (Textbox) {ABC};
% Help
\node[blue] at (0,0) {x};
\draw[blue] (0,0) -- (0,0.5\textheight);
\end{tikzpicture}
\end{document}