
Me gustaría colocar un pequeño fragmento de texto en la parte superior derecha de un cuadro enmarcado en md que estoy usando para mostrar el código fuente de un programa.
Esto es lo que he probado:
\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}};
Esto hace que el pequeño cuadro negro con la palabra "Swift" se muestre en la parte superior derecha de lapágina, pero me gustaría que se renderizara dentro del cuadro del marco. También intenté colocar la línea tikz dentro del entorno mdframed, pero sucede lo mismo: el nodo aparece en la parte superior derecha de la página.
Si lo reemplazo current page
con current bounding box
, no veo el nodo en absoluto y al buscar el texto en el pdf renderizado no lo encuentro, así que no estoy seguro de adónde fue.
¿Me estoy perdiendo algo obvio? ¿Cómo consigo que el comando tikz sepa anclar el nodo al entorno mdframed?
Respuesta1
Esto podría lograrse fácilmente utilizando tcolorbox
. Tiene soporte incorporado minted
. Y es más potente y flexible que mdframed
. A pesar demanualParece un poco complejo, pero si te tomas un tiempo para leerlo, es sencillo y puedes lograr una caja enmarcada con un aspecto realmente bonito.
Aquí hay un ejemplo simple:
\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}