我对 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}