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