以小写字母换行 \textsc

以小写字母换行 \textsc

我有几个包含字符“/”的小写术语,例如:

\textsc{solarium/disapproved}

它们是常规文本的一部分,但有时当它们出现在行尾时,它们会超出页边距(只有包含小型大写字母的一行会超出)。我希望文本到达页边距时换行,这样换行就会在单词中间换行,就像常规文本中没有小型大写字母一样。

它适用于由几章组成的非常长的文档(文档类报告),所以我不想更改整个文档的设置,而只想管理那几行。

答案1

问题是,如果两个单词之间用 cat-12 标记分隔,例如/(而不是空格),则在/到达时会关闭连字算法,并且直到到达后续空格才会重置该算法。结果是,不仅不允许/换行,而且第二个单词变得无法连字。

引入新定义的\z(随便你怎么称呼它)会做两件事......它允许在之后中断,/并且随着的引入\hspace{0pt},它会重置连字算法。

定义完这一点后,我给出了三种利用它的方法。

  1. 默认行为是,在 处不中断/,之后也不使用连字符。

  2. 明确使用/\z

  3. 使用\bslash,已定义为/\z

  4. /使用启用活动\breakableslashon,在这种情况下,/单词中间会自动使用此方法。但是,这可能会破坏/令牌的其他应用程序,因此\breakableslashoff提供关闭该功能。

当然,最手动的方法(未显示)是直接/\allowbreak\hspace{0pt}在文档中键入内容。对于一两个令人厌烦的实例,这种方法还行,但如果实例太多,就会变得繁重。

妇女权利委员会:

\documentclass{article}
\textwidth=0pt
\newcommand\z{\allowbreak\hspace{0pt}}
\catcode`/=\active
\newcommand/{\char`/\z}
\catcode`/=12
\newcommand\bslash{/\z}
\newcommand\breakableslashon{\catcode`/=\active }
\newcommand\breakableslashoff{\catcode`/=12 }

\begin{document}
0. \textsc{solarium/disapproved}

1. \textsc{solarium/\z disapproved}

2. \textsc{solarium\bslash disapproved}

3. \breakableslashon
blah blah \textsc{solarium/disapproved} blah blah
\breakableslashoff
\end{document}

在此处输入图片描述

答案2

在 TUGboat 中,需要换行的地方经常出现斜线。这是那里使用的代码(它在类文件中定义,不需要修改at):

\makeatletter
\def\slash{/\penalty\z@\hskip\z@skip }
\makeatother

最好将其改为\def-- \newcommand,这样如果已经定义,它将通知您\slash。(如果已经定义,请检查定义;它可能已经是您需要的。否则,您需要另一个名称。)

相关内容