Computer Modern \int シンボルと txfonts 数学フォントを使用する

Computer Modern \int シンボルと txfonts 数学フォントを使用する

標準\intとパッケージ\gammaupの を使用したいと思いますtxfonts。これらのシンボルを混在させるにはどうすればよいですか?

MWE:

\documentclass{article}
\usepackage{txfonts}
\begin{document}
    Not the int I like, but the gammaup I do like:
    \[\int \gammaup\]
\end{document}

答え1

偶然の答えです:-)

このtxfontsパッケージは廃止されており、通常はnewtxtext(テキスト フォントの場合) およびnewtxmath(数式フォントの場合) に置き換えることができます。ただし、\intのシンボルはnewtxmathComputer Modern のシンボルにかなり似ているため、使用できる可能性があります。次に、これらのシンボルの比較を示します (左から右に、txfonts、Computer Modern、newtxmath)。

ここに画像の説明を入力してください

\documentclass{article}
\usepackage{newtxtext}% For text font
\usepackage{newtxmath}
% From txfonts
\DeclareSymbolFont{largesymbolstx}{OMX}{txex}{m}{n}
\DeclareMathSymbol{\txintop}{\mathop}{largesymbolstx}{"52}
\DeclareRobustCommand\txint{\txintop\nolimits}
% From Computer Modern
\DeclareSymbolFont{largesymbolscmr}{OMX}{cmex}{m}{n}
\DeclareMathSymbol{\cmrintop}{\mathop}{largesymbolscmr}{"52}
\DeclareRobustCommand\cmrint{\cmrintop\nolimits}
\begin{document}
  \[\txint \cmrint \int \gammaup\]
\end{document}

シンボルを見つけるには、ソースを少し調べる必要があります (少なくとも私はそのようにしました。もっと良い方法があるかもしれません)。

\cmrint

Computer Modern のシンボルの定義は、にあります(LaTeX の数式フォントが初期化される場所です。ターミナルでfontmath.ltx実行すると、そのファイルを見つけることができます)。コード内を検索すると、次のように定義されていることがわかります。kpsewhich fontmath.ltx\int

    \DeclareRobustCommand\int{\intop\nolimits}

つまり、\int\intop\nolimits(\nolimitsは TeX プリミティブ) であり、\intop上記で次のように定義されます。

\DeclareMathSymbol{\intop}{\mathop}{largesymbols}{"52}

これは、フォントのスロット番号(16 進数 0x52)\mathopから取得される (演算子) であることを意味します。最後に、フォントは次のように の先頭で宣言されます。"52largesymbolslargesymbolsfontmath.ltx

\DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n}

これは、エンコーディングOMX、ファミリーcmex、シリーズm(edium)、形状n(ormal) を意味します。

上記の例を作成するには、競合を避けるために を に、をlargesymbolsに名前変更するだけです。largesymbolscmr\int(op)\cmrint(op)

\txint

プロセスは似ていますが、 を調べる代わりに をfontmath.ltx調べますtxfonts.stykpsewhich txfonts.styファイルを見つけるために を使用します)。txfonts.styは を再定義しないので\int、 の定義は指示LaTeXのオリジナルと同じです。txfonts再定義するのはlargesymbols数式フォントです。

\DeclareSymbolFont{largesymbols}{OMX}{txex}{m}{n}

したがって、txfontsのバージョンを取得するには、そのフォントを宣言し、ではなく\intを使用する別のコピーを作成する必要があります。txexcmex

\DeclareSymbolFont{largesymbolstx}{OMX}{txex}{m}{n} % declare a TX copy of largesymbols
\DeclareMathSymbol{\txintop}{\mathop}{largesymbolstx}{"52} % declare a TX copy of \intop that uses the above
\DeclareRobustCommand\txint{\txintop\nolimits}

\txiint

これは上記と似ています。 では、txfonts.styは次\iintのように定義されています。

\re@DeclareMathSymbol{\iintop}{\mathop}{largesymbolsA}{33}
   \def\iint{\iintop\nolimits}

これはlargesymbolsA、次のように以前に定義された を使用します。

\DeclareSymbolFont{largesymbolsA}{U}{txexa}{m}{n}

そのため、次のように適応できます (\re@Declare...そのパッケージで定義されているコマンドを回避するため):

\DeclareSymbolFont{largesymbolstxA}{U}{txexa}{m}{n}
\DeclareMathSymbol{\txiintop}{\mathop}{largesymbolstxA}{"21} % 33 (decimal) = "21 (hexadecimal)
\DeclareRobustCommand\txiint{\txiintop\nolimits}

フォント内のグリフを見つける別の方法は、fonttableパッケージを使用することです。たとえば、次のようにします{U}{txexa}{m}{n}

\documentclass{article}
\usepackage{fonttable}
\begin{document}
\xfonttable{U}{txexa}{m}{n}
\end{document}

出力は次のようになります:

ここに画像の説明を入力してください

これは、そのフォントのスロット 33 にある二重積分グリフを示しています。

\cmriint

Computer Modern フォントには二重の整数グリフがないので、上記の方法は機能しません。ただし、他のオプションがあります。

amsmathは、次のように定義される4 個までの積分記号をエミュレートします\MultiIntegral

\newcommand{\MultiIntegral}[1]{%
  \edef\ints@c{\noexpand\intop
    \ifnum#1=\z@\noexpand\intdots@\else\noexpand\intkern@\fi
    \ifnum#1>\tw@\noexpand\intop\noexpand\intkern@\fi
    \ifnum#1>\thr@@\noexpand\intop\noexpand\intkern@\fi
    \noexpand\intop
    \noexpand\ilimits@
  }%
  \futurelet\@let@token\ints@a
}

そして次\iintのように定義されます:

\ams@newcommand{\iint}{\DOTSI\protect\MultiIntegral{2}}

ただし、これはデフォルトのグリフを使用します。フォントを変更するには、上記で定義したものを使用する\intopコピーを作成 (または再定義) します。\MultiIntegral\cmrintop

また、esintパッケージは、Computer Modern グリフ (のクローン) を使用して、いくつかの種類の積分記号を定義します。Computer Modern 積分記号を他のフォント パッケージで使用するには、esintすべてのフォント パッケージの後に (および の後にamsmath) をロードするようにしてください。

関連情報