Fração com linha dupla com ambiente ams

Fração com linha dupla com ambiente ams

Não tenho certeza se isso conta como uma pergunta duplicada, mas gostaria de ter uma fração em que o delimitador consistisse em duas linhas. Tentei usar a solução Tfrac emFração com linha duplae funciona bem, até eu usar um ambiente ams no denominador e obter a seguinte saída

insira a descrição da imagem aqui

Presumo que esteja relacionado ao uso de ooalign. Tentei pesquisar on-line como deveria fazer isso, mas não consigo encontrar muita coisa.

Meu código é

\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\}
    }
$

Editar: para mostrar o uso pretendido, gostaria de terminar com algo assim, mas com frações com linhas duplas.

insira a descrição da imagem aqui

Responder1

Acho que você está usando a ferramenta errada. De qualquer forma, uma simples modificação do meu código em outra resposta à pergunta que você linkou servirá.

\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}

A diferença está nas \normalbaselinesdeclarações.

Fixei \mathtt{B\oplus}em \mathtt{B}\oplus, pois o primeiro está errado, pois produz espaçamento errado (e \mathttaround \oplusnão faz nada).

insira a descrição da imagem aqui

informação relacionada