连字:“implementation” 一词有何特殊之处

连字:“implementation” 一词有何特殊之处

minipage“实现”这个词有什么特殊之处,即使在序言中添加了连字符模式,也不可能在较窄的环境中自动连字符,例如TikZ 节点等?

有趣的是,如果在这些环境的开头添加\hspace{0pt}!,连字符就会起作用。例如:

\documentclass{article}
\begin{document}

\textbullet doesn't work:

    \smallskip
\fbox{\begin{minipage}{4em}
        implementation
      \end{minipage}
      }

\medskip
\textbullet\ with use of \verb+\hspace*{0pt}+ works:

\fbox{\begin{minipage}{4em}\hspace*{0pt} % <---
        implementation
      \end{minipage}
      }
\end{document}

在此处输入图片描述

使用 TikZ 节点的示例:

    \documentclass{article}
    \usepackage{tikz}
    \begin{document}

    \textbullet\ doesn't work:

    \smallskip
    \tikz\node[draw, text width=4em, align=center] {implementation};

     \textbullet\ with use of \verb+\hspace*{0pt}+ works:

    \tikz\node[draw, text width=4em, align=center,
               execute at begin node=\hspace*{0pt}] % <---
               {implementation};
    \end{document}

在此处输入图片描述

我想知道,这个词是什么意思执行。例如,类似的长词连字不会发生此问题。

答案1

没有什么特别之处implementation。TeX 根本不会对段落的第一个单词进行连字。如果您需要对此进行连字,则必须在其前面加上粘连,例如\hspace{0pt}。此(错误)功能与 ptex 和 xetex 等 tex 变体共享,但是 luatex 在其连字过程中确实包含第一个单词,因此会在您的示例中进行连字,而无需额外的空格。

答案2

连字是根据换行符来组成段落的。连字算法最初可能没有被使用。

TeXbook,第 6 章:运行 TeX

[...] 10 000 的公差将绝不产生一个满溢的框,除非出现一些奇怪的事情,例如无法连字符的单词比列本身还宽。

尽管日志文件显示该单词Drofnats可以用连字符连接,但以下来自 TeXbook 的示例显示了一个过满的框:Drof-

\tracingparagraphs=1
\tolerance=10000
\hsize=.75in
\hrule
\vskip 1in
\centerline{\bf A SHORT STORY}
\vskip 6pt
\centerline{\sl    by A. U. Thor} % !`?`?! (modified)
\vskip .5cm
Once upon a time, in a distant
  galaxy called \"O\"o\c c,
there lived a computer
named R.~J. Drofnats.

Mr.~Drofnats---or ``R. J.,'' as
he preferred to be called---% error has been fixed!
was happiest when he was at work
typesetting beautiful documents.
\vskip 1in
\hrule
\vfill\eject
\end

通过强制连字,我们可以获得更好的呈现效果。

hfuzz=10pt  %->line 3
Mr~Drof\-\penalty10000nats %->line 16

相关内容