標準\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
のシンボルはnewtxmath
Computer 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
から取得される (演算子) であることを意味します。最後に、フォントは次のように の先頭で宣言されます。"52
largesymbols
largesymbols
fontmath.ltx
\DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n}
これは、エンコーディングOMX
、ファミリーcmex
、シリーズm
(edium)、形状n
(ormal) を意味します。
上記の例を作成するには、競合を避けるために を に、をlargesymbols
に名前変更するだけです。largesymbolscmr
\int(op)
\cmrint(op)
\txint
プロセスは似ていますが、 を調べる代わりに をfontmath.ltx
調べますtxfonts.sty
(kpsewhich txfonts.sty
ファイルを見つけるために を使用します)。txfonts.sty
は を再定義しないので\int
、 の定義は指示LaTeXのオリジナルと同じです。txfonts
再定義するのはlargesymbols
数式フォントです。
\DeclareSymbolFont{largesymbols}{OMX}{txex}{m}{n}
したがって、txfonts
のバージョンを取得するには、そのフォントを宣言し、ではなく\int
を使用する別のコピーを作成する必要があります。txex
cmex
\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
) をロードするようにしてください。