是否可以在不使用或的情况下更改chemfig
使用的字体(例如 Helvetica),但在整个文档中保留正常的数学字体?XeLaTeX
LuaTeX
我尝试\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}
输出: