raggedright 和 begin{flushleft} 有不同的行为

raggedright 和 begin{flushleft} 有不同的行为

我正在尝试对齐文本,使第一行完全左对齐,第二行居中。以下是与相关代码相关的期望行为。

\begin{flushleft}
Step 2:
\end{flushleft}
\begin{center}
chi-squared-test (assuming data is normal)
\end{center}

正确结果

我通常使用\raggedright\centering喜欢下面的方法,但这给我带来了不良的行为。

\raggedright{Step 2:}
\centering{chi-squared-test (assuming data is normal)}

错误结果

我也尝试\newline在第一行后插入一个,但这也导致了不良行为。

\raggedright{Step 2:}
\newline
\centering{chi-squared-test (assuming data is normal)}

错误结果

我在第一个代码块中有一个工作部分,但为了少写代码,我更愿意使用\raggedright\centering。我做错了什么?为什么代码块之间的行为不同?谢谢。

以下是完整文档。

\documentclass{article}
\usepackage{ragged2e}

\begin{document}

\begin{flushleft}
Step 2:
\end{flushleft}
\begin{center}
chi-squared-test (assuming data is normal)
\end{center}

\raggedright{Step 2:}
\newline
\centering{chi-squared-test (assuming data is normal)}

\end{document}

答案1

\raggedright 和 \centering 不接受参数。它们是影响段落的开关。因此您需要先将它们分组并结束段落:

\documentclass{article}
\usepackage{ragged2e}

\begin{document}

\begin{flushleft}
Step 2:
\end{flushleft}
\begin{center}
chi-squared-test (assuming data is normal)
\end{center}

{\raggedright Step 2: \par}

{\centering chi-squared-test (assuming data is normal)\par}

\end{document}

在此处输入图片描述

答案2

随后flushleftcenter会获得太多的垂直空间。

使用\raggedright\centering不会添加不必要的空格,但它们不是带参数的命令。不过,还有另一个方面需要考虑:您不希望两行之间有分页符,但 TeX 总是愿意在段落之间分页。

您可以将该内容排版为一个段落,并附加额外的标记,这是一件好事,因为您可能会改变对此类对象的排版想法,并且在打字稿中乱放格式指令是邪恶的。

如果我们制作一个两行段落,我们可以告诉 TeX,在这些行之间分页会受到无限惩罚。我们希望第一行排版左对齐,第二行居中,因此我们可以将\leftskip和设置\rightskip为无限可拉伸粘连,并用第一行中的“更多无限”粘连覆盖它。

我还在每个台阶的上方和下方添加了一些垂直空间。

\documentclass{article}

\newcommand{\step}[2]{% #1 = step number, #2 = centered text
  \par
  \addvspace{\topsep}% some vertical space above
  \begingroup % make local settings
  \interlinepenalty=10000 % no page break between lines
  \setlength{\parindent}{0pt}% no indentation in the first line
  \setlength{\parfillskip}{0pt}% don't flush left the last line
  \leftskip=0pt plus 1fil  % infinitely stretchable glue at the left
  \rightskip=0pt plus 1fil % infinitely stretchable glue at the right
  Step #1\hfill\break % override those glues in the first line
  #2\par % the second line (centered)
  \endgroup
  \addvspace{\topsep}% some vertical space
}

\begin{document}

\step{1}{chi-squared-test (assuming data is normal)}

\step{2}{chi-squared-test (assuming data is normal) and some words}

\step{3}{chi-squared-test}

\end{document}

在此处输入图片描述

相关内容