用 TikZ 网格填充页面?对变量使用模数?

用 TikZ 网格填充页面?对变量使用模数?

我正在处理一份在 A5 纸上看起来很棒的文档。我需要对其进行修改,以便它在半信纸 (8.5" x 5.5") 上看起来也很棒。一切都很顺利,只有一个例外 - 有些网格页面我无法对齐。以下是示例网格页面:

\documentclass[a5paper,twoside]{article}
\usepackage{tikz}
\usepackage{geometry}

\geometry{a5paper}
\geometry{portrait}
\geometry{inner=18mm,outer=10mm,top=10mm,bottom=10mm}
\pagestyle{empty}

\begin{document}

\section{graph}
\begin{tikzpicture}
  \draw [step=0.5cm,very thin, gray] (0,0) grid (12.5,17.5);
\end{tikzpicture}

\end{document}

生成如下内容:

在此处输入图片描述

但在半字母上,这个太宽了,超出了页面的右侧。所以我把它修改成了动态的:

\section{graph}
\newdimen\spaceleft
\spaceleft=\dimexpr\textheight-\pagetotal-14pt\relax
% not sure why I need to subtract 14pt here.  Without it, the content is
% pushed down to the next page.
\begin{tikzpicture}
  \draw [step=0.5cm,very thin, gray] (0,0) grid (\textwidth,\spaceleft);
\end{tikzpicture}

但这些值排列不完美,留下了一些空的网格单元:

在此处输入图片描述

如果我戴上程序员的帽子,我想取\textwidth和减去\textwidth % 0.5cm。这种事情在乳胶中可行吗?有没有更好的方法用网格填充页面?

网格只是为了涂鸦,所以我不需要它具有精确的单元格大小/间距。

答案1

如果我戴上程序员的帽子,我想取 \textwidth 并减去 \textwidth % 0.5cm。这种事情在 latex 中可行吗?

当然可以 - PGF(tikz 的基础层)是你的朋友:

\pgfmathparse{\textwidth - mod(\textwidth,0.5cm)}
Textwidth: \the\textwidth\\
Modified width: \pgfmathresult pt

您必须\usepackage{tikz}这样做才能使其工作,但我强烈地感觉到您无论如何都在加载它。

总的来说,你可以做这样的事情:

\newdimen\spaceleft
\spaceleft=\dimexpr\textheight-\pagetotal-14pt\relax
\pgfmathsetmacro{\gridWidth}{\textwidth - mod(\textwidth,0.5cm)}
\pgfmathsetmacro{\gridHeight}{\spaceleft - mod(\spaceleft,0.5cm)}

\begin{tikzpicture}
    \draw [step=0.5cm,very thin, gray] (0,0) grid (\gridWidth pt,\gridHeight pt);
\end{tikzpicture}

我允许自己对高度应用相同的计算。请注意,在使用和/或时,必须手动添加pt单位。这样可以得出 \gridWidth\gridHeight生成的网格

相关内容