Problem bei der Verwendung einer Schriftart von newtxmath

Problem bei der Verwendung einer Schriftart von newtxmath

mathptmxIch versuche, meinen bevorzugten Mix aus Schriftarten aus und einzurichten newtxmath. Dazu müsste ich die largsymbolsSchriftart aus verwenden newtxmath, da mir deren Integrale besser gefallen als die aus mathptmx. Allerdings lässt sich diese eine Schriftart einfach nicht laden. Hier ist ein einfacher Ausschnitt, der das Problem veranschaulicht:

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

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

Ergebnis mit 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.

Bildbeschreibung hier eingeben

Dasselbe gilt für XeLaTeX. Nun, in einer komplizierteren Situation mit einem meiner Pakete, habe ich einen Fehler erhalten. In diesem Fall erhalte ich eine Warnung und die falsche Form für das Integral: Ich erhalte die von Computer Modern, die Standardform, wenn ich das cmexrichtig lese. Tatsächlich fügt man hinzu

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

produziert, mit 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}

Der Code wurde jedoch wörtlich aus dem Paket kopiert. Was ist also hier los? Warum wird er .fdnicht gefunden? Ich weiß, wo er ist, aber TeXanscheinend nicht, und wenn ich ihn dort hinlege, wo TeXer zu finden ist, beginnt er, seltsame Dinge zu tun und aufzurufen metafontund endet mit keinem .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.

Warum kommt es dazu? Wie bekomme ich die gewünschte Form für das Integralzeichen, ohne es newtxmathdirekt zu laden?

Antwort1

Sofern Sie keine Skalierung benötigen, brauchen Sie mindestens so etwas:

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

Mischmasch

Wenn Sie jedoch nur ein paar Symbole aus der Schriftart verwenden möchten, ist dies keine gute Methode (da alles, was verwendet, largesymbolsnun die newtxmathSchriftarten verwendet) und es wird ohnehin nicht richtig funktionieren (da LMXnicht gleichwertig mit ist OMX).

Daher ist es besser, eine neue Symbolschriftart zu erstellen und diese nur zum Neudefinieren der gewünschten Symbole zu verwenden (wieegregs Antwort).

Möglicherweise möchten Sie jedoch auch die Integralsymbole für die Mathematik-Erweiterung A aus verwenden newtxmath. In diesem Fall müssen Sie eine zusätzliche Schriftart einrichten, aber diese Konfiguration kann direkt aus übernommen werden, newtxmath.styda sie bereits eine zusätzliche Symbolschriftart definiert.

Zusammengefasst:

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

verschiedene Integrale

Antwort2

mathptmxIch weiß nicht, warum Sie Symbole von verwenden und ersetzen möchten, newtxmathanstatt direkt letzteres zu verwenden. Die von bereitgestellten Schriftarten mathptmxsind größtenteils hässlich, da sie aus verschiedenen Quellen erstellt wurden; insbesondere die griechischen Buchstaben sind hässlich.

So können Sie es jedoch für das Integral machen. Ich überlasse Ihnen die anderen Symbole. Beachten Sie, dass newtxfür die Schriftart der mathematischen Erweiterung eine andere Schriftkodierung verwendet wird, da diese viel mehr Zeichen aufnehmen kann als die Standard-OMX-Kodierung. Außerdem largesymbolsist die Definition der mathematischen Gruppe sicherlich nicht zu empfehlen, da dies mit Neudefinitionen mehrerer Symbole einhergehen muss (oder zumindest eine gründliche Überprüfung der Unterschiede zwischen den OMX- und LMX-Kodierungen erfordert).

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

Bildbeschreibung hier eingeben

verwandte Informationen