我正在尝试创建一个命令,该命令将接受一个参数并围绕该数量的空行创建一个矩形。我有以下内容:
\newcommand{\putansbox}[1]{
\framebox[\textwidth]{
\vspace{\the\baselineskip}
}
}
它只创建了一行。我如何使用#1
在这里使用?
答案1
\framebox
是一个水平框,因此如果不使用垂直框,则无法向其添加垂直空间,例如\parbox
。以下是另一个使用隐形规则的解决方案:
\documentclass{article}
\newcommand{\putansbox}[1]{%
\framebox[\textwidth]{\rule{0pt}{#1\baselineskip}}
}
\begin{document}
\noindent\putansbox{5}
\end{document}
如果你不想让框破坏线宽,你可以使用,例如
\newcommand{\putansbox}[1]{%
\framebox[\dimexpr \linewidth-2\fboxrule-2\fboxsep\relax]{%
\rule{0pt}{#1\baselineskip}%
}%
}
为了不要忘记问题的答案:您可以使用 #1 作为\baselineskip
因为的前缀\baselineskip
它是长度,并且长度可以像单位一样使用。
答案2
如果你想要更酷炫,你也可以使用类似mdframed
或 之类的东西tikz
。
这是一个使用的tikz
解决方案shadedbox
如何在 tikz 图片中右对齐表格,因此如果您喜欢这个解决方案,请对该答案投赞成票。
此处定义\putansbox
接受一个可选的第一个参数,该参数为您提供了使用全部功能来tikz
修改所需内容的选项。有关更多详细信息和选项,请参阅 TikZ 文档,但本 MWE 中显示的选项包括:
- 指定阴影的顶部/底部颜色:
bottom color=yellow!10, top color=red!10
- 使用圆角:
rounded corners=15pt
- 调整线宽:
line width=1pt
- 调整线条颜色:
draw=blue
- 调整框的宽度:
text width=0.6\linewidth
- 调整线条样式:
densely dotted
查看 TikZ 文档以了解更多选项。
\documentclass[border=5pt]{standalone}
\usepackage{calc}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{shadows}
\tikzstyle{shadedbox} = [
text width=0.97\linewidth,
draw=black,
shade, top color=white, bottom color=white,
drop shadow={
top color=black,
bottom color=black,
shadow xshift=2pt,
shadow yshift=-2pt,
},
rectangle,
]
\newcommand*\putansbox[2][]{%
\noindent%
\begin{tikzpicture}%
\node [shadedbox, #1] (box) {%
\vspace {#2\baselineskip}%
};%
\end{tikzpicture}\\%
}
\begin{document}
\putansbox{5}
\putansbox[bottom color=yellow!10]{5}
\putansbox[rounded corners=15pt, line width=1pt, draw=blue]{5}
\putansbox[text width=0.6\linewidth, top color=red!10, densely dotted]{5}
\end{document}
答案3
\phantombox{<width>}{<height>}{<depth>}
这是基于我的包的解决方案adjustbox
。它创建一个具有给定尺寸的空框,然后用来\frame
在其周围绘制一个紧密的框架。我还添加了一些其他宏来在周围的文本之间添加一些分隔。
\documentclass{article}
\usepackage{adjustbox}
\newcommand{\putansbox}[1]{%
\par\medskip\par\noindent
\frame{\phantombox{\linewidth}{#1\baselineskip}{\dp\strutbox}}%
\par\smallskip\par
}
\begin{document}
text
\putansbox{5}
text
\end{document}