TikZ 노드를 mdframed에 오버레이

TikZ 노드를 mdframed에 오버레이

프로그램의 소스 코드를 표시하는 데 사용하는 mdframed 상자의 오른쪽 상단에 작은 텍스트 조각을 배치하고 싶습니다.

내가 시도한 것은 다음과 같습니다.

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

그러면 "Swift"라는 단어가 포함된 작은 검은색 상자가 화면 오른쪽 상단에 렌더링됩니다.페이지, 하지만 프레임 상자 내부에 렌더링하고 싶습니다. 또한 mdframed 환경 내에 tikz 라인을 배치하려고 시도했지만 동일한 일이 발생합니다. 노드가 페이지 오른쪽 상단에 표시됩니다.

current page으로 바꾸면 current bounding box노드가 전혀 표시되지 않고 렌더링된 PDF에서 텍스트를 검색해도 찾을 수 없으므로 노드가 어디로 갔는지 잘 모르겠습니다.

나는 분명한 것을 놓치고 있습니까? 노드를 mdframed 환경에 고정하는 방법을 알기 위해 tikz 명령을 어떻게 얻나요?

답변1

이는 를 사용하여 쉽게 달성할 수 있습니다 tcolorbox. 기본적으로 minted지원됩니다. .보다 더 강력하고 유연합니다 mdframed. 비록수동약간 복잡해 보이지만 시간을 들여 읽어보면 간단하고 정말 멋진 프레임 상자를 얻을 수 있습니다.

다음은 간단한 예입니다.

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

여기에 이미지 설명을 입력하세요

관련 정보