当我尝试使用 Tikz 绘制矩形时,是否遇到了一些奇怪的行为。
我想在一张信纸上创建一个 3 英寸 x 5 英寸的圆角矩形,然后可以将其剪下来。下面是我的 MWE。
我知道 Tikz 数学解析器会将所有东西都转换为点。11x8.5 信纸是 612 × 792 点。那么我想知道为什么当我以英寸为单位指定尺寸时,我的矩形会超出页面范围。它们不应该转换为点并完全在页面尺寸范围内吗?
我将非常感激对此事的任何启示。
\documentclass[11pt,letterpaper,landscape]{article}
\usepackage{tikz}
\pgfmathsetmacro{\cardwidth}{5in}
\pgfmathsetmacro{\cardheight}{3in}
\begin{document}
\centering
\begin{tikzpicture}
\draw[style=help lines] (0,0) grid (\cardwidth,\cardheight);
\draw[rounded corners=0.2cm] (0,0) rectangle (\cardwidth,\cardheight);
\end{tikzpicture}
\end{document}
答案1
该命令\pgfmathsetmacro
会将您的表达式转换为pt
,然后丢弃单位。如果您\show\cardwidth
可以在日志文件中看到以下内容:
> \cardwidth=macro:
->361.34999.
此数字在坐标中使用时,会使用 TikZ 基本单位缩放,默认为 1 厘米。您有多种选择:
不要使用
\pgfmathsetmacro
,但使用标准 LaTeX 长度(或者如果您需要给出表达式来\setlength
使用\pgfmathsetlength
)。\documentclass[11pt,letterpaper,landscape]{article} \usepackage{tikz} \newlength\cardwidth \newlength\cardheight \setlength\cardwidth{5in} \setlength\cardheight{3in} \begin{document} \centering \begin{tikzpicture} \draw[style=help lines] (0,0) grid (\the\cardwidth,\the\cardheight); \draw[rounded corners=0.2cm] (0,0) rectangle (\the\cardwidth,\the\cardheight); \end{tikzpicture} \end{document}
将 TikZ 基本单位更改为
1pt
。\documentclass[11pt,letterpaper,landscape]{article} \usepackage{tikz} \pgfmathsetmacro{\cardwidth}{5in} \pgfmathsetmacro{\cardheight}{3in} \begin{document} \centering \begin{tikzpicture}[x=1pt,y=1pt] \draw[style=help lines] (0,0) grid (\cardwidth,\cardheight); \draw[rounded corners=0.2cm] (0,0) rectangle (\cardwidth,\cardheight); \end{tikzpicture} \end{document}
在恢复保存的尺寸时添加一个明确的单位,即
\cardwidth pt
而不是\cardwidth
。\documentclass[11pt,letterpaper,landscape]{article} \usepackage{tikz} \pgfmathsetmacro{\cardwidth}{5in} \pgfmathsetmacro{\cardheight}{3in} \begin{document} \centering \begin{tikzpicture} \draw[style=help lines] (0,0) grid (\cardwidth pt,\cardheight pt); \draw[rounded corners=0.2cm] (0,0) rectangle (\cardwidth pt,\cardheight pt); \end{tikzpicture} \end{document}