Eu gostaria de usar o padrão \int
e o \gammaup
do txfonts
pacote. 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 txfonts
pacote 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 \int
sí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
):
\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.ltx
em um terminal). Procurando \int
no 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 largesymbols
fonte. Finalmente, a largesymbols
fonte é declarada no início de fontmath.ltx
com:
\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 largesymbols
para largesymbolscmr
e \int(op)
para \cmrint(op)
evitar conflitos.
\txint
O processo é semelhante, exceto que em vez de olhar fontmath.ltx
vamos olhar txfonts.sty
(use kpsewhich txfonts.sty
para encontrar o arquivo). Embora txfonts.sty
não redefina \int
, então a definição docomandoé igual ao original do LaTeX. O txfonts
que redefine é a largesymbols
fonte matemática:
\DeclareSymbolFont{largesymbols}{OMX}{txex}{m}{n}
então, para obter a txfonts
versão, \int
precisamos declarar essa fonte e fazer uma cópia separada que use txex
em 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.sty
você 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 fonttable
pacote, por exemplo, com {U}{txexa}{m}{n}
:
\documentclass{article}
\usepackage{fonttable}
\begin{document}
\xfonttable{U}{txexa}{m}{n}
\end{document}
quais saídas:
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:
amsmath
emula (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 \intop
glifo padrão. Para alterar a fonte você pode criar uma cópia (ou até mesmo redefinir) \MultiIntegral
que use (digamos) o \cmrintop
definido acima.
Você também pode usar oesint
pacote, 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 esint
depois de todos os pacotes de fontes (e depois amsmath
).