在 LaTeX 上更改 chemfig 字体

在 LaTeX 上更改 chemfig 字体

是否可以在不使用或的情况下更改chemfig使用的字体(例如 Helvetica),但在整个文档中保留正常的数学字体?XeLaTeXLuaTeX

我尝试\usepackage[helvet]{sfmath}并重新定义\printatom\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}但当然文档中的所有数学文本都会切换到 Helvetica 字体(正如预期的那样):

\documentclass{article}
\usepackage{chemfig}
\usepackage[helvet]{sfmath}

\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}

\begin{document}
    Text text text
    \chemfig{-CO_2H}
    More text, and the following equation should use the normal math font $E = mc^2$
\end{document}

答案1

根据@marmot 的建议我最终做了以下事情:

\documentclass{article}
\usepackage{chemfig}

\makeatletter
\def\Hv@scale{.95}
\makeatother
\DeclareMathAlphabet{\foo}{OT1}{phv}{m}{n}
\renewcommand*\printatom[1]{\ensuremath{\foo{#1}}}

\begin{document}
    Text text text\\

    \chemfig{-CO_2H}\\

    More text, and the following equation should use the normal math font $E = mc^2$. Serif in math works with the default font as well $\mathsf{CO_2H}$.
\end{document}

这是所需的输出。我不确定是否存在它可能无法工作的情况,因为我真的不知道什么\DeclareMathAlphabet会起作用,但到目前为止它有效。任何评论、建议、基于此的正确答案,或关于它如何运作良好的解释,都将不胜感激。

输出: 在此处输入图片描述

答案2

根据@ralk912的回答和如何在文档中的一小部分文本中使用特定字体?我做了以下事情:

\documentclass{article}
\usepackage{chemfig}

\makeatletter
\def\Hv@scale{0.90}
\makeatother
\DeclareMathAlphabet{\foo}{OT1}{phv}{m}{n}
\renewcommand*\printatom[1]{\ensuremath{\foo{#1}}}

\newcommand*{\myfont}{\fontfamily{phv}\selectfont}
\DeclareTextFontCommand{\textHv}{\myfont}

\begin{document}

    Text in the default font. \textHv{Text in the new font.} Again text in the default font.\\

    \chemname{\chemfig{H_3C-CO_2H}}{acetic acid}\quad
    \chemname{\chemfig{H_3C-CO_2H}}{\textHv{acetic acid}}

    \bigskip

    Normal math font: $E = mc^2$. Serif in math with default font: $\mathsf{E = mc^2}$.
\end{document}

输出:

输出

相关内容