我想使用(通过选项)eulerpx
提供的替代帽子重音。为此,我从(另请参阅eulervm
euler-hat-accent
eulervm.sty
这个答案)问题在于重新定义会弄乱括号:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathtools,newpxtext,eulerpx}
\DeclareSymbolFont{symbols}{U}{zeus}{m}{n}
\DeclareMathAccent{\hat}{\mathalpha}{symbols}{222}
\begin{document}
$\hat{a}\qquad(b)$
\end{document}
如果不重新定义帽子重音符(DeclareSymbolFont,DeclareMathAccent
),则输出符合预期:没有省略的括号,也没有多余的冒号,但当然不会获得修改后的帽子。
我是否以错误的方式重新定义了帽子重音? 有没有办法避免这种奇怪的行为?
答案1
您的第一个命令\DeclareSymbolFont{symbols}{U}{zeus}{m}{n}
定义了数学符号系列symbols
,但 eulerpx 已经用这个名字定义了一个符号系列,所以您将其覆盖。但这是括号的来源系列,因此它们被替换为新symbols
字体在相应位置提供的符号,例如冒号。您可以通过为系列选择另一个名称来解决此问题:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathtools,newpxtext,eulerpx}
\DeclareSymbolFont{zeussymbols}{U}{zeus}{m}{n}
\DeclareMathAccent{\hat}{\mathalpha}{zeussymbols}{222}
\begin{document}
$\hat{a}\qquad(b)$
\end{document}
答案2
eulerpx
与此相关的是,现代工具链中最接近的等价物是\usepackage[math-style=upright]{unicode-math}
使用 Palatino 或其克隆体(例如 Pagella)作为罗马字体,可选使用 Optima 或其克隆体(例如 Classico)作为无衬线字体,使用newpx
克隆体(例如 Asana)作为主要数学字体,然后是 Neo Euler 的部分。
以下在数学模式下加载 Neo Euler 的所有组合重音:
\setmathfont[Scale = MatchLowercase,
range={up,bfup,cal,bfcal,frak,bffrak,
"0301-"030F,"0311,"0323-"0325,"032E-"0332,"033B}
]{euler.otf}