居中对齐样式

居中对齐样式

是否有一种文本样式,可以居中放置单词,并以左右两侧对齐的方式将其放在行上?我不是在寻找固定对齐的文本,而是寻找一种宽度会根据要放置的单词进行调整的框。

这个想法是为了防止将单个单词放在新行上,而是从上一行中取出更多单词以使其看起来更合理。

下面是一个更清晰的例子。我有一个宏可以做到这一点:

% opening quote
\newcommand{\dvquote}[2]{
  \begin{center}\parbox{110mm}{
    \begin{center}
    \begin{itshape}#1\end{itshape}\\
    ---~\textsc{#2}
    \end{center}
  }\end{center}\vspace{-5mm}}

在某些情况下,它会生成一行只有一个单词的内容,例如以下内容: 文本居中,最后一行只有一个单词

这不是很平衡,所以我想要类似这样的东西: 带回车符的居中文本

行数相同,但更加平衡。需要时,通过添加手动回车符,很容易实现,但我想知道是否有某种自动样式可以实现这一点。

将段落宽度减小到 110 毫米以下不是一个选择,因为我需要大多数引文都相当大,即使这样,几乎任何固定宽度都可能出现同样的问题。

在一种类似的问题中(可能有相同的解决方案),我有一个由以下项定义的框:

% central quote
\usepackage{fancybox}
\newcommand{\dvbox}[1]{
  \begin{center}\doublebox{
    \parbox{10cm}{
      \vspace{3mm}
        \begin{center}
          \parbox{9cm}{\textsc{#1}}
        \end{center}
      \vspace{3mm}
    }
  }\end{center}}

它会产生合理的输出,例如:

带有两条线的对齐框

但有时,内容不足以填满整行,因此我得到:

一行对齐框

居中看起来可能会更好。有没有标准方法可以解决这个问题?

答案1

这是 LaTeX 的一个已知问题(也是纯 TeX 的回归问题),ragged2e 软件包。也许使用此包中的\Centering命令(或Center环境)会达到您想要的效果。或者只需使用该选项加载包[newcommands]并保持文档的其余部分不变。您可能需要摆弄 ragged2e 参数才能获得良好的结果。

答案2

如果我明白您的要求,您可以通过更改边距来实现这一点。

如果您使用的是 memoir,则可以使用环境adjustwidth。我使用以下内容来半自动化该过程。它会将两个边距调整相同的量,但如果您只想修改一个,它应该会为您指明正确的方向。(您仍然需要进行试验才能获得正确的宽度。)

%+ 这将计算每个保证金必须增加的绝对调整额(以点为单位)

%+ 产生指定大小的 \linewidth。它提供的值应该用于

%+ 更改左右边距,如下面的使用示例所示。左作为

%+ 为用户练习:指定左边距和右边距调整的不等比例。

%+ 用法:

%+ \RKadjto{20em}\begin{adjustwidth}{\RKadj}{\RKadj}

%+

%+ \end{调整宽度}

\newlength{\RKadj}\newlength{\RKadjj}
\newcommand*{\RKadjto}[1]{%
  \setlength{\RKadjj}{#1}
  \addtolength{\RKadjj}{-\linewidth}
  \setlength{\RKadj}{-0.5\RKadjj}
  \typeout{RIK adjusting each margin \string\RKadj\space=\space\the\RKadj}
}

相关内容