与欧拉数学一起使用的替代方法

与欧拉数学一起使用的替代方法

我使用 Euler Math 字体 ( classicthesis)。但\otimes命令生成的内容看起来像 CM。我是否可以加载其他包来获得更合适的内容?

答案1

您可以使用图片模式来修复它:

\documentclass{article}
\usepackage{eulervm,pict2e}

\DeclareRobustCommand{\eulerosym}[1]{%
  \mathbin{\mathpalette\eulerosymaux{#1}}%
}

\makeatletter
\newcommand{\eulerosymaux}[2]{%
  \vcenter{\hbox{%
    \sbox\z@{$\m@th#1#2$}%
    \dimen@=\ht\z@
    \advance\dimen@ \dp\z@
    \unitlength=.5\dimen@
    \kern.085\dimen@
    \begin{picture}(2,2)
    \linethickness{.4pt}
    \put(1,1){\makebox(0,0){$\m@th#1#2$}}
    \put(1,1){\circle{2}}
    \end{picture}%
    \kern.085\dimen@
  }}%
}
\makeatother


\begin{document}
$\frac{1}{1}\otimes\oplus\times+$ \fboxsep=0pt \fbox{$\otimes$} \fbox{$\eulerosym{\times}$}

$a\otimes b$ $a\oplus b$

$a\eulerosym{\times}b$ $a\eulerosym{+}b$

$\eulerosym{\times}_{\eulerosym{\times}_{\eulerosym{\times}}}$
$\eulerosym{+}_{\eulerosym{+}_{\eulerosym{+}}}$

$a\times b \eulerosym{\times} c$
$a+b\eulerosym{+} c$
\end{document}

然后就是重新定义\otimes\oplus使用新宏的问题。请注意,第二级下标中的带圆圈的加号看起来是错误的;我认为它无法解决,因为该大小的加号不受正方形的限制。

在此处输入图片描述

答案2

您喜欢该字体的 \times - 符号吗?(基于:如何给操作符加上圆圈?

\documentclass{article}

\usepackage{eulervm}

\makeatletter
\newcommand\incircbin
{%
  \mathpalette\@incircbin
}
\newcommand\@incircbin[2]
{%
  \mathbin%
  {%
    \ooalign{\hidewidth$#1#2$\hidewidth\crcr$#1\bigcirc$}%
  }%
}
\newcommand{\fauxtimes}{\incircbin{\times}}
\makeatother
\begin{document}

$$a\otimes b$$
$$a\fauxtimes b$$

\end{document}

在此处输入图片描述


编辑:重新缩放(需要 graphicx 包)

\newcommand{\fauxtimes}{\raisebox{0.1345ex}{\scalebox{0.7421}{$\incircbin{\times}$}}}

仿时间缩放

答案3

classicthesis带有该选项的软件包将euler文本字体设置为 Palatino,将数学字体设置为 AMS Euler。AMS Euler 不附带符号\otimes\oplus (AMS 字体指南第 32 页),所以用 中eulervm的代替cmex10

有几种数学字体设计为与 Palatino 相匹配,并且包含这些符号。这些包括系列、和mathpplemathpazo尽管今天您可能会使用基于 Young Ryu 设计的较新的软件包。我将举两个简单的例子。pxfontsnewpx

在现代工具链中

Palatino、AMS Euler 和newpx均有 OpenType 格式的免费克隆,可通过 来使用unicode-math。我在这里没有定义匹配的无衬线或等宽字体,但 Optima(或其克隆 URW Classico)和 Inconsolata 是匹配良好的字体。

\documentclass[varwidth, preview]{standalone}

\usepackage[math-style=upright]{unicode-math}

\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{TeX Gyre Pagella}[
  Scale = 1.0,
  Ligatures = {Common, Discretionary, TeX},
  Numbers = OldStyle ]
\setmathfont{Asana Math}
\setmathfont[range = { up/{Latin,latin,Greek,greek},
                       bfup/{Latin,latin,Greek,greek},
                       cal, bfcal, frak, bffrak },
             script-features = {},
             sscript-features = {}
            ]{Neo Euler}

\begin{document}
\( a \otimes_{\otimes_\otimes} b, \alpha \oplus_{\oplus_\oplus} \gamma \)
\end{document}

使用 Neo Euler 和 Asana Math 的示例

pxfonts该示例将文本字体设置为 Palatino 克隆,仅对数学模式下的字母使用 Neo Euler,对其他所有内容(包括数字和运算符)使用 Asana Math(基于)。

如果您希望文档中欧拉值更多或更少,请编辑 range =中的语句\setmathfont。例如,如果您将\otimes和添加\oplus到 中range=,您将得到以下结果:

\setmathfont[range = { up/{Latin,latin,Greek,greek},
                       bfup/{Latin,latin,Greek,greek},
                       cal, bfcal, frak, bffrak,
                       \otimes, \oplus },
             script-features = {},
             sscript-features = {}
            ]{Neo Euler}

Neo Euler 示例

由于 Neo Euler 是一种不完整的字体,不再维护,而且它的一些符号非常独特,因此最好使用该range=选项加载 Neo Euler。在加载之前加载一个后备数学字体,就像我在这里加载 Asana Math 一样。Libertinus Math(也是由 Khaled Hosny 设计的)也是另一个不错的选择。这样,如果您的文档使用 Neo Euler 缺少的任何符号,您的后备字体将提供它们。

在 PDFLaTeX 中

eulerpx包将 中的数学符号和数字newpxmath与 中的数学字母结合在一起euler。它是最新的,截至 2018 年仍在维护,可能是获得所需结果的最简单方法。

\documentclass[varwidth, preview]{standalone}

\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[utf8]{inputenc} % The default since 2018
\usepackage{newtxtext}
\usepackage[utf8]{eulerpx}
% Other font packages that might be useful to load: classico (for sans-serif),
% inconsolata (typewriter), mathalfa and isomath (additional math alphabets).

\begin{document}
\( a \otimes_{\otimes_\otimes} b, \alpha \oplus_{\oplus_\oplus} \gamma \)
\end{document}

eulerpx 中的示例

传统 NFSS 中的 Kitbashing

如果您尝试使用 PDFLaTeX 中的旧包,或者(据我所知)classicthesis文档类本身,您可能被迫重新定义单个宏。

如有必要,您可以尝试从pxfonts或加载单个符号newpxmath。此示例加载eulervmnewpxmath然后重新定义\oplus\otimes使用 中的字体newpxmath。(它没有最有效地利用数学字母表。)

\documentclass[varwidth, preview]{standalone}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} % The default since 2018
\usepackage{newtxtext, newtxmath}

% Other font packages that might be useful to load: classico (for sans-serif),
% inconsolata (typewriter), mathalfa and isomath (additional math alphabets).

\usepackage{eulervm}

%% From newpxmath.sty:
% \DeclareFontEncoding{LMS}{}{}
% \DeclareFontSubstitution{LMS}{npxsy}{m}{n}
 \DeclareSymbolFont{newpxsym}{LMS}{npxsy}{m}{n}
 \SetSymbolFont{newpxsym}{bold}{LMS}{npxsy}{b}{n}

\DeclareMathSymbol{\oplus}{\mathbin}{newpxsym}{8}
   \let\circledplus\oplus
\DeclareMathSymbol{\otimes}{\mathbin}{newpxsym}{10}
   \let\circledtimes\otimes

\begin{document}
\( a \otimes_{\otimes_\otimes} b, \alpha \oplus_{\oplus_\oplus} \gamma \)
\end{document}

使用 eulervm 和 newpx 的示例

相关内容