高度灵活矩形的新命令

高度灵活矩形的新命令

我正在尝试创建一个命令,该命令将接受一个参数并围绕该数量的空行创建一个矩形。我有以下内容:

\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}

相关内容