我认为字体由包裹cochineal
非常棒,我想用它来写文档,因此我在序言中使用了以下内容:
\usepackage[osf, p]{cochineal}
\usepackage[cochineal]{newtxmath}
但是我不喜欢数学字体的一项特殊更改,即斜体更改的方式f
。请看以下行中的差异\textit{f} versus $f$
:
据我所知,这是数学模式下小写斜体字母的三处变化之一:字母v
和w
也被更改为更好地与希腊字母 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
答案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}
这存在严重问题。特别是,\mathrm{f}
严格以斜体显示,例如在末尾\liminf
有一个刺眼的斜体。f
因此,最好简单地定义\newcommand\f{\mathit{f}}
并简单地写出来\f(x)
而不是f(x)
。