![为什么在这种情况下 RaggedRight 和 RaggedLeft 在框内不起作用?](https://linux22.com/image/447569/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%E8%BF%99%E7%A7%8D%E6%83%85%E5%86%B5%E4%B8%8B%20RaggedRight%20%E5%92%8C%20RaggedLeft%20%E5%9C%A8%E6%A1%86%E5%86%85%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我试图将小页面与主管信息对齐在左侧,将小页面与候选人信息对齐在右侧。但\RaggedRight
和\RaggedLeft
命令似乎不起作用。我检查了ragged2e
软件包是否正确包含,我也尝试使用 LaTex 的基本版本\raggedright
和,\raggedleft
但我没有注意到任何变化。我没有收到错误,并且两个小页面都保持左对齐,我认为这是默认的。命令似乎不起作用,为什么会这样?
% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = pdflatex
\makebox[\textwidth]{\null\hfill\def\arraystretch{2}% % to change the spacing change this number
\begin{minipage}[t]{.5\textwidth}\RaggedRight
\begin{tabular}[t]{@{}l@{}}
\fixednamesfont \textbf{\thesissupervisortext} \\
\namesfont \xmakefirstuc{\thesissupervisoronetitle}~\thesissupervisoronename~\thesissupervisoronesurname\\
\namesfont \xmakefirstuc{\thesissupervisortwotitle}~\thesissupervisortwoname~\thesissupervisortwosurname\\
\end{tabular}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{.5\textwidth}\RaggedLeft
\begin{tabular}[t]{@{}l@{}}
\fixednamesfont \textbf{\thesiscandidatetext} \\
\namesfont \thesiscandidatename~\thesiscandidatesurname
\end{tabular}
\end{minipage}\hfill\null}\\
答案1
我们无法测试您的代码片段,因为所有使用的命令都未定义。
因此,如果我用简单的文本替换它们并将minipage
s插入\fbox
(s 的大小minipage
和包含文本的位置可见),\RaggedRight
和\RaggedLeft
都符合预期。但是,您可以将它们放入托盘中以使用\raggeright
和raggedleft
说明。
梅威瑟:
\documentclass{article}
\usepackage{ragged2e}
\begin{document}
\begin{center}
\fbox{% remove in real document
\begin{minipage}[t]{.45\textwidth}\RaggedRight
\begin{tabular}[t]{@{} l @{}}
some text\\
some text\\
some text
\end{tabular}
\end{minipage}
} % remove in real document
%
\hfill
%
\fbox{% remove in real document
\begin{minipage}[t]{.45\textwidth}\RaggedLeft
\begin{tabular}[t]{@{} l @{}}
some text\\
some text\\
some text
\end{tabular}
\end{minipage}
}% remove in real document
\end{center}
\end{document}
答案2
命令\RaggedRight
/\RaggedLeft
和类似命令决定常规段落的对齐方式(例如,允许换行)。表格单元格(p
表格单元格包含任意段落的特殊情况除外)通常只包含一条永不换行的行,并且不遵循此对齐方式,而是在列类型中具有明确的对齐规范。此列类型由 的参数给出\begin{tabular}
。在您的例子中,指定(除了影响间距的{@{}l@{}}
技术之外)一种类型的列,因此@{}
l
升左对齐列。您可以将其设置为r通过将 改为 来实现右l
对齐r
。
答案3
你有
\makebox[\textwidth]{%
\null\hfill
\begin{minipage}{0.5\textwidth}
<some text>
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{.5\textwidth}
<some text>
\end{minipage}\hfill\null
}
由于第一个 后面有空格,因此会产生一个溢出的框minipage
。\makebox
顺便说一下, 是无用的;它的唯一用途是将设置本地化为\arraystretch
。
这两个小页面也没什么用,因为你的目标只是将第一个页面推tabular
到左边,将第二个页面推到右边。只需\noindent
在它们前面和\hfill
中间使用即可。尝试
\begingroup
\renewcommand{\arraystretch}{2}%
\noindent
\begin{tabular}[t]{@{}l@{}}
\fixednamesfont \textbf{\thesissupervisortext} \\
\namesfont \xmakefirstuc{\thesissupervisoronetitle} \thesissupervisoronename\ \thesissupervisoronesurname\\
\namesfont \xmakefirstuc{\thesissupervisortwotitle} \thesissupervisortwoname\ \thesissupervisortwosurname\\
\end{tabular}\hfill
\begin{tabular}[t]{@{}l@{}}
\fixednamesfont \textbf{\thesiscandidatetext} \\
\namesfont \thesiscandidatename\ \thesiscandidatesurname
\end{tabular}\par
\endgroup
它可以完成与您想要的完全相同的工作。