如何定义一个命令\rectangle
,通过例如调用
\rectangle{70cm}{70cm}
生成指定尺寸的黑色轮廓矩形?
答案1
无需任何包的方法如下:
\newcommand{\rectangle}[2]{{% #1 = width, #2 = height
\fboxsep=-\fboxrule\sbox0{}\wd0=#1\ht0=#2\relax\fbox{\box0}}}
使用\fboxsep=-\fboxrule
(在正确的 LaTeX 语法中应该是\setlength{\fboxsep}{\fboxrule}
),我们要求 LaTeX 在“框内”绘制框架。我们绘制的框是空的,但其宽度和高度设置为指定的参数。因此,我们构建这个空框,然后为其添加框架。
我更\usebox{0}
喜欢使用原始命令\box0
,它使用盒子并销毁它。由于所有操作都发生在组内,值\fboxsep
将恢复到之前的值,我们还隐藏了(临时)盒子寄存器 0 的踪迹。
如果还想指定深度,那么扩展就很容易:
\newcommand{\rectangle}[3][0pt]{{%
\fboxsep=-\fboxrule\sbox0{}\wd0=#2\ht0=#3\dp0=#1\relax\fbox{\box0}}}
这样\rectangle{10pt}{20pt}
将构建一个宽 10pt、高 20pt 的矩形,同时
\rectangle[2pt]{10pt}{18pt}`
将构建相同的内容,但放置在基线略下方。
答案2
使用 TikZ 的另一种答案是
\newcommand{\rectangle}[2]{\tikz \draw (0,0) rectangle (#1,#2);}
(您需要添加\usepackage{tikz}
您的序言)
如果要用黑色填充矩形,请将其替换\draw
为\fill
。您还可以选择颜色:例如
\newcommand{\rectangleplus}[3]{\tikz \draw[#3] (0,0) rectangle (#1,#2);}
\rectangleplus{4cm}{0.5cm}{blue}
\rectangleplus{4cm}{0.5cm}{blue,dashed}
以及许多其他事物。
答案3
我尝试使用picture
环境,
\documentclass{article}
\newcommand{\rectangle}[2]{%
\setlength{\unitlength}{1cm}%
\begin{picture}(#1,#2)%
\linethickness{0.1mm}%
\multiput(0,0)(#1,0){2}{\line(0,1){#2}}%
\multiput(0,0)(0,#2){2}{\line(1,0){#1}}%
\end{picture}%
\setlength{\unitlength}{1pt} % Reset unit length to 1 pt
}
\begin{document}
\rectangle{1}{4}
\rectangle{7}{2}
\rectangle{3}{3}
\end{document}