Problema al usar una fuente de newtxmath

Problema al usar una fuente de newtxmath

Estoy intentando configurar mi combinación preferida de fuentes de mathptmxy newtxmath. Esto requeriría usar la largsymbolsfuente de newtxmath, ya que me gustan más sus integrales que las de mathptmx. Sin embargo, esta fuente simplemente no se carga. Aquí hay un fragmento simple que ilustra el problema:

\documentclass[a4paper]{report}
\DeclareSymbolFont{largesymbols}{OMX}{ntxex}{m}{n}

\begin{document}
$\forall\exists<>\leq\geq\int\subseteq\supseteq$
\[\int abcdefghijklmnopqrstuvwxyz+-=\alpha\]
\end{document}

Resultado con pdfTeX:

This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./newtxtest2.tex
LaTeX2e <2014/05/01>
Babel <3.9k> and hyphenation patterns for 78 languages loaded.
(/usr/local/texlive/2014/texmf-dist/tex/latex/base/report.cls
Document Class: report 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2014/texmf-dist/tex/latex/base/size10.clo))
(./newtxtest2.aux)

LaTeX Font Warning: Font shape `OMX/ntxex/m/n' undefined
(Font)              using `OMX/cmex/m/n' instead on input line 5.

[1{/usr/local/texlive/2014/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./newtxtest2.aux)

LaTeX Font Warning: Some font shapes were not available, defaults substituted.

 )</usr/local/texlive/2014/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb
></usr/local/texlive/2014/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb>
</usr/local/texlive/2014/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></
usr/local/texlive/2014/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb>
Output written on newtxtest2.pdf (1 page, 37359 bytes).
SyncTeX written on newtxtest2.synctex.gz.
Transcript written on newtxtest2.log.

ingrese la descripción de la imagen aquí

Lo mismo ocurre con XeLaTeX. Ahora, en una situación más complicada con un paquete mío, recibí un error. En este caso, recibo una advertencia y la forma incorrecta para la integral: obtengo la Computer Modern, la predeterminada, si la leo cmexcorrectamente. De hecho, añadiendo

\SetSymbolFont{largesymbols}{bold}{OMX}{ntxex}{b}{n}
  \DeclareFontSubstitution{OMX}{ntxex}{m}{n}

produce, con XeLaTeX:

This is XeTeX, Version 3.14159265-2.6-0.99991 (TeX Live 2014) (preloaded format=xelatex)
 restricted \write18 enabled.
entering extended mode
(./newtxtest2.tex
LaTeX2e <2014/05/01>
Babel <3.9k> and hyphenation patterns for 78 languages loaded.
(/usr/local/texlive/2014/texmf-dist/tex/latex/base/report.cls
Document Class: report 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2014/texmf-dist/tex/latex/base/size10.clo))
(./newtxtest2.aux)
No file OMXntxex.fd.

./newtxtest2.tex:6: LaTeX Error: This NFSS system isn't set up properly.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.6 \begin{document}

Sin embargo, el código se copia literalmente del paquete, entonces, ¿qué está pasando aquí? ¿Por qué no se encuentra eso .fd? Sé dónde está, pero TeXparece que no, y si lo pongo donde TeXpuedo encontrarlo, comienza a hacer cosas extrañas y llama metafonty termina sin .tfm:

[…]
kpathsea: Running mktextfm bickham-r
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input bickham-r
This is METAFONT, Version 2.7182818 (TeX Live 2014) (preloaded base=mf)

kpathsea: Running mktexmf bickham-r

! I can't find file `bickham-r'.
<*> ...jfour; mag:=1; nonstopmode; input bickham-r

Please type another input file name
! Emergency stop.

¿Por qué ocurre esto? ¿Cómo obtengo la forma deseada para el símbolo integral sin cargar newtxmathdirectamente?

Respuesta1

Siempre que no necesite escalar, como mínimo necesitará algo como esto:

\documentclass[a4paper]{report}
  \DeclareFontEncoding{LMX}{}{}
  \DeclareFontSubstitution{LMX}{ntxexx}{m}{n}
  \DeclareFontFamily{LMX}{ntxexx}{}
  \DeclareFontShape{LMX}{ntxexx}{m}{n}{<->ntxexx}{}
  \DeclareFontShape{LMX}{ntxexx}{b}{n}{<->ntxbexx}{}
  \DeclareFontShape{LMX}{ntxexx}{bx}{n}{<->ssub ntxexx/b/n}{}
  \DeclareSymbolFont{largesymbols}{LMX}{ntxexx}{m}{n}
  \SetSymbolFont{largesymbols}{bold}{LMX}{ntxexx}{b}{n}
\begin{document}
  $\forall\exists<>\leq\geq\int\subseteq\supseteq$
  \[\int abcdefghijklmnopqrstuvwxyz+-=\alpha\]
\end{document}

desajuste

Sin embargo, si sólo quieres usar un par de símbolos de la fuente, esta no es una buena manera de hacerlo (porque todo lo que use largesymbolsahora usará las newtxmathfuentes) y no funcionará correctamente de todos modos (porque LMXno es equivalente a OMX).

Por lo tanto, es mejor crear una nueva fuente de símbolo y usarla solo para redefinir los símbolos que desea (comola respuesta de egreg sí).

Sin embargo, es posible que también quieras utilizar los símbolos integrales para la extensión matemática A de newtxmath. En ese caso, necesita configurar una fuente adicional, pero esta configuración se puede tomar directamente newtxmath.styya que ya define una fuente de símbolo adicional.

Juntando esto:

\documentclass[a4paper]{report}
\usepackage{mathtools}
\makeatletter
\DeclareFontEncoding{LMX}{}{}
\DeclareFontSubstitution{LMX}{ntxexx}{m}{n}
\DeclareFontFamily{LMX}{ntxexx}{}
\DeclareFontShape{LMX}{ntxexx}{m}{n}{<->ntxexx}{}
\DeclareFontShape{LMX}{ntxexx}{b}{n}{<->ntxbexx}{}
\DeclareFontShape{LMX}{ntxexx}{bx}{n}{<->ssub ntxexx/b/n}{}
\DeclareSymbolFont{largesymbolsTX}{LMX}{ntxexx}{m}{n}
\SetSymbolFont{largesymbolsTX}{bold}{LMX}{ntxexx}{b}{n}
\DeclareMathSymbol{\intop}{\mathop}{largesymbolsTX}{"52}
    \def\int{\intop\nolimits}
\DeclareMathSymbol{\ointop}{\mathop}{largesymbolsTX}{"48}
    \def\oint{\ointop\nolimits}
\DeclareSymbolFont{largesymbolsTXA}{U}{ntxexa}{m}{n}
\SetSymbolFont{largesymbolsTXA}{bold}{U}{ntxexa}{b}{n}
\DeclareFontSubstitution{U}{ntxexa}{m}{n}
\def\re@DeclareMathSymbol#1#2#3#4{%
  \let#1=\undefined
  \DeclareMathSymbol{#1}{#2}{#3}{#4}}
\re@DeclareMathSymbol{\oiintop}{\mathop}{largesymbolsTXA}{8}
\def\oiint{\oiintop\ilimits@}
\re@DeclareMathSymbol{\ointctrclockwiseop}{\mathop}{largesymbolsTXA}{10}
\def\ointctrclockwise{\ointctrclockwiseop\ilimits@}
\re@DeclareMathSymbol{\ointclockwiseop}{\mathop}{largesymbolsTXA}{12}
\def\ointclockwise{\ointclockwiseop\ilimits@}
\re@DeclareMathSymbol{\sqintop}{\mathop}{largesymbolsTXA}{14}
\def\sqint{\sqintop\ilimits@}
\re@DeclareMathSymbol{\iintop}{\mathop}{largesymbolsTXA}{33}
\def\iint{\iintop\ilimits@}
\re@DeclareMathSymbol{\iiintop}{\mathop}{largesymbolsTXA}{35}
\def\iiint{\iiintop\ilimits@}
\re@DeclareMathSymbol{\iiiintop}{\mathop}{largesymbolsTXA}{37}
\def\iiiint{\iiiintop\ilimits@}
\re@DeclareMathSymbol{\idotsintop}{\mathop}{largesymbolsTXA}{39}
\def\idotsint{\idotsintop\ilimits@}
\re@DeclareMathSymbol{\oiiintop}{\mathop}{largesymbolsTXA}{41}
\def\oiiint{\oiiintop\ilimits@}
\re@DeclareMathSymbol{\varointctrclockwiseop}{\mathop}{largesymbolsTXA}{43}
\def\varointctrclockwise{\varointctrclockwiseop\ilimits@}
\re@DeclareMathSymbol{\varointclockwiseop}{\mathop}{largesymbolsTXA}{45}
\def\varointclockwise{\varointclockwiseop\ilimits@}
\re@DeclareMathSymbol{\fintop}{\mathop}{largesymbolsTXA}{62}
\def\fint{\fintop\ilimits@}
\re@DeclareMathSymbol{\oiintctrclockwiseop}{\mathop}{largesymbolsTXA}{64}
\def\oiintctrclockwise{\oiintctrclockwiseop\ilimits@}
\re@DeclareMathSymbol{\varoiintclockwiseop}{\mathop}{largesymbolsTXA}{66}
\def\varoiintclockwise{\varoiintclockwiseop\ilimits@}
\re@DeclareMathSymbol{\oiiintctrclockwiseop}{\mathop}{largesymbolsTXA}{68}
\def\oiiintctrclockwise{\oiiintctrclockwiseop\ilimits@}
\re@DeclareMathSymbol{\varoiiintclockwiseop}{\mathop}{largesymbolsTXA}{70}
\def\varoiiintclockwise{\varoiiintclockwiseop\ilimits@}
\re@DeclareMathSymbol{\oiintclockwiseop}{\mathop}{largesymbolsTXA}{72}
\def\oiintclockwise{\oiintclockwiseop\ilimits@}
\re@DeclareMathSymbol{\varoiintctrclockwiseop}{\mathop}{largesymbolsTXA}{74}
\def\varoiintctrclockwise{\varoiintctrclockwiseop\ilimits@}
\re@DeclareMathSymbol{\oiiintclockwiseop}{\mathop}{largesymbolsTXA}{76}
\def\oiiintclockwise{\oiiintclockwiseop\ilimits@}
\re@DeclareMathSymbol{\varoiiintctrclockwiseop}{\mathop}{largesymbolsTXA}{78}
\def\varoiiintctrclockwise{\varoiiintctrclockwiseop\ilimits@}
\re@DeclareMathSymbol{\sqiintop}{\mathop}{largesymbolsTXA}{80}
\def\sqiint{\sqiintop\ilimits@}
\re@DeclareMathSymbol{\sqiiintop}{\mathop}{largesymbolsTXA}{82}
\def\sqiiint{\sqiiintop\ilimits@}
\makeatother
\begin{document}
  $\forall\exists<>\leq\geq\int\subseteq\supseteq$
  \[\int abcdefghijklmnopqrstuvwxyz+-=\alpha\]
  \[\int \oint \iint \iiint \iiiint \idotsint \idotsint \]
\end{document}

varias integrales

Respuesta2

No sé por qué querrías usar mathptmxy sustituir símbolos en newtxmathlugar de usar estos últimos directamente. Las fuentes proporcionadas por mathptmxson en gran parte feas, porque están construidas a partir de varias fuentes; en particular las letras griegas son desagradables.

Sin embargo, así es como puedes hacer para la integral. Te dejo otros símbolos. Tenga en cuenta que newtxutiliza una codificación de fuente diferente para su fuente de extensión matemática, porque admite muchos más caracteres que la codificación OMX estándar. Además, seguramente no se recomienda definir el largesymbolsgrupo matemático, porque esto debe ir acompañado de redefiniciones de varios símbolos (o al menos requiere una verificación exhaustiva de las diferencias entre las codificaciones OMX y LMX).

\documentclass{article}
\usepackage{mathptmx}

\DeclareFontEncoding{LMX}{}{}
\DeclareFontSubstitution{LMX}{ntxexx}{m}{n}
\DeclareFontFamily{LMX}{ntxexx}{}
\DeclareFontShape{LMX}{ntxexx}{m}{n}{<-> ntxexx}{}
\DeclareFontShape{LMX}{ntxexx}{b}{n}{<-> ntxbexx}{}
\DeclareFontShape{LMX}{ntxexx}{bx}{n}{<->ssub ntxexx/b/n}{}
\DeclareSymbolFont{largesymbolsNT}{LMX}{ntxexx}{m}{n}

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

\begin{document}

\[
\int_a^b f(x)\,dx
\]

\end{document}

ingrese la descripción de la imagen aquí

información relacionada