10pt
在以下示例中,文本“Dest-Addr”出现了不需要的换行符。文本“Hello-World”的结果是正确的。如果我将字体大小更改为或,结果也是正确的12pt
。
\documentclass[11pt]{article}
\parindent=0pt
\begin{document}
\setbox0=\hbox{Hello-World}
\setbox2=\vbox{\hsize=\wd0 Hello-World} \box2
\setbox2=\vbox{\hsize=\wd0 \raggedright Hello-World} \box2
\setbox2=\vbox{\hsize=\wd0 \centering Hello-World} \box2
\setbox2=\vbox{\hsize=\wd0 \raggedleft Hello-World} \box2
\setbox0=\hbox{Dest-Addr}
\setbox2=\vbox{\hsize=\wd0 Dest-Addr} \box2
\setbox2=\vbox{\hsize=\wd0 \raggedright Dest-Addr} \box2
\setbox2=\vbox{\hsize=\wd0 \centering Dest-Addr} \box2
\setbox2=\vbox{\hsize=\wd0 \raggedleft Dest-Addr} \box2
\end{document}
- 这些不需要的换行符从何而来?
- 我怎样才能摆脱这些换行符?
我需要使用,\raggedleft
因为在我的包中我需要比较并获取几行文本的最小宽度并将它们放在(类似于包)。另外,由于其他原因,我无法将它们放在。\centering
\raggedright
vbox
varwidth
hbox
答案1
看来这只发生在 xetex 上。
您可以通过将 exhyphenpenalty 设置为最大值来防止连字
\documentclass[11pt]{article}
\parindent=0pt
\begin{document}
\setbox0=\hbox{Hello-World}
\setbox2=\vbox{\hsize=\wd0 Hello-World} \box2
\setbox2=\vbox{\hsize=\wd0 \raggedright Hello-World} \box2
\setbox2=\vbox{\hsize=\wd0 \centering Hello-World} \box2
\setbox2=\vbox{\hsize=\wd0 \raggedleft Hello-World} \box2
\setbox0=\hbox{Dest-Addr}
\setbox2=\vbox{\hsize=\wd0 Dest-Addr} \box2
\setbox2=\vbox{\hsize=\wd0 \raggedright \exhyphenpenalty10000 Dest-Addr} \box2
\setbox2=\vbox{\hsize=\wd0 \centering \exhyphenpenalty10000 Dest-Addr} \box2
\setbox2=\vbox{\hsize=\wd0 \raggedleft \exhyphenpenalty10000 Dest-Addr} \box2
\end{document}