Usando o símbolo Computer Modern \int, com fonte matemática txfonts

Usando o símbolo Computer Modern \int, com fonte matemática txfonts

Eu gostaria de usar o padrão \inte o \gammaupdo txfontspacote. Como posso misturar esses símbolos?

MWE:

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

Responder1

Resposta acidental :-)

O txfontspacote está obsoleto e geralmente você pode substituí-lo por newtxtext(para as fontes de texto) e newtxmath(para, você adivinhou, as fontes matemáticas). No entanto, o \intsímbolo para newtxmathé bastante semelhante ao da Computer Modern, então pode funcionar para você. Aqui está uma comparação entre eles (da esquerda para a direita: txfonts, Computer Modern e newtxmath):

insira a descrição da imagem aqui

\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}

Para encontrar os símbolos é preciso pesquisar um pouco nas fontes (pelo menos foi assim que fiz; pode haver uma maneira melhor).

\cmrint

A definição dos símbolos do Computer Modern pode ser encontrada em fontmath.ltx(é onde as fontes matemáticas LaTeX são inicializadas. Você pode encontrar esse arquivo executando kpsewhich fontmath.ltxem um terminal). Procurando \intno código você verá que ele está definido como:

    \DeclareRobustCommand\int{\intop\nolimits}

o que significa que \inté apenas \intop\nolimits( \nolimitsé uma primitiva TeX) e \intopé definido logo acima com:

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

o que significa que é um \mathop(operador) retirado do número do slot "52(que é hexadecimal 0x52) da largesymbolsfonte. Finalmente, a largesymbolsfonte é declarada no início de fontmath.ltxcom:

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

o que significa codificação OMX, família cmex, série m(edium), forma n(ormal).

Para fazer o exemplo acima acabei de renomear largesymbolspara largesymbolscmre \int(op)para \cmrint(op)evitar conflitos.

\txint

O processo é semelhante, exceto que em vez de olhar fontmath.ltxvamos olhar txfonts.sty(use kpsewhich txfonts.stypara encontrar o arquivo). Embora txfonts.stynão redefina \int, então a definição docomandoé igual ao original do LaTeX. O txfontsque redefine é a largesymbolsfonte matemática:

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

então, para obter a txfontsversão, \intprecisamos declarar essa fonte e fazer uma cópia separada que use txexem vez de 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

Este é semelhante ao acima. Em txfonts.styvocê descobrirá que \iinté definido com:

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

que usa largesymbolsA, definido anteriormente com:

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

então você pode adaptar (para evitar o \re@Declare...comando definido nesse pacote):

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

Outra maneira de encontrar um glifo em uma fonte é usando o fonttablepacote, por exemplo, com {U}{txexa}{m}{n}:

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

quais saídas:

insira a descrição da imagem aqui

que mostra o glifo integral duplo no slot 33 dessa fonte.

\cmriint

A fonte Computer Modern não possui um glifo integral duplo, portanto a abordagem acima não funcionará. Mas há outras opções:

amsmathemula (até) 4 sinais integrais com \MultiIntegral, que é definido:

\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
}

e então \iinté definido como:

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

No entanto, isso usará o \intopglifo padrão. Para alterar a fonte você pode criar uma cópia (ou até mesmo redefinir) \MultiIntegralque use (digamos) o \cmrintopdefinido acima.

Você também pode usar oesintpacote, que define vários tipos de sinais integrais usando (um clone do) glifo Computer Modern. Para usar o sinal integral Computer Modern com outros pacotes de fontes, você só precisa carregar esintdepois de todos os pacotes de fontes (e depois amsmath).

informação relacionada