为什么在这种情况下 RaggedRight 和 RaggedLeft 在框内不起作用?

为什么在这种情况下 RaggedRight 和 RaggedLeft 在框内不起作用?

我试图将小页面与主管信息对齐在左侧,将小页面与候选人信息对齐在右侧。但\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

我们无法测试您的代码片段,因为所有使用的命令都未定义。

因此,如果我用简单的文本替换它们并将minipages插入\fbox(s 的大小minipage和包含文本的位置可见),\RaggedRight\RaggedLeft都符合预期。但是,您可以将它们放入托盘中以使用\raggerightraggedleft说明。

梅威瑟:

\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

它可以完成与您想要的完全相同的工作。

相关内容