Usando el símbolo Computer Modern \int, con fuente matemática txfonts

Usando el símbolo Computer Modern \int, con fuente matemática txfonts

Me gustaría utilizar el estándar \inty el \gammaupdel txfontspaquete. ¿Cómo puedo mezclar estos símbolos?

MWE:

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

Respuesta1

Respuesta accidental :-)

El txfontspaquete está obsoleto y normalmente puedes reemplazarlo por newtxtext(para las fuentes de texto) y newtxmath(para, como habrás adivinado, las fuentes matemáticas). Sin embargo, el \intsímbolo de newtxmathes bastante similar al de Computer Modern, por lo que podría funcionar para usted. Aquí hay una comparación entre ellos (de izquierda a derecha: txfontsComputer Modern y newtxmath):

ingrese la descripción de la imagen aquí

\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 los símbolos es necesario investigar un poco en las fuentes (al menos así es como lo hice yo; podría haber una manera mejor).

\cmrint

La definición informática moderna de los símbolos se puede encontrar en fontmath.ltx(ahí es donde se inicializan las fuentes matemáticas LaTeX. Puede encontrar ese archivo ejecutándolo kpsewhich fontmath.ltxen una terminal). Buscando \inten el código verás que está definido como:

    \DeclareRobustCommand\int{\intop\nolimits}

lo que significa que \intes solo \intop\nolimits( \nolimitses una primitiva TeX) y \intopse define justo arriba con:

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

lo que significa que es un \mathop(operador) tomado del número de ranura "52(que es hexadecimal 0x52) de la largesymbolsfuente. Finalmente, la largesymbolsfuente se declara al principio fontmath.ltxcon:

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

que significa codificación OMX, familia cmex, serie m(edium), forma n(ormal).

Para hacer el ejemplo anterior, simplemente cambié el nombre largesymbolsa largesymbolscmry \int(op)a \cmrint(op)para evitar conflictos.

\txint

El proceso es similar, excepto que en lugar de buscar, fontmath.ltxmiraremos txfonts.sty(usamos kpsewhich txfonts.stypara buscar el archivo). Aunque txfonts.styno redefine \int, por lo que la definición dedominioEs el mismo que el original de LaTeX. Lo txfontsque redefine es la largesymbolsfuente matemática:

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

entonces, para tomar la txfontsversión de \intdebemos declarar esa fuente y hacer una copia separada que use txexen lugar 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 es similar al anterior. En txfonts.styencontrarás que \iintestá definido con:

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

que utiliza largesymbolsA, definido previamente con:

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

para que puedas adaptarte (para evitar el \re@Declare...comando definido en ese paquete):

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

Otra forma de encontrar un glifo en una fuente es mediante el uso del fonttablepaquete, por ejemplo con {U}{txexa}{m}{n}:

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

que produce:

ingrese la descripción de la imagen aquí

que muestra el doble glifo integral en la ranura 33 de esa fuente.

\cmriint

La fuente Computer Modern no tiene un glifo integral doble, por lo que el enfoque anterior no funcionará. Pero hay otras opciones:

amsmathemula (hasta) 4 signos integrales con \MultiIntegral, que se define:

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

y luego \iintse define como:

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

Sin embargo, esto utilizará el \intopglifo predeterminado. Para cambiar la fuente, puede crear una copia (o incluso redefinir) \MultiIntegralque use (digamos) lo \cmrintopdefinido anteriormente.

También puedes utilizar elesintpaquete, que define varios tipos de signos integrales utilizando (un clon de) el glifo Computer Modern. Para usar el signo integral Computer Modern con otros paquetes de fuentes, solo debe asegurarse de cargar esintdespués de todos los paquetes de fuentes (y después amsmath).

información relacionada