是否有一种文本样式,可以居中放置单词,并以左右两侧对齐的方式将其放在行上?我不是在寻找固定对齐的文本,而是寻找一种宽度会根据要放置的单词进行调整的框。
这个想法是为了防止将单个单词放在新行上,而是从上一行中取出更多单词以使其看起来更合理。
下面是一个更清晰的例子。我有一个宏可以做到这一点:
% 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}
}