可能重复:
TikZ 边框不应该显示出来(重叠的圆圈)
使用绝对定位我可以制作一个漂亮的填充网格:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\backgroundfill}[5]{
\begin{tikzpicture}[remember picture, overlay]
\node (rect) at (current page.north west)
[shift={(#3/2 + #1, -#4/2 - #2)},
minimum width =#3,
minimum height=#4,
fill=#5] {};
\end{tikzpicture}
}
\thispagestyle{empty}
\begin{document}
\newlength{\LX}
\setlength{\LX}{.5\paperwidth}
\backgroundfill{0cm}{0cm}{\LX}{\LX}{black}
\backgroundfill{\LX}{0cm}{\LX}{\LX}{blue}
\backgroundfill{0cm}{\LX}{\LX}{\LX}{blue}
\backgroundfill{\LX}{\LX}{\LX}{\LX}{black}
\end{document}
然而,当我放大图片时,我有时会注意到矩形之间的白色背景。它很小但在屏幕上很明显,但由于某种原因,它没有显示在上传的 PDF 上(上面的光栅化图片)。为了说服自己这是真的,我截取了一张截图,并放大了边缘效果清晰可见的边框。
有没有什么办法可以避免 TikZ 中矩形之间的空白?
答案1
首先,我会避免不必要的空格导致的累积舍入误差。pgf
第一个确定了当前的位置,\backgroundfill
因为选项remember picture
。下一个\backgroundfill
由于行尾的空格而向右移动。该.aux
文件包含位置(数字是水平和垂直位置,单位为sp
):
\pgfsyspdfmark {pgfid1}{9782558}{43234099}
\pgfsyspdfmark {pgfid2}{10437917}{43234099}
\pgfsyspdfmark {pgfid3}{11093276}{43234099}
\pgfsyspdfmark {pgfid4}{11748635}{43234099}
不包含不必要空格的代码:
\documentclass[a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\backgroundfill}[5]{%
\begin{tikzpicture}[remember picture, overlay]
\node (rect) at (current page.north west)
[shift={(#3/2 + #1, -#4/2 - #2)},
minimum width =#3,
minimum height=#4,
fill=#5] {};
\end{tikzpicture}%
}
\thispagestyle{empty}
\begin{document}
\newlength{\LX}
\setlength{\LX}{.5\paperwidth}
\backgroundfill{0cm}{0cm}{\LX}{\LX}{black}%
\backgroundfill{\LX}{0cm}{\LX}{\LX}{blue}%
\backgroundfill{0cm}{\LX}{\LX}{\LX}{blue}%
\backgroundfill{\LX}{\LX}{\LX}{\LX}{black}%
\end{document}
新职位:
\pgfsyspdfmark {pgfid1}{9192734}{46450400}
\pgfsyspdfmark {pgfid2}{9192734}{46450400}
\pgfsyspdfmark {pgfid3}{9192734}{46450400}
\pgfsyspdfmark {pgfid4}{9192734}{46450400}
警告: TikZ
如果文件中的数据已更改,则不会发出警告.aux
。即使没有重新运行警告,也可能需要额外运行。如果文件已更改,包rerunfilecheck
会帮助获取警告:.aux
\usepackage[aux]{rerunfilecheck}
然后,.pdf
pdflatex 生成的文件包含以下矩形:
-139.74774 -161.87898 297.64163 297.64163 re
157.89388 -161.87898 297.64163 297.64163 re
-139.74774 -459.52061 297.64163 297.64163 re
157.89388 -459.52061 297.64163 297.64163 re
该运算符re
的语法如下:
<x-pos> <y-pos> <width> <height> re
左侧框的右边缘:157.89389 = -139.74774 + 297.64163右侧框的
左边缘:157.89388
上方框的下边缘:-459.52091 = -161.87898 - 297.64163
下方框的上边缘:-459.52061
这意味着已经存在 0.00001bp 和 0.0003bp 的微小重叠。
尝试了不同的 PDF 查看器,我没能发现差距。
答案2
作为一个穷人的解决办法,改变以下几行:
minimum width =#3,
minimum height=#4,
到:
minimum width =1.001#3,
minimum height=1.001#4,
“过度绘制”矩形,以至于背景永远不可见。我仍然不太清楚为什么我的查看器evince
在没有交错空间的情况下渲染背景,所以这个问题仍然悬而未决。