Korrektes Unicode-Mapping Thema ist als GELÖST markiert

Formelsatz für Mathematik, Naturwissenschaften und Technik


Robert T.

Korrektes Unicode-Mapping

Beitrag von Robert T. »

Moin moin,

ich benutze XeLaTex, hauptsächlich weil es mir die Eingabe erleichtert und Verwendung fremder Schriften erlaubt. Das funktioniert im Textsatz super, allerdings liegt es ja nahe, die Schriftart im Mathematiksatz ebenfalls anzupassen.

Dazu habe ich bis jetzt unicode-math und mathspec gefunden. unicode-math ist wohl noch experimentell und unterstützt – wenn ich es richtig sehe – bislang nur drei Schriften. Auf jeden Fall nicht diejenige, die ich verwenden möchte, sodass ich bei mathspec hängen geblieben bin.

Damit wird auch der Matheteil korrekt gesetzt, allerdings doch wieder die Standardschrift im fertigen Dokument eingebunden. Ich habe jetzt mal versucht mich ein wenig schlau zu machen und wenn ich es richtig sehe, liegt das daran, dass mathspec nur einige wenige Zeichen übernimmt. In den Weiten des Internets habe ich den Befehl
\DeclareMathSymbol
gefunden. Um ehrlich zu sein, übersteigt alles was dort angegeben ist, mein LaTeX-Verständnis, aber per Copy & Paste komme ich bei einigen Zeichen zu vernünftigen Ergebnissen.

Bei anderen allerdings nicht. Um jetzt nicht gleich mit etwas Exotischem anzufangen als Beispiel mal das Minus-Zeichen. Das ist in Unicode auf 2212 gemappt. Wenn ich das aber eingebe, erhalte ich ein anderes Zeichen. Welches hängt von den Parametern von \DeclareMathSymbol ab, was ich mir überhaupt nicht mehr erklären kann. Ich habe anfangs gedacht, dass das ein Problem der verwendeten Schriftart ist, aber bis jetzt konnte ich das noch mit jeder Schrift reproduzieren.

Folgendes Minimalbeispiel dazu (mit Linux Libertine, weil die frei und weit ausgebaut ist; wie gesagt: ich konnte das auch mit anderen Schriften reproduzieren):
\documentclass{scrartcl}

\usepackage{mathspec}
\usepackage{polyglossia}
 
\setallmainfonts{Linux Libertine O}

\makeatletter
 \DeclareMathSymbol{-}{\mathbin}{\eu@LatinLowercase@symfont}{"2212}
\makeatother

\setmainlanguage{german}

\begin{document}

 Das Minus-Zeichen sieht im normalen Satz so aus: −

 Das Minus-Zeichen sieht im Mathematiksatz so aus: $-$

\end{document}
Irgendwie hat das Forum Probleme mit der Angabe der Unicode-Zeichen. Bitte
durch das korrekte Minuszeichen (−) ersetzen. Zum Verständnis des ursprünglichen Problems einfach
\makeatletter
 \DeclareMathSymbol{-}{\mathbin}{\eu@LatinLowercase@symfont}{"2212}
\makeatother
auskommentieren.

Verwenden von `− statt "2212 oder direkte Eingabe von − hilft auch nicht weiter.

Zugegeben: wenn man Linux Libertine verwendet, muss man schon genau hinsehen, um die Unterschiede zwischen den Zeichen zu entdecken. Bei anderen Schriften ist das aber gravierender.

Weiß jemand Rat?

R.

phi
Moderator
Moderator
Beiträge: 420
Registriert: Fr 6. Feb 2009, 21:28

Beitrag von phi »

\DeclateMathSymbol unterstützt nur Zeichen mit Codes bis 255, für deinen Fall musst du stattdessen \XeTeXDeclareMathSymbol (gleiche Syntax) benutzen.

Robert T.

Das ist die Lösung

Beitrag von Robert T. »

Perfekt, klappt wunderbar. Wäre ich nie im Leben drauf gekommen.

Vielen, vielen Dank!

R.


PS: Der Vollständigkeit halber noch mal die Lösung.
\documentclass{scrartcl}

\usepackage{mathspec}
\usepackage{polyglossia}
 
\setallmainfonts{Linux Libertine O}

\makeatletter
 \XeTeXDeclareMathSymbol{-}{\mathbin}{\eu@LatinLowercase@symfont}{"2212}
\makeatother

\setmainlanguage{german}

\begin{document}

 Das Minus-Zeichen sieht im normalen Satz so aus: −

 Das Minus-Zeichen sieht im Mathematiksatz so aus: $-$

\end{document}

Robert T.

Doch noch nicht

Beitrag von Robert T. »

Die Lösung klappt nicht mehr, wenn ich amsmath verwende.

Das folgende Minimalbeispiel
\documentclass{scrartcl}

\usepackage{amsmath}
\usepackage{mathspec}
\usepackage{polyglossia}
 
\setallmainfonts{Linux Libertine O}

\makeatletter
 \XeTeXDeclareMathSymbol{-}{\mathbin}{\eu@LatinLowercase@symfont}{"2212}
\makeatother

\setmainlanguage{german}

\begin{document}

 Das Minus-Zeichen sieht im normalen Satz so aus: −

 Das Minus-Zeichen sieht im Mathematiksatz so aus: $-$

\end{document}
liefert mir die Fehlermeldung
! Extended mathchar used as mathchar (104866322).
<to be read again> 
                   \relax 
l.15 \begin{document}
                     
? 
Ich stehe ob dieser Meldung vor einem Rätsel. Hatte eigentlich gedacht, dass die Kombination von mathspec mit amsmath keine so seltene Kombination ist.

R.

Gast

Beitrag von Gast »

\AtBeginDocument{\XeTeXDeclareMathSymbol{-}{\mathbin}{\eu@LatinLowercase@symfont}{"2212}}
Oder probiere den Code von Philipp here
http://tex.stackexchange.com/questions/ ... 7280#17280

(Grundproblem ist, dass amsmath bei \begin{document} den \mathcode von - verwenden will, und das scheitert, wenn du ihn vorher änderst.)

Ulrike Fischer
www.troubleshooting-tex.de

Robert T.

Jepp

Beitrag von Robert T. »

Sorry für die verspätete Antwort. So hat es geklappt.

Danke!

R.

Antworten