我正在处理一份在 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