如何完美适配 Tikz 网格

如何完美适配 Tikz 网格
\documentclass{article}
\usepackage[showframe, paperwidth=10cm, paperheight=12cm, margin=1cm]{geometry}
\usepackage{tikz}

\begin{document}
    \noindent\begin{tikzpicture}
        \draw[step=2cm,] (0,0) grid (8,10);
        \node at (1,1) {B};
        \node at (2,2) {C};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

为什么上面的代码(应该完全适合)会留下一个初始空白页?

答案1

您的网格比网格线的宽度高(不是 hal,因为我在评论中写错了),因此它被推到了下一页,因为它无法容纳在文本区域中。为了演示这一点,让我们将网格线弄得更粗且半透明:

\documentclass{article}
\usepackage[showframe, 
            paperwidth=10cm, paperheight=12cm, 
            margin=1cm]{geometry}
\usepackage{tikz}

\begin{document}
\noindent\begin{tikzpicture}
        \draw[step=2cm, semitransparent, red, ultra thick] (0,0) grid (8,10);
        \node at (1,1) {B};
        \node at (2,2) {C};
    \end{tikzpicture}%
\end{document}

放大的右下角:

在此处输入图片描述

附录: 解决问题的一种方法是减少“\pgflinewidth”的网格高度:

\documentclass{article}
\usepackage[showframe, 
            paperwidth=10cm, paperheight=12cm, 
            margin=1cm]{geometry}
\usepackage{tikz}

\begin{document}
\noindent\begin{tikzpicture}
        \draw[step=2cm, semitransparent, red, ultra thick] (0,0) grid (8,\dimexpr\textheight-\pgflinewidth\relax);
        \node at (1,1) {B};
        \node at (2,2) {C};
    \end{tikzpicture}%
\end{document}

在此处输入图片描述

如您所见,现在图像适合文本高度并溢出到右边框(与以前一样)\pgflinewidth

相关内容