使用双引号与 mathspec 结合的快捷方式

使用双引号与 mathspec 结合的快捷方式

笔记:我无法具体说出两个冲突的软件包中的哪个版本修复了该问题,但自 2016 年起mathpec不再polyglossia显示该问题。

基本上,我遇到了同样的错误在这里回答Andrey Vihrov 建议的解决方法使我能够重新编译该文档。现在的问题是,ngerman 包定义的任何简写(最明显的是非中断连字符"~)现在都已被禁用,我看到了美式右引号的组合,后面跟着一个非中断空格,而本应有一个非中断连字符。

有什么方法可以保留简写定义,或者将其重新定义为其他东西(类似于\nbhy突然想到的东西)?

我正在使用 TeXLive 提供的 XeLaTeX。

答案1

"这似乎有效。基本上,我们正在覆盖数学模式中活动的含义。

\documentclass{article}

\usepackage{mathspec}
\setallmainfonts[Ligatures=TeX,Numbers={Lining,Proportional}]{Linux Libertine O}

\usepackage{polyglossia}
\setmainlanguage[babelshorthands,spelling=new]{german}

\makeatletter
\begingroup\lccode`~=`"
\lowercase{\endgroup
  \everymath{\let~\eu@active@quote}
  \everydisplay{\let~\eu@active@quote}
}
\makeatother

\begin{document}
a"~b

\begin{equation}
f(x)=\sigma
\end{equation}
\end{document}

我不会使用这个ngerman包,它甚至对于 LaTeX 来说也已经过时了。

babel如果您没有最新版本的 Polyglossia,您也可以使用。

\documentclass{article}

\usepackage{mathspec}
\setallmainfonts[Ligatures=TeX,Numbers={Lining,Proportional}]{Linux Libertine O}

\usepackage[ngerman]{babel}

\makeatletter
\begingroup\lccode`~=`"
\lowercase{\endgroup
  \everymath{\let~\eu@active@quote}
  \everydisplay{\let~\eu@active@quote}
}
\makeatother

\begin{document}
a"~b

\begin{equation}
f(x)=\sigma
\end{equation}
\end{document}

相关内容