XeLaTeX 中的 \mathellipsis 與 mathspec

XeLaTeX 中的 \mathellipsis 與 mathspec

遵循解決方案xetex/mathspec 中數學模式下的標點符號XeTeX/mathspec 標點符號問題,我正在對 mathspec 進行調整,以強制 XeTeX 使用適當字體的標點符號。然而,當省略號後面跟有逗號時,其間距就無法正確完成。 LaTeX當然沒有問題。 MWE(pdftex 在 ^^^^ 字元上給出錯誤,但這並不重要;舊標準是免費字體):

\documentclass{article}
\usepackage{amsmath}
\usepackage{iftex}
\ifXeTeX
\usepackage{mathspec}
\defaultfontfeatures{Mapping=tex-text}
\setallmainfonts{Old Standard}
\makeatletter
\def\eu@MathPunctuation@symfont{Latin:m:n}
\DeclareMathSymbol{,}{\mathpunct}{\eu@MathPunctuation@symfont}{`,}
\DeclareMathSymbol{.}{\mathord}{\eu@MathPunctuation@symfont}{`.}
\XeTeXDeclareMathSymbol{^^^^2026}{\mathinner}%
        {\eu@MathPunctuation@symfont}{"2026}[\mathellipsis]
\makeatother
\fi
\begin{document}
$\left<i_1, i_2,\ldots,i_n\right>$
\end{document}

有人對該怎麼做有建議嗎?

答案1

也許這就是您正在尋找的:

\documentclass{article}
\usepackage{amsmath}
\usepackage{mathspec}
\usepackage{newunicodechar}

\defaultfontfeatures{Ligatures=TeX}% not needed with last version of fontspec
\setallmainfonts{Old Standard}

\makeatletter
\def\eu@MathPunctuation@symfont{Latin:m:n}
\DeclareMathSymbol{,}{\mathpunct}{\eu@MathPunctuation@symfont}{`,}
\DeclareMathSymbol{.}{\mathord}{\eu@MathPunctuation@symfont}{`.}
\XeTeXDeclareMathSymbol{^^^^2026}{\mathinner}%
        {\eu@MathPunctuation@symfont}{"2026}[\mathellipsis]
\AtBeginDocument{\renewcommand{\mathellipsis}{\mathinner…}}
\newunicodechar{…}{\ifmmode\mathinner…\else…\fi}
\makeatother

\begin{document}
Here… again

Here\ldots{} again

$\langle i_1, i_2,\ldots,i_n\rangle$

$\langle i_1, i_2,\dots,i_n\rangle$ % better!

$\langle i_1, i_2,…,i_n\rangle$

\end{document}

請注意,未定義為\mathinner,而\mathellipsis只是定義(預設)。所以我重新定義了\mathellipsis的動作,所以它在所有情況下都應該是正確的。

在此輸入影像描述

相關內容