垂直对齐颜色框内的文本

垂直对齐颜色框内的文本

我对 TeX 还很陌生,所以我不确定如何正确解决以下问题,如果能得到一些提示就太好了。

因此,我尝试获取一个灰色的彩色框,该框横跨整个页面,其中有一些居中的文本,但彩色框的高度应大于其包含的文本,但文本应在框中垂直对齐。所以这是我目前得到的结果(带[showframe]选项的图像):

在此处输入图片描述

\documentclass[a4paper,11pt]{article}
\usepackage[margin=2cm]{geometry}
\usepackage{times}
\usepackage{color}

\definecolor{lightgray}{gray}{0.75}

% greybox command definition
\newcommand\greybox[1]{%
  \vskip\baselineskip%
  \par\noindent\colorbox{lightgray}{%
    \begin{minipage}{\textwidth}\large\centering\textbf{#1}\end{minipage}%
  }%
  \vskip\baselineskip%
}

\begin{document}
  \greybox{Some Text here}
\end{document}

答案1

您所做的事情基本可以正常工作,只是它稍微溢出到了边距。因此,只需对宽度进行轻微调整,即可minipage正确\linewidth-2\fboxsep设置宽度:

在此处输入图片描述

我添加了该[showframe]选项,geomtry以便我们可以看到边距在哪里,并包含了calc包。

\documentclass[a4paper,11pt]{article}
\usepackage[margin=2cm,showframe]{geometry}
\usepackage{times}
\usepackage{color}
\usepackage{calc}

\definecolor{lightgray}{gray}{0.75}

% greybox command definition
\newcommand\greybox[1]{%
  \vskip\baselineskip%
  \par\noindent\colorbox{lightgray}{%
    \begin{minipage}{\linewidth-2\fboxsep}\large\centering\textbf{#1}\end{minipage}%
  }%
  \vskip\baselineskip%
}


\begin{document}
  \greybox{Some Text here}
\end{document}

答案2

minipage有三个可选参数。

\begin{minipage}[<vertical position>][<height>}[<inner posistion]{<width>}

这样你就可以修改你的文本。

\documentclass[a4paper,11pt]{article}
\usepackage[margin=2cm]{geometry}
\usepackage{times}
\usepackage{color}

\definecolor{lightgray}{gray}{0.75}

% greybox command definition
\newcommand\greybox[1]{%
  \vskip\baselineskip%
  \par\noindent\colorbox{lightgray}{%
    \begin{minipage}[c][4cm]{\dimexpr\textwidth-2\fboxsep\relax}\large\centering\textbf{#1}\end{minipage}%
  }%
  \vskip\baselineskip%
}


\begin{document}
  \greybox{Some Text here}
\end{document}

另一个解决方案是使用包 mdframed:

\documentclass[a4paper,11pt]{article}
\usepackage[margin=2cm]{geometry}
\usepackage{mdframed}
\definecolor{lightgray}{gray}{0.75}

\usepackage{lipsum}
\begin{document}
\begin{mdframed}[linecolor=lightgray,backgroundcolor=lightgray,innerleftmargin=1cm,innerrightmargin=1cm,innertopmargin=.5cm,innerbottommargin=1cm]
\centering\lipsum[1]

Text
\end{mdframed}

\end{document}

答案3

您可以使用如下所示的包执行此操作adjustbox。这也允许您轻松选择内部和外部间距。

以下代码添加了 1ex 的内部分隔和 的外部边距\medskipamount。将其更改为您想要的样式。我定义了两个版本,一个用于单行文本,另一个用于多行文本。请参阅adjustbox软件包手册以了解更多选项,例如更改框架粗细或颜色。

\documentclass{article}

\usepackage{adjustbox}
\usepackage{xcolor}

\newcommand{\graybox}{\noindent\adjustbox{center,margin={-2\fboxrule} 1ex,bgcolor=gray,frame,margin=0pt \medskipamount}}

\newcommand{\Graybox}{\noindent\adjustbox{minipage=[c]{\linewidth}\centering,margin={-2\fboxrule} 1ex,bgcolor=gray,frame,margin=0pt \medskipamount}}

\begin{document}

before

\graybox{Some Text Here}

middle

\Graybox{Some\\Text\\Here}

after

\end{document}

在此处输入图片描述

相关内容