如何在 \framebox 中添加垂直空间

如何在 \framebox 中添加垂直空间

考虑下面的 MWE。我想在蓝色方块上方添加一些垂直空间,里面(红色箭头framebox所指)。

为什么被\vspace忽略?我应该使用哪个命令?

梅威瑟:

\documentclass[twocolumn,a5paper]{article}

\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{tikz}

\begin{document}

\begin{figure}[t]
\centerline{\framebox{
\begin{tikzpicture}
\filldraw[blue] (0,0) |- (1,2) |- cycle;
\end{tikzpicture}
}}
\caption{Rectangle}
\end{figure}

\lipsum[1]

\begin{figure}[t]
\centerline{\framebox{
\vspace{2cm} %Why ignored?
\begin{tikzpicture}
\filldraw[blue] (0,0) |- (1,1) |- cycle;
\end{tikzpicture}
}}
\caption{Square}
\end{figure}

\lipsum[2]

\end{document}

在此处输入图片描述

答案1

我不确定为什么\vspace会被忽略;\vspace*保留页面顶部空间的 也会被忽略。

但是在盒子顶部插入相当于支柱的东西会留下您想要的白色空间:

\begin{figure}
\centering
\framebox{
%\vspace{2cm} %Why ignored?                                                     
\vrule height 2cm width 0pt
\begin{tikzpicture}
\filldraw[blue] (0,0) |- (1,1) |- cycle;
\end{tikzpicture}
}
\caption{Square}                                                                        
\end{figure}

代码示例的输出

答案2

\framebox以(受限)水平模式排版其内容,因此完全忽略垂直空间。

\documentclass[twocolumn,a5paper]{article}

\usepackage{tikz}
\usepackage{lipsum}

\newsavebox{\higherfboxsave}
\newlength{\higherfboxlen}
\newcommand{\higherfbox}[2]{% #1 = additional height, #2 = material to box
  \sbox{\higherfboxsave}{#2}%
  \setlength{\higherfboxlen}{\ht\higherfboxsave}%
  \addtolength{\higherfboxlen}{#1}%
  \fbox{\rule{0pt}{\higherfboxlen}\usebox{\higherfboxsave}}%
}

\begin{document}

\begin{figure}[htp]
\centering

\fbox{%
  \begin{tikzpicture}
  \filldraw[blue] (0,0) |- (1,2) |- cycle;
  \end{tikzpicture}%
}

\caption{Rectangle}

\end{figure}

\lipsum[1]

\begin{figure}[htp]
\centering

\higherfbox{1cm}{%
  \begin{tikzpicture}
  \filldraw[blue] (0,0) |- (1,1) |- cycle;
  \end{tikzpicture}%
}

\caption{Square}

\end{figure}

\lipsum[2][1-3]

\end{document}

避免使用外来命令\centerline,并注意添加的空格(检查%上面的代码)。

在此处输入图片描述

相关内容