Überlagern Sie einen TikZ-Knoten in einem MDFrame

Überlagern Sie einen TikZ-Knoten in einem MDFrame

Ich möchte oben rechts in einer MDFrame-Box, die ich zur Anzeige des Quellcodes eines Programms verwende, einen kleinen Text einfügen.

Folgendes habe ich versucht:

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

Dies führt dazu, dass die kleine schwarze Box mit dem Wort "Swift" oben rechts imSeite, aber ich möchte, dass es innerhalb des Rahmenfelds gerendert wird. Ich habe auch versucht, die Tikz-Zeile in die MDFramed-Umgebung zu platzieren, aber es passiert dasselbe: Der Knoten wird oben rechts auf der Seite angezeigt.

Wenn ich current pagedurch ersetze current bounding box, wird mir der Knoten überhaupt nicht angezeigt, und auch die Suche nach dem Text im gerenderten PDF bringt ihn nicht zum Vorschein. Daher bin ich mir nicht einmal sicher, wo er hin ist!

Übersehe ich etwas Offensichtliches? Wie bringe ich den Tikz-Befehl dazu, den Knoten in der MDFramed-Umgebung zu verankern?

Antwort1

Dies kann leicht erreicht werden, indem verwendet wird tcolorbox. Es verfügt über integrierte mintedUnterstützung. Und es ist leistungsfähiger und flexibler als mdframed. Obwohl dieHandbuchsieht ein wenig kompliziert aus, aber wenn Sie sich die Zeit zum Lesen nehmen, ist es unkompliziert und Sie können eine wirklich schön aussehende gerahmte Box erhalten.

Hier ist ein einfaches Beispiel:

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

Bildbeschreibung hier eingeben

verwandte Informationen