Ich bin nicht sicher, ob dies als doppelte Frage zählt, aber ich hätte gerne einen Bruch, bei dem das Trennzeichen aus zwei Zeilen besteht. Ich habe versucht, die Tfrac-Lösung unter zu verwendenBruch mit doppelter Linieund es funktioniert gut, bis ich eine ams-Umgebung im Nenner verwende und die folgende Ausgabe erhalte
Ich nehme an, es hängt mit der Verwendung von zusammen ooalign
. Ich habe versucht, online nachzuschlagen, wie ich dabei vorgehen soll, aber ich kann nicht viel finden.
Mein Code ist
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\newcommand{\Tfrac}[2]{%
\ooalign{%
$\genfrac{}{}{1.2pt}1{#1}{#2}$\cr%
$\color{white}\genfrac{}{}{.4pt}1{\phantom{#1}}{\phantom{#2}}$}%
}
$
\Tfrac
{
\phantom{test}
}
{
\mathtt{B} \oplus \{\mathit{repeat}:\, \mathtt{B?[int]; S'}\}
\, \leq \,
\mathtt{B \oplus}
\left\{
\begin{aligned}
& \mathit{notify} : \mathtt{B![bool]; end} \\
& \mathit{repeat}: S_4 \\
& \mathit{stop}: \mathtt{end} \\
\end{aligned}
\right\}
}
$
Bearbeiten: Um den beabsichtigten Verwendungszweck anzuzeigen, würde ich am Ende gerne so etwas haben, aber stattdessen mit doppelten Zeilen für Brüche.
Antwort1
Ich denke, Sie verwenden das falsche Tool. Wie dem auch sei, eine einfache Änderung meines Codes in einer anderen Antwort auf die Frage, auf die Sie verlinken, genügt.
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newlength{\doublefracgap}
\setlength{\doublefracgap}{0.75pt}
\DeclareRobustCommand{\doublefrac}[2]{%
\mathinner{\mathpalette\doublefrac@{{#1}{#2}}}%
}
\newcommand{\doublefrac@}[2]{\doublefrac@@#1#2}
\newcommand{\doublefrac@@}[3]{%
\ooalign{%
\raisebox{\doublefracgap}{\normalbaselines$\m@th#1\frac{#2}{\phantom{#3}}$}\cr
\raisebox{-\doublefracgap}{\normalbaselines$\m@th#1\frac{\phantom{#2}}{#3}$}\cr
}%
}
\newcommand{\ddoublefrac}[2]{{\displaystyle\doublefrac{#1}{#2}}}
\newcommand{\tdoublefrac}[2]{{\textstyle\doublefrac{#1}{#2}}}
\makeatother
\begin{document}
\[
\doublefrac
{
\phantom{test}
}
{
\mathtt{B} \oplus \{\mathit{repeat}:\, \mathtt{B?[int]; S'}\}
\, \leq \,
\mathtt{B} \oplus
\left\{
\begin{aligned}
& \mathit{notify} : \mathtt{B![bool]; end} \\
& \mathit{repeat}: S_4 \\
& \mathit{stop}: \mathtt{end} \\
\end{aligned}
\right\}
}
\]
\end{document}
Der Unterschied liegt in den \normalbaselines
Deklarationen.
Ich habe es \mathtt{B\oplus}
auf korrigiert \mathtt{B}\oplus
, da Ersteres falsch ist, weil es falsche Abstände erzeugt (und \mathtt
um \oplus
überhaupt nichts bewirkt).