
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 page
por 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 minted
suporte 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}