我正在使用 tikz 包来制作漂亮的方案来展示我的工作,但我遇到了一个小问题:操作变量。
我可以用困难的方式来做到这一点:
例如假设我想画一个矩形(8*4),
%Defining nodes for geometry
\coordinate (left_minus) at (-4,-2) ;
\coordinate (left_plus) at (-4,2) ;
\coordinate (right_minus) at (4,-2) ;
\coordinate (right_plus) at (4,2) ;
%Drawing rectangle
\draw[line width= 1pt, fill=green!30] (left_minus) rectangle (right_plus)
但我想做这样的事情:
\newcommand{\Length}{8}
\newcommand{\Width}{4}
\coordinate (left_minus) at (-Length/2,-Width/2) ;
\coordinate (left_plus) at (-Length/2,Width/2) ;
我浏览了网页,但没能找到有关在 LaTeX 中操作变量的有用信息。你们知道我该怎么做吗?
谢谢!
奥布里
答案1
您的方法应该有效(至少在 TikZ 中),但您必须使用以反斜杠开头的宏名称\
\newcommand{\Length}{8}
\newcommand{\Width}{4}
\coordinate (left_minus) at (-\Length/2,-\Width/2) ;
\coordinate (left_plus) at (-\Length/2,\Width/2) ;
这捷径我通常使用\def
里面的{tikzpicture}
。在这种情况下,“延长”是 TeX 意义上的简单宏,可以通过 TikZ 进行配对,就像您直接输入它们一样,即 (0,0.5*\h) 将与 (0,0.5*2) 相同,但 (0,0.5\h) 将被读作 (0,0.25),因此不要省略符号*
。我使用这种方式,因为它取决于 的基向量的当前设置TikZ
。 的缺点\def
是它会覆盖现有的宏,但如果您在(重新)定义中使用它,则{tikzpicture}
保持在本地,应该没有问题。如果您想全局使用变量,您可以改用\newcommand
更长的变量名。
这路途更漫长使用真正的 TeX 延长,它可以在任何需要长度的地方使用,例如\hspace
。但在这种情况下,您必须添加一个单位,并且当基向量改变时,延长不会改变。
例子:
\documentclass{article}
\usepackage{parskip}
\usepackage{tikz}
\begin{document}
\section{short way}
\begin{tikzpicture}
\def\l{5}
\def\h{2}
\draw (0,0) rectangle (0.5*\l,\h/2);
\end{tikzpicture}
\begin{tikzpicture}[x=2cm,y=2cm]
\def\l{5}
\def\h{2}
\draw (0,0) rectangle (0.5*\l,\h/2);
\end{tikzpicture}
\section{longer way}
\newlength{\mylength}
\setlength{\mylength}{5cm}
\newlength{\myheight}
\setlength{\myheight}{2cm}
\begin{tikzpicture}
\draw (0,0) rectangle (0.5\mylength,\myheight/2);
\end{tikzpicture}
\begin{tikzpicture}[x=2cm,y=2cm]
\draw (0,0) rectangle (0.5\mylength,\myheight/2);
\end{tikzpicture}
\end{document}