PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unterschiedliche Fonts für Mathe und Textmodus



Q-Dog
31-03-2010, 18:28
Guten Abend,

ich suche schon seit Stunden im Internet nach einer Möglichkeit, die Fonts von Mathe- und Text-Modus voneinander zu trennen.

Beispiel:
Ich möchte für den Mathe-Modus (also alles was zwischen $$ usw steht) mit \usepackage{kmath} diese Schrift haben in Größe 12.

Und alles was ich sonst so dazu schreibe (also normalen Text), soll in
"\fontencoding{T1} \fontfamily{fav} \fontseries{m} \fontshape{n} \fontsize{10}{10}"
sein, also Größe 10 und eine andere Schrift.


Meine Frage ist nun, wie ich den Mathe- und den Text-Font voneinander unabhängig formatieren kann.


Liebe Grüße,
Q-Dog

u_fischer
31-03-2010, 19:02
Nun, Mathe und Textschriften sind grundsätzlich "getrennt". Dein kmath lädt einfach auch das Paket txfonts, das auch Textschriften festlegt. Du kannst das leicht hinterher wieder überschreiben. z.B. um die normale \rmfamily- Schrift auf deine Schrift zu setzen, benütze

\renewcommand\rmdefault{fav}

\sfdefault und \ttdefault kannst du entsprechend setzen.

Die Schriftgröße setzt du per \documentclass-option, wobei \fontsize{10}{10} sowieso keine gute Idee ist, da kleben die Zeilen ja aneinander. Das zweite Argument sollte größer sein.

T1-encoding bekommst du einfach mit \usepackage[T1]{fontenc}.

Q-Dog
31-03-2010, 19:36
Hallo u_fischer,

vielen Dank für deine Antwort. Das mit der Schriftart hab ich nun verstanden und es funktioniert einwandfrei :-)

Ein Problem habe ich noch bei der unterschiedlichen Schriftgröße. Wenn ich im Documentclass die Schriftgröße änder, dann wirkt sich das ja sowohl auf den Mathe, als auch auf den Text-Modus aus ?!

/Edit
Ich hab das Problem jetzt so gelöst, dass ich den Text-font mit der scale-option lade
z.B. \usepackage[scaled=.90]{futura}
Jedoch bezweifel ich, dass das die eleganteste Methode ist.

lockstep
31-03-2010, 20:19
Ich hab das Problem jetzt so gelöst, dass ich den Text-font mit der scale-option lade
z.B. \usepackage[scaled=.90]{futura}
Jedoch bezweifel ich, dass das die eleganteste Methode ist.

Unterschiedliche Schriften haben bei gleicher "Größe" (z.B. 10 Punkt) oft sehr unterschiedliche x-Höhen (Höhe des Buchstabens x). Die x-Höhe beträgt z.B. bei der Latex-Standardschrift Computer Modern 43% der Größe, bei der Times 45%, bei der Palatino 47%, bei der Avantgarde 55%. Bei Schriftmischung ist es eine übliche Praxis, die einzelnen Schriften so zu skalieren, dass ihre x-Höhe übereinstimmt. Ich kenne die x-Höhen von kmath und Futura nicht, aber prinzipiell ist deine Methode durchaus "elegant".

lockstep

Q-Dog
31-03-2010, 22:11
na umso besser :)

Dann ist das Thema erledigt und ich bedanke mich nochmals herzlich bei euch beiden.


Gruß Q-Dog

alexraasch
03-04-2010, 13:49
Ich habe eine ähnliche Frage. Ich habe einen Text in Charter geschrieben mit \usepackage{charter} und für den Mathe-Modus ebenfalls Charter mittels \usepackage[bitstream-charter]{mathdesign}. Für die Überschriften habe ich Helvetica eingestellt mit \usepackage{helvet}. Ich möchte nun, dass in den Überschriften eine serifenlose Matheschrift verwendet wird und nicht Charter. Geht das irgendwie? Hier das MB:


\documentclass{scrbook}

\usepackage{helvet}
\usepackage{charter}
\usepackage[bitstream-charter]{mathdesign}

\begin{document}
\section{Kontextfreie Sprachen}

Kontextfreie Sprachen sind toll.

\subsection{$LL(k)$ Parser}

Beweise, dass \[\Sigma = f(x) \times \frac{ab^5}{\int Y}\]
\end{document}

Ich möchte also, dass das LL(k) in der Überschrift in Helvetica gesetzt wird. Am besten auch fett.

u_fischer
03-04-2010, 14:57
Alle Mathe-Schriften umzubiegen, dürfte schwer sein. Wenn es nur um einzelne Buchstaben geht, kannst du z.B. \mathsf umbiegen, (oder dir ein eigenes Mathealphabet definieren). Die fette Version bekommst du dann mit \boldmath



\DeclareMathAlphabet{\mathsf}{T1}{phv}{m}{n}
\SetMathAlphabet\mathsf{bold}{T1}{phv}{bx}{n}

alexraasch
03-04-2010, 15:18
Ich weiß nicht, wie ich das benutzen soll.

u_fischer
04-04-2010, 11:28
\documentclass{scrbook}

\usepackage{helvet}
%\usepackage{charter}
%\usepackage[bitstream-charter]{mathdesign}

\DeclareMathAlphabet{\mathsf}{T1}{phv}{m}{n}
\SetMathAlphabet\mathsf{bold}{T1}{phv}{bx}{n}
\begin{document}
\subsection{\boldmath$\mathsf{LL}$ }
\end{document}


(charter habe ich nicht installiert).

alexraasch
04-04-2010, 23:29
OK, danke, das funktioniert so ein bisschen. Aber die Buchstaben sind nicht schräg gestellt wird im Mathemodus und bestimmte Funktionssymbole wie \sum und \int sind nicht fett.

lockstep
04-04-2010, 23:35
Vielleicht wäre es in diesem Ausnahmefall (so oft tauchen Formeln ja doch nicht in Überschriften auf) einfacher, wenn du Schrägstellung und Fettschrift des Mathemodus mit \slshape (bzw. \itshape) und \bfseries nachahmst?

lockstep

EDIT: Zumindest, solange keine Symbole im Spiel sind, die im Textmodus Probleme bereiten.

alexraasch
04-04-2010, 23:45
Ja, das geht natürlich, aber es wäre schön, es generelle Lösung dafür zu erhalten.

u_fischer
05-04-2010, 11:53
Nun, wie ich schon sagte: Eine komplette Mathematikversion zu erstellen ist mühselig. Außerdem müsstest du die zu Helvetica passenden Schriften kaufen (hvmath)
http://www.tex.ac.uk/cgi-bin/texfaq2html?label=psfchoice.

Verzichte einfach auf komplizierte Formeln in Überschriften. Die haben dort sowieso nichts verloren.

alexraasch
05-04-2010, 12:43
Es gibt ja schon Mathematikschriften, z.B. in CMBright, man müsste es irgendwie so einstellen, dass diese dann für den Mathemodus verwendet wird, wenn immer \sffamily eingestellt wird.

Und das mit den Formeln in Überschriften sehe ich anders.

u_fischer
05-04-2010, 14:53
CMbright/hfbright hat aber keine fetten Symbole o.ä. nur die Buchstaben sind fett.

Aber wenn du unbedingt willst: Definiere dir analog zu \mathversion{bold} eine \mathversion{sansserifbold}.


\documentclass{article}

\DeclareMathVersion{sansserifbold}
\SetSymbolFont{operators}{sansserifbold}{OT1}{cmbr }{m}{n}
\SetSymbolFont{letters} {sansserifbold}{OML}{cmbrm}{b}{it}
\SetSymbolFont{symbols} {sansserifbold} {OMS}{cmbrs}{m}{n}

\begin{document}
{\mathversion{sansserifbold}$\int\sum x=y$ }
\end{document}

casualcoder
18-02-2011, 13:11
Hallo Ulrike,

lässt sich das auch auf XeLaTeX übertragen?

Anders ausgedrückt:
Lässt sich via \DeclareMathVersion und den Folgekommandos auch bei Einsatz von XeLaTeX die Schrift im Mathemodus beeinflussen?
Ich suche gezielt nach einem Weg, das für selbst definierte Umgebungen (http://mrunix.de/forums/showpost.php?p=327365&postcount=4) zu tun, also nicht global.

Gruß,
casualcoder

u_fischer
18-02-2011, 13:22
lässt sich das auch auf XeLaTeX übertragen?

Probiere es doch einfach aus. Dein Computer wird schon nicht explodieren.

casualcoder
18-02-2011, 13:58
Probiere es doch einfach aus. Dein Computer wird schon nicht explodieren.

Mir scheint, als wäre die \setmathfont-Anweisung dominant.
Ein temporärer Wechsel der "Matheschrift" klappt damit nicht.

u_fischer
18-02-2011, 14:02
Da ich keine Ahnung habe, welche der diversen möglichen Varianten du versucht hast, kann ich dazu keinen Kommentar abgeben.

casualcoder
18-02-2011, 14:17
Stimmt, entschuldige:


\documentclass{scrreprt}
\usepackage{amsmath}
\usepackage{mathspec}
\usepackage{xltxtra}

%% Globale Schriftdefinitionen
\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Ligatures=Common]{Minion Pro}
\setmathfont(Digits,Latin)[Uppercase=Italic,Lowercase=Italic]{Minion Pro}
\setmathfont(Greek)[Uppercase=Regular,Lowercase=Italic]{Minion Pro}
\setsansfont[Scale=0.80]{Myriad Pro}

\DeclareMathVersion{sansserifbold}
\SetSymbolFont{operators}{sansserifbold}{OT1}{cmbr }{m}{n}
\SetSymbolFont{letters} {sansserifbold}{OML}{cmbrm}{b}{it}
\SetSymbolFont{symbols} {sansserifbold} {OMS}{cmbrs}{m}{n}

\begin{document}
{\mathversion{sansserifbold}$\int\sum x=y$ }

$\int\sum x=y$
\end{document}

Kann das funktionieren?

u_fischer
18-02-2011, 15:33
Nicht mit cmbr (oder nur unter Schmerzen). Aber mit einer Unicodeschrift könnte es so gehen:


\documentclass{scrreprt}
\usepackage{amsmath}
\usepackage{mathspec}
\usepackage{xltxtra}

%% Globale Schriftdefinitionen
\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Ligatures=Common]{Minion Pro}
\setmathfont(Digits,Latin)[Uppercase=Italic,Lowercase=Italic]{Minion Pro}
\setmathfont(Greek)[Uppercase=Regular,Lowercase=Italic]{Minion Pro}
\setsansfont[Scale=0.80]{Myriad Pro}

\DeclareMathVersion{sansserifbold}

\fontspec{Arial} %gewünschte Schrift aktivieren
\makeatletter
\SetSymbolFont{Latin:m:n}{sansserifbold}{EU1}{\zf@ family}{m}{n}
\SetSymbolFont{Latin:m:it}{sansserifbold}{EU1}{\zf @family}{m}{it}
\SetSymbolFont{Digits:m:n}{sansserifbold}{EU1}{\zf @family}{m}{n}
\SetSymbolFont{operators}{sansserifbold}{EU1}{\zf@ family}{m}{n}
\SetSymbolFont{Greek:m:n}{sansserifbold}{EU1}{\zf@ family}{m}{n}
\SetSymbolFont{Greek:m:it}{sansserifbold}{EU1}{\zf @family}{m}{it}

\makeatother

\SetSymbolFont{symbols} {sansserifbold} {OMS}{cmbrs}{m}{n}



\begin{document}
{\mathversion{sansserifbold}$\int\sum x=\sin y \alpha$ }

$\int\sum x=\sin y$
\end{document}

casualcoder
18-02-2011, 17:03
Vielen Dank, Ulrike! Hab's als Minibeispiel mit der Myriad Pro getestet: klappt.
Die Zeile \SetSymbolFont{symbols} ... scheint optional zu sein, zumindest funktioniert das Schriftsatz-Beispiel mit Myriad Pro auch ohne.

Nochmals danke! :)