Sobreponha um nó TikZ em um mdframed

Sobreponha um nó TikZ em um mdframed

Gostaria de colocar um pequeno pedaço de texto no canto superior direito de uma caixa mdframed que estou usando para exibir o código-fonte de um programa.

Aqui está o que eu tentei:

\begin{mdframed}
\begin{minted}{swift}
print("Hello")
print("World")
for i in 0..<10 {
    print(i)
}
\end{minted}
\end{mdframed}
\tikz[overlay,remember picture]%
\node[anchor=north east,inner sep=5pt,fill=black] at (current page.north east) {\textcolor{white}{Swift}};

Isso faz com que a pequena caixa preta com a palavra "Swift" seja renderizada no canto superior direito dopágina, mas gostaria que fosse renderizado dentro da caixa do quadro. Também tentei colocar a linha tikz dentro do ambiente mdframed, mas acontece a mesma coisa: o nó aparece no canto superior direito da página.

Se eu substituir current pagepor current bounding box, não vejo o nó e a pesquisa no pdf renderizado pelo texto não o encontra, então não tenho certeza de onde ele foi!

Estou perdendo algo óbvio? Como faço para que o comando tikz saiba como ancorar o nó no ambiente mdframed?

Responder1

Isso poderia ser facilmente alcançado usando tcolorbox. Possui mintedsuporte integrado. E é mais poderoso e flexível que o mdframed. Mesmo que amanualparece um pouco complexo, mas se você dedicar algum tempo para ler, é simples e pode obter uma caixa emoldurada com uma aparência muito bonita.

Aqui está um exemplo simples:

\documentclass{report}
\usepackage[minted,skins]{tcolorbox}
\newtcblisting{mybox}[1][]{
enhanced jigsaw,
listing engine=minted,
listing only,
title=Swift,
minted language=swift,
sharp corners,
colframe=darkgray,
colback=yellow!40,
coltitle=red!70,
fonttitle=\bfseries,
boxrule=1pt,
attach boxed title to top right=
{yshift=-\tcboxedtitleheight-1pt,xshift=-1pt},
boxed title style={enhanced jigsaw,colback=lightgray,boxrule=0pt,sharp corners},
#1
}

\begin{document}
\begin{mybox}
print("Hello")
print("World")
for i in 0..<10 {
    print(i)
}
\end{mybox}
\begin{mybox}[title=LaTeX,minted language=latex,listing and text]
This is a default tcolorbox:
\begin{tcolorbox}
    example contents
\end{tcolorbox}
\end{mybox}
\end{document}

insira a descrição da imagem aqui

informação relacionada