texgyrepagella 与 stmaryrd 一起使用时出现重叠

texgyrepagella 与 stmaryrd 一起使用时出现重叠

考虑在以下代码上运行 xelatex 或 lualatex:

\documentclass[compsoc]{IEEEtran}
\usepackage{unicode-math}
\setmathfont[Extension=.otf]{texgyrepagella-math}
%\usepackage{mleftright} % no better with\mleft and \mright
\usepackage{stmaryrd}
\begin{document}
\(\left\lBrack\check f\right\rBrack\)
\(\left\llbracket\check f\right\rrbracket\)
\end{document}

存在两个问题:

  1. 第一次出现时,f 下方的空间太多:括号的缩放程度有点太大。
  2. 第二次出现时,f 上的抑扬顿号与右双括号重叠。

有没有更好的方法来排版 ⟦f̌ ⟧ ?我们需要 (xe/lua)-latex、Tex Gyre Pagella 和 [10pt,journal,compsoc]IEEEtran (上面已缩短)。

我希望解决方案是自动化的,即通过宏,比如 \addDoubleBrackets{x},它在 x 周围添加括号,并自动根据 x 进行缩放和间距处理。

上面的 xelatex 输出

答案1

如果重音的定位不够理想,你可以添加\,以下几个地方:

\documentclass[compsoc]{IEEEtran}
\usepackage{unicode-math}
\setmathfont[Extension=.otf]{texgyrepagella-math}
\usepackage{stmaryrd}

\begin{document}

\(\lBrack\,\check{f}\,\rBrack\)
\(\lBrack\,\check{f}\rBrack\)

\(\bigl\lBrack\,\check{f}\,\bigr\rBrack\)
\(\bigl\lBrack\,\check{f}\bigr\rBrack\)

\(\llbracket\,\check{f}\,\rrbracket\)

\end{document}

在此处输入图片描述

我认为没有必要增加括号的大小,特别是如果其他符号被放在同一行的括号中。

答案2

你可以尝试libertinusmath-regular类似 Pagella 的

\documentclass[compsoc]{IEEEtran}
\usepackage{stmaryrd}
\usepackage{unicode-math}
\setmathfont[Extension=.otf]{libertinusmath-regular}
\begin{document}
    \(\left\lBrack\check f\right\rBrack\)
    \(\left\llbracket\check f\right\rrbracket\)
\end{document}

在此处输入图片描述

相关内容