
mathptmx
Ich versuche, meinen bevorzugten Mix aus Schriftarten aus und einzurichten newtxmath
. Dazu müsste ich die largsymbols
Schriftart 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.
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 cmex
richtig 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 .fd
nicht gefunden? Ich weiß, wo er ist, aber TeX
anscheinend nicht, und wenn ich ihn dort hinlege, wo TeX
er zu finden ist, beginnt er, seltsame Dinge zu tun und aufzurufen metafont
und 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 newtxmath
direkt 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}
Wenn Sie jedoch nur ein paar Symbole aus der Schriftart verwenden möchten, ist dies keine gute Methode (da alles, was verwendet, largesymbols
nun die newtxmath
Schriftarten verwendet) und es wird ohnehin nicht richtig funktionieren (da LMX
nicht 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.sty
da 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}
Antwort2
mathptmx
Ich weiß nicht, warum Sie Symbole von verwenden und ersetzen möchten, newtxmath
anstatt direkt letzteres zu verwenden. Die von bereitgestellten Schriftarten mathptmx
sind 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 newtx
fü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 largesymbols
ist 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}