带有 minipage 的多列,无法使用 100% 的 \textwidth

带有 minipage 的多列,无法使用 100% 的 \textwidth

在我制作的文档中,有几种情况需要将内容组织成几个“列”。例如,下面是我可能使用的一些代码:

\documentclass[letterpaper,12pt]{report}

\usepackage[margin=1in]{geometry}

\begin{document}

\bigskip
\noindent
\begin{minipage}[t]{.45\textwidth}
\raggedright
This is \\
some left-aligned \\
text in a column \\
for demo purposes
\end{minipage}
\hfill
\noindent
\begin{minipage}[t]{.45\textwidth}
\raggedleft
This is \\
some different \\
text, right-aligned \\
for demo purposes, \\
and with more lines.
\end{minipage}

\end{document}

我的问题是关于{.45\textwidth}minipage 环境定义的部分。在我第一次尝试设置此布局时,我{.5\textwidth}在每个布局上使用了可能更直观的值 - 因为我想用完整个页面,将其分成两半。

然而,当我使用这个值时,我收到来自 TeX 的警告:

Overfull \hbox (2.61107pt too wide) in paragraph at lines 8--28

我想知道的是,这种行为是否仅仅是因为minipage有一些隐式填充,我必须通过像这样的分数来处理0.45,或者是否有一些更清晰的方法来定义这种环境?

(请记住,此示例是简化的 - 在实际文档中,我可能需要两列以上的列,并且列的大小可能不均匀。)

答案1

不,minipage不提供填充。这是由于您使用了虚假空格导致的问题。为了纠正此问题,使用%在行尾.例如,考虑一下:

\noindent
\begin{minipage}[t]{.5\textwidth}
\raggedright
This is \\
some left-aligned \\
text in a column \\
for demo purposes
\end{minipage}% <---------------- Note the use of "%"
\begin{minipage}[t]{.5\textwidth}
\raggedleft
This is \\
some different \\
text, right-aligned \\
for demo purposes, \\
and with more lines.
\end{minipage}

也许提供与文档类似的填充的一些有用的东西twocolumn是使用minipage宽度\dimexpr.5\textwidth-.5\columnsep

以下是所讨论方法的视觉效果,以查看差异(我添加了使用\fbox零宽度间隙/分离的框架):

在此处输入图片描述

\documentclass[letterpaper,12pt]{report}

\usepackage[margin=1in]{geometry}
\setlength{\fboxsep}{-\fboxrule}% Just for this example
\begin{document}

\noindent
\fbox{\begin{minipage}[t]{.45\textwidth}
\raggedright
This is \\
some left-aligned \\
text in a column \\
for demo purposes
\end{minipage}}
\hfill
\noindent
\fbox{\begin{minipage}[t]{.45\textwidth}
\raggedleft
This is \\
some different \\
text, right-aligned \\
for demo purposes, \\
and with more lines.
\end{minipage}}

\bigskip

\noindent
\fbox{\begin{minipage}[t]{.5\textwidth}
\raggedright
This is \\
some left-aligned \\
text in a column \\
for demo purposes
\end{minipage}}
\hfill
\noindent
\fbox{\begin{minipage}[t]{.5\textwidth}
\raggedleft
This is \\
some different \\
text, right-aligned \\
for demo purposes, \\
and with more lines.
\end{minipage}}

\bigskip

\noindent
\fbox{\begin{minipage}[t]{\dimexpr.5\textwidth-.5\columnsep}
\raggedright
This is \\
some left-aligned \\
text in a column \\
for demo purposes
\end{minipage}}% <---------------- Note the use of "%"
\fbox{\begin{minipage}[t]{\dimexpr.5\textwidth-.5\columnsep}
\raggedleft
This is \\
some different \\
text, right-aligned \\
for demo purposes, \\
and with more lines.
\end{minipage}}

\end{document}

相关内容