切换数学字体并恢复正常图形会失败吗?

切换数学字体并恢复正常图形会失败吗?

对于我当前的文档,我想使用普通衬线字体作为正文。其他来源和我自己的大部分图表都使用无衬线字体 (TeX Gyre Heros)。现在我想使用pgfplots这些字体创建图形,但将正文中的数学保留为普通字体。使用以下方法实现了类似的效果sansmath 这里但这并不能切换到完全不同的字体,正如我在这里尝试的那样。我以为unicode-math我可以轻松地来回切换,但切换回去的部分失败了。

我的 MWE 如下所示:

\documentclass{article}

\usepackage{pgfplots}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}

\begin{document}

\begin{figure}
    \sffamily
    \setmathfont{TeX Gyre Heros}  
    \setmathfont[range=\mathit/{latin, Latin, greek, Greek}]{texgyreheros-italic.otf} 
    \begin{tikzpicture}
        \begin{axis}
            \addplot [blue] coordinates { (0,0) (1,2) };
        \end{axis}
        \node at (4, 1) { $\Delta T_{\mathrm S}$};
        \node at (2, 5) {normal sans serif text};
    \end{tikzpicture}
    \rmfamily
    \setmathfont{Latin Modern Math}  
\caption{Some caption text.}
\end{figure}

Normal text in Latin Modern Roman here but math fails unless the next line is used.
%\setmathfont{Latin Modern Math} 
\begin{equation}
a^2 + b^2 = c^2
\end{equation}

\end{document}

并给出以下输出:

在此处输入图片描述 感谢您提供任何提示,为什么切换回来会失败,以及如何改进的总体评论。

答案1

正如评论中提到的,TeX Gyre Heros这不是数学字体,这就是导致奇怪错误的原因。但是,您可以使用包来mathastext克服这个问题。下面演示了如何使用lualatex。序言中的顺序至关重要。

示例输出

\documentclass{article}

\usepackage{pgfplots}\usepackage[no-math]{fontspec}
\usepackage{lmodern}
\usepackage[LGRgreek]{mathastext}
\setmainfont{TeX Gyre Heros}\Mathastext[Heros]
\setmainfont{Latin Modern Roman}

\pgfplotsset{compat=1.11}

\begin{document}

\begin{figure}
  \centering
  \MTversion{Heros}
  \begin{tikzpicture}
    \begin{axis}[font=\sffamily]
      \addplot [blue] coordinates { (0,0) (1,2) };
    \end{axis}
    \node at (4, 1) { $\Delta T_{\mathrm S}$}; \node at (2, 5)
    {normal sans serif text};
  \end{tikzpicture}
  \MTversion{normal}
  \caption{Some caption text.}
\end{figure}

Normal text in Latin Modern Roman here but math fails unless the next
line is used.
\begin{equation}
  a^2 + b^2 = c^2
\end{equation}

\end{document}

相关内容