我正在尝试创建一个页面长度框,围绕一个居中的文本,并在其下方添加标题。中心文本是一行公式。该框应填充除底部之外的所有可用空间,底部对齐的标题限制了它。我已经搜索了类似提到的答案这里和这里,但作为初学者,未能将其融入解决方案(问题是所引用的答案不涉及中心对齐和字幕)。
%Some code that generates a malformed output
\documentclass{scrartcl}
\usepackage{capt-of}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{lipsum}
\begin{document}
% dummy text
\par\noindent
\tikz[overlay,remember picture]\coordinate (image-start);
\par
\hfill
\vfill
$1+2=3$
\vfill
\null\hfill
\tikz [overlay,remember picture] \draw (0,0) rectangle ([yshift=\ht\strutbox-\fboxsep]image-start);
\hfill Caption\hfill \null
\newpage
\end{document}
答案1
我从这里给出的解决方案开始:https://tex.stackexchange.com/a/12128\par
.如果你想省略前面的空行,则第一个是必需的\frameeq
平均能量损失
\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{lipsum}
\newcommand{\frameeq}[2]{%
\par\noindent\tikz[overlay,remember picture]\coordinate (image-start);
\vfill
\null\hfill
\tikz [overlay,remember picture]
\draw (0,0) rectangle ([yshift=\ht\strutbox-\fboxsep]image-start) node[midway] {#2};
\vspace{1ex}
{\centering #1\par}
}
\begin{document}
\lipsum[1]
\frameeq{Caption here}{$2+2=5$}
\clearpage
\lipsum[1-3]
\frameeq{Caption here}{$2+2=5$}
\end{document}
输出
答案2
这里的主要变化是使用\makebox
居中文本。
\documentclass{scrartcl}
\usepackage{capt-of}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{lipsum}
\begin{document}
% dummy text
\par\noindent
\tikz[overlay,remember picture]{\coordinate (image-start);}
\par
\vfill
\noindent\makebox[\linewidth]{$1+2=3$}\par
\vfill
\null\hfill
\tikz [overlay,remember picture]{\draw (0,0) rectangle ([yshift=\ht\strutbox-\fboxsep]image-start);}
\par\noindent
\makebox[\linewidth]{Caption}
\newpage
\end{document}
\end{document}