请考虑以下示例:
\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmonofont{NewCMMono10-Regular} % any other typewriter font would do
\begin{document}
\setlength{\parfillskip}{0pt plus 10pt}
\texttt{some text with whitespaces}
\texttt{some-text-with-whitespaces}
\end{document}
XeLaTeX 的结果是:
\setmonofont
如果在加载之前写入unicode-math
或者\usepackage{unicode-math}
删除该行,则不会发生这种情况。
由于 LuaLaTeX 不会发生这种情况,我认为这不是预期的行为?那么有什么方法可以解决这个问题吗?
答案1
不清楚为什么单词间距会变得灵活。不过,你可以修复这个缺陷。
\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmonofont{NewCMMono10-Regular}[
WordSpace={1,0,0},
]
\begin{document}
\setlength{\parfillskip}{0pt plus 10pt}
\texttt{some text with whitespaces}
\texttt{some-text-with-whitespaces}
\end{document}
答案2
设置空格拉伸和收缩的 fontdimen 参数 3 和 4 被设置为非零,unicode-math
这看起来像是一个错误,你可以强制它们回到 0pt,例如
\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmonofont{NewCMMono10-Regular} % any other typewriter font would do
\AddToHook{cmd/ttfamily/after}{%
\fontdimen3\font=0pt\relax
\fontdimen4\font=0pt\relax}
\begin{document}
\setlength{\parfillskip}{0pt plus 10pt}
\texttt{some text with whitespaces\showthe\fontdimen3\font}
\texttt{some-text-with-whitespaces}
\end{document}
但那不应该是必要的