使用 stix 包时粗体字符会出现阴影

使用 stix 包时粗体字符会出现阴影

我正在尝试使用 stix 包在伪代码中排版符号。我尝试过,\boldsymbol但这并没有使字符变粗。我设法使用 bm 包使字符变粗,但出现了奇怪的阴影(见下图)。这是 MWE:

\documentclass[preview]{standalone}

\usepackage[]{stix}
\DeclareSymbolFont{letters}{OML}{ztmcm}{m}{it}
\DeclareSymbolFont{greeksymbols}{LS1}{stix}{m}{it}
\DeclareMathSymbol{\chi}{\mathord}{greeksymbols}{"1F}

\usepackage{bm}
\newcommand{\bs}[1] {\bm{#1}}

%\newcommand{\bs}[1] {\boldsymbol{#1}}

\usepackage[noend]{algpseudocode}

\begin{document}
  \begin{algorithmic}[0]
    \Function{getLocalArrays}{$w$}
      \State{$\left\{ \bs k, \bs f , \Omega \right\} \gets \bs \chi$}    
    \EndFunction
  \end{algorithmic}
\end{document}

在此处输入图片描述

答案1

因为我知道你想要的是w的风格mathptmx(或类似的),所以我猜想这newtxmath会比旧的 更好地支持粗体字母mathptmx。所以我搜索了newtxmath.sty字母和粗体调用。

\documentclass[preview]{standalone}

\usepackage[]{stix}
%\DeclareSymbolFont{letters}{OML}{ztmcm}{m}{it}% mathptmx
\DeclareSymbolFont{letters}{OML}{ntxmi}{m}{it}% newtxmath
\SetSymbolFont{letters}{bold}{OML}{ntxmi}{b}{it}% newtxmath

\DeclareSymbolFont{greeksymbols}{LS1}{stix}{m}{it}% stix
\SetSymbolFont{greeksymbols}     {bold}{LS1}{stix}     {b}{it}
\DeclareMathSymbol{\chi}{\mathord}{greeksymbols}{"1F}

\usepackage{bm}
\newcommand{\bs}[1] {\bm{#1}}

%\newcommand{\bs}[1] {\boldsymbol{#1}}

\usepackage[noend]{algpseudocode}

\begin{document}
  \begin{algorithmic}[0]
    \Function{getLocalArrays}{$w$}
      \State{$\left\{ \bs k , \bs f , \Omega \right\} \gets \bs \chi + \bs w$}    
    \EndFunction
  \end{algorithmic}
\end{document}

在此处输入图片描述

答案2

主要问题是

  1. 字体ztmcm没有粗体变体
  2. 你没有为greekletters符号字体声明粗体版本

只是因为不喜欢“w”而重新声明letters符号字体似乎是一个错误的选择:相反,应该这样做。

\documentclass[varwidth,border=4]{standalone}
\usepackage{amsmath}
\usepackage[]{stix}
\usepackage[noend]{algpseudocode}

\newcommand{\bs}[1]{\bm{#1}}

\DeclareSymbolFont{otherletters}{OML}{ztmcm}{m}{it}
\DeclareMathSymbol{w}{\mathalpha}{otherletters}{`w}

\usepackage{bm}


\begin{document}
  \begin{algorithmic}[0]
    \Function{getLocalArrays}{$w$}
      \State{$\{ \bs{k}, \bs{f}, \Omega \} \gets \bs{\chi}+\chi$}
    \EndFunction
  \end{algorithmic}
\end{document}

在此处输入图片描述

正如您从图中看到的,第一个字是粗体的。

答案3

我建议使用unicode-math以避免所有字体问题。 在此处输入图片描述

XeLuaLatex 进行编译。

\documentclass[preview]{standalone}

\usepackage{unicode-math}
\setmathfont{STIX Two Math}
%\DeclareSymbolFont{letters}{OML}{ztmcm}{m}{it}% mathptmx
\DeclareSymbolFont{letters}{OML}{ntxmi}{m}{it}% newtxmath
\SetSymbolFont{letters}{bold}{OML}{ntxmi}{b}{it}% newtxmath


\newcommand{\bs}[1] {\ensuremath{\symbf{#1}}}

\usepackage[noend]{algpseudocode}

\begin{document}
  \begin{algorithmic}[0]
    \Function{getLocalArrays}{$w$}
      \State{$\left\{ \bs k , \bs f , \Omega \right\} \gets \symbf{\chi}+\chi+\symbfup{\chi} + \bs w$}    
    \EndFunction
  \end{algorithmic}
\end{document}

相关内容