如何更改胭脂虫包中的默认数学模式“f”?

如何更改胭脂虫包中的默认数学模式“f”?

我认为字体由包裹cochineal非常棒,我想用它来写文档,因此我在序言中使用了以下内容:

\usepackage[osf, p]{cochineal}
\usepackage[cochineal]{newtxmath}

但是我不喜欢数学字体的一项特殊更改,即斜体更改的方式f。请看以下行中的差异\textit{f} versus $f$常规斜体和数学模式字母“f”的视觉差异

据我所知,这是数学模式下小写斜体字母的三处变化之一:字母vw也被更改为更好地与希腊字母 nu 区分开来。

我的问题是,我非常不喜欢这个新字母f。我知道这可能是设计师的风格选择,但我更喜欢斜倚的双尾 f。

我可以通过书写而不是仅仅 来强制将数学f显示为常规斜体,但这显然不是很方便。\mathit{f}f

如何改变f数学模式下小写字母的显示方式?


这里有一个用于重现此现象的最小文档:(使用 pdfTeX 编译)

\documentclass{article}

\usepackage[osf, p]{cochineal}
\usepackage[cochineal]{newtxmath}

\begin{document}
Comparison: \textit{f} versus $f$.

Default: $f(x + y) = f(2x) + f(2y) - 1$.

Forced italic: $\mathit{f}(x + y) = \mathit{f}(2x) + \mathit{f}(2y) - 1$.
\end{document}

答案1

声明一个新的数学符号字体​​。

\documentclass{article}

\usepackage[osf, p]{cochineal}
\usepackage[cochineal]{newtxmath}

\DeclareSymbolFont{cochinealit}{\encodingdefault}{\familydefault}{m}{it}
\DeclareMathSymbol{f}{\mathalpha}{cochinealit}{`f}
\DeclareSymbolFontAlphabet{\mathit}{cochinealit}

\begin{document}

Comparison: \textit{f} versus $f$. Also $f^2$.

Default: $f(x + y) = f(2x) + f(2y) - 1$.

Forced italic: $\mathit{f}(x + y) = \mathit{f}(2x) + \mathit{f}(2y) - 1$.

Beware: $ff+f\/f$

Math roman: $\mathrm{f}$

\end{document}

有一个小问题,如最后一行所示:f\/f如果f公式中出现两个连续的 ,则需要类似的功能。

在此处输入图片描述

答案2

在此处输入图片描述

\documentclass{article}
\showoutput
\usepackage[osf, p]{cochineal}
\usepackage[cochineal]{newtxmath}
\sbox0{$\mathit{abc}$}


\mathcode`f=\numexpr\mathcode`f+"700\relax

\begin{document}


Comparison: \textit{f} versus $f$.

Default: $f(x + y) = f(2x) + f(2y) - 1$.

Forced italic: $\mathit{f}(x + y) = \mathit{f}(2x) + \mathit{f}(2y) - 1$.

Forced roman: $\mathrm{f}(x + y) = \mathrm{f}(2x) + \mathrm{f}(2y) - 1$.
\end{document}

答案3

该包的最新版本newtxmath支持两个新选项,cochfcochrho将数学模式中的更改f为所请求的,并将更改\rho\rhoAlt

\documentclass{article}

\usepackage[p,osf]{cochineal}
\usepackage[cochf,cochrho,cochineal]{newtxmath}

\begin{document}
\emph{elf} and $f\in F$ and $\rho\rhoAlt$

\emph{effective} and $ff\in F$

\end{document}

alt f 和 rho

答案4

一个 hack 方法是将字母更改f为活动字符,但仅限于数学模式。这在这篇关于 TeX FAQ 的文章

我们通过插入以下内容来实现:

% Warning: there are serious issues with this; see below.
\begingroup
\lccode`~=`f
\lowercase{\endgroup
    \def~{\text{\textit{f}}}%
}%
\mathcode`f="8000

简而言之,这将f\text{\textit{f}}数学模式替换所有出现的单独字母。

这是一个完整的例子:

\documentclass{article}

\usepackage[osf, p]{cochineal}
\usepackage[cochineal]{newtxmath}


\begingroup
\lccode`~=`f
\lowercase{\endgroup
    \def~{\text{\textit{f}}}%
}%
\mathcode`f="8000

\begin{document}
Comparison: \textit{f} versus $f$.


Default: $f(x + y) = f(2x) + f(2y) - 1$.

Forced italic: $\mathit{f}(x + y) = \mathit{f}(2x) + \mathit{f}(2y) - 1$.
\end{document}

这将产生所需的结果:catcode 更改的结果

这存在严重问题。特别是,\mathrm{f}严格以斜体显示,例如在末尾\liminf有一个刺眼的斜体。f

因此,最好简单地定义\newcommand\f{\mathit{f}}并简单地写出来\f(x)而不是f(x)

相关内容