macros

Änderung des Bruchmakros für Inline-Text und Exponenten

Hier gibt es ein erstaunliches Bruchmakro * für FontSpec mit LuaLaTeX (*: das wäre das zweite Makro in dieser Antwort, genannt \unifrac , das mir besser gefällt als das erste "Makro" / mit der frac -Funktion), aber es funktioniert nur wenn Die von Ihnen verwendete Schriftart verfügt über die OpenType-Funktionen dnom und numr . Die Schriftart, die ich verwende, MinionMath (verwendet mit unicode unicode-math , die FontSpec erfordert ), hat diese Funktionen nicht für alles andere als Zahlen (viele Schriftarten haben dies nicht), und selbst Schriftarten, die diese Funktionen für Buchstaben haben, haben sie nicht für griechische Buchstaben.

Um ehrlich zu sein, sieht dieses Makro für viele Brüche, die ich für Inline-Text und Exponenten verwende, absolut schön aus, aber ich wünschte, ich könnte es für andere Dinge als Zahlen verwenden. Ich kenne das \sfrac - Makro, das alle Buchstaben verwenden kann (sowie \nicefrac und \tfrac ), aber ich mag das Aussehen des \unifrac - Makros viel mehr.

Gibt es eine Möglichkeit, \unifrac so zu ändern, \unifrac es sich wie \sfrac verhält,in dem Sinne, dass ich es mit Nicht-Zahlenzeichen verwenden kann, aber das Aussehen von \unifrac beibehalten kann ?

Ich werde hier eine MWE zusammen mit Bildern zur Verfügung stellen:

\documentclass{article}
\usepackage{xfrac}
\usepackage{fontspec} % Using unicode-math instead doesn't seem to make much difference 
    \setmainfont{EB Garamond 12 Regular} % this font has dnom and numr features; 
     % XITS Math, for example, doesn't

\newcommand{\unifrac}[2]{\mbox{% making sure we don't get a line break
    {\addfontfeatures{RawFeature=+numr}#1}%
    ⁄% That slash is U+2044 FRACTION SLASH, which has special spacing
    {\addfontfeatures{RawFeature=+dnom}#2}%
    }}

\begin{document}

This is \texttt{\unifrac:}\qquad
\unifrac{12}{14} \unifrac{31415}{27182} \unifrac{abc}{def} \unifrac{Foo!}{Bar?}
\unifrac{\#\$\%+/<>=}{?\@[]\textbackslash\_|\{\}§†} 
\[\left(\frac{3x}{2y}\right)^{\unifrac{3}{2}}=\unifrac{\lambda}{2x}\]\\

And this is \texttt{\sfrac:}\qquad
\sfrac{12}{14} \sfrac{31415}{27182} \sfrac{abc}{def} \sfrac{Foo!}{Bar?}
\sfrac{\#\$\%+/<>=}{?\@[]\textbackslash\_|\{\}§†}
\[\left(\frac{3x}{2y}\right)^{\sfrac{3}{2}}=\sfrac{\lambda}{2x}\]\\

\end{document}

Für eine Schriftart mit den dnom und numr (für Zahlen) wie EB Garamond ergibt sich Folgendes:

Bei einer Schriftart,die nicht über diese Funktionen verfügt,wie z.B.XITS Math,führt dies zu einem Ergebnis:


OpenType-Unterstützung in TeX war, als ich Anfang 2004 zum ersten xfrac schrieb, im Grunde nicht vorhanden – XeTeX war damals noch nicht einmal veröffentlicht worden. Daher wurde das Paket nie mit diesem Gedanken entworfen. Außerdem bestand der grundlegende Zweck darin, eine Möglichkeit zu bieten, schöne Brüche für Schriftarten zu schreiben, die sie nicht enthielten.

Das Paket könnte sehr wahrscheinlich OpenType-fähig gemacht werden,indem einige Änderungen an der Art und Weise,wie Schriften ausgewählt werden,vorgenommen werden.Sie sollten jedoch auch in der Lage sein,eine Instanz für die betreffende Schriftart zu definieren,indem Sie die Taste für das Zählerformat zur Auswahl der Schriftart verwenden.Die folgende Instanzdeklaration sorgt dafür,dass sich \sfrac so verhält,wie Sie es für die von Ihnen gewählte Variante der Garamond wünschen.Dies ist dem Janson-Beispiel aus dem Handbuch sehr ähnlich.

\DeclareInstance{xfrac}{EBGaramond12Regular(0)}{text}{
      numerator-format = {\fontspec{EBGaramond12Regular}[RawFeature=+numr]#1},
      scaling = false,
      numerator-bot-sep = 0pt,
      denominator-bot-sep = 0 pt,
      denominator-format = {\addfontfeatures{RawFeature=+dnom}#1}
}

Ich hoffe,das hilft,Morten




Hier erstelle ich \altfrac{}{} . Es erfordert keine fontspec , es gehorcht dem Math-Modus, seine Schriftart ist größer als die von \sfrac , der Nenner liegt auf der Grundlinie, während die Spitze des Zählers I versucht, an der Spitze der normalen Textschrift zu liegen. Die Zahlen werden in \footnotesize dargestellt . Der Schrägstrich ist ein horizontal gestrecktes / , um ihm mehr das Aussehen eines gebrochenen Schrägstrichs zu verleihen.

Der Nachteil ist, dass es nicht richtig funktioniert, wenn die aktuelle Schriftgröße etwas anderes als \normalsize ist .

\documentclass{article}
\usepackage{xfrac,graphicx}

\newcommand{\altfrac}[2]{\ifmmode\def\tmp{$}\else\def\tmp{}\fi\mbox{%
    {\footnotesize \raisebox{.24\ht\strutbox}{\tmp#1\tmp}}%
    \kern-2.2pt\scalebox{1.6}[1]{/}\kern-1.8pt%⁄% That slash is U+2044 FRACTION SLASH, which has special spacing
    {\footnotesize\tmp#2\tmp}%
    }}

\begin{document}
\parindent 0pt
This is \texttt{altfrac:}\qquad
\altfrac{12}{14} \altfrac{31415}{27182} \altfrac{abc}{def} \altfrac{Foo!}{Bar?}
\altfrac{\#\$\%+/<>=}{?\@[]\textbackslash\_|\{\}§†} 
\[\left(\frac{3x}{2y}\right)^{\altfrac{3}{2}}=\altfrac{\lambda}{2x}\]
\qquad And here is \altfrac{x}{y} versus $\altfrac{x}{y}$\\

And this is \texttt{sfrac:}\qquad
\sfrac{12}{14} \sfrac{31415}{27182} \sfrac{abc}{def} \sfrac{Foo!}{Bar?}
\sfrac{\#\$\%+/<>=}{?\@[]\textbackslash\_|\{\}§†}
\[\left(\frac{3x}{2y}\right)^{\sfrac{3}{2}}=\sfrac{\lambda}{2x}\]\\

\end{document}