
我想在 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”一詞的小黑框被渲染到右上角頁,但我希望它在框架框中呈現。我還嘗試將 tikz 行放置在 mdframed 環境中,但發生了相同的事情:節點顯示在頁面的右上角。
如果我替換current page
為current bounding box
,我根本看不到該節點,並且在渲染的 pdf 中搜尋文字也找不到它,所以我不確定它去了哪裡!
我錯過了一些明顯的東西嗎?如何讓 tikz 指令知道將節點錨定到 mdframed 環境?
答案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}