我使用下面的方法将我的代码括在一个框中,我喜欢这种格式,但我遇到的问题是每次我都必须写很多东西。
在此之前begin{document}
我已经定义过:
\usepackage[framemethod=TikZ]{mdframed}
\mdfdefinestyle{MyFrame}{%
linecolor=blue,
outerlinewidth=2pt,
roundcorner=10pt,
innertopmargin=2pt,
innerbottommargin=2pt,
innerrightmargin=10pt,
innerleftmargin=10pt,
backgroundcolor=gray!50!white}
每当我希望我的盒子以正确的方式格式化时,我必须使用:
\begin{mdframed}[style=MyFrame]
\begin{verbatim}
# define str(x) #x
cout << str(test);
\end{verbatim}
\end{mdframed}
虽然我希望
\begin{myAmazingCodeBox}
# define str(x) #x
cout << str(test);
\end{myAmazingCodeBox}
有人能帮助我吗?
顺便说一下,我创建的盒子如下(如果有人感兴趣的话)
答案1
解决方案mdframed
:
\documentclass{article}
\usepackage{verbatim}
\usepackage[framemethod=TikZ]{mdframed}
\mdfdefinestyle{MyFrame}{%
linecolor=blue,
outerlinewidth=2pt,
roundcorner=10pt,
innertopmargin=2pt,
innerbottommargin=2pt,
innerrightmargin=10pt,
innerleftmargin=10pt,
backgroundcolor=gray!50!white
}
\newenvironment{myAmazingCodeBox}
{\verbatim}
{\endverbatim}
\surroundwithmdframed[style=MyFrame]{myAmazingCodeBox}
\begin{document}
\begin{mdframed}[style=MyFrame]
\begin{verbatim}
# define str(x) #x
cout << str(test);
\end{verbatim}
\end{mdframed}
\begin{myAmazingCodeBox}
# define str(x) #x
cout << str(test);
\end{myAmazingCodeBox}
\end{document}
答案2
正如 egreg 所说,你应该尝试一下tcolorbox
。这是一个示例:
\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{listings}%
\newtcblisting{myAmazingCodeBox}[1][]{%
colback=gray!50!white,boxsep=2pt,left=2pt,right=2pt,top=2pt,bottom=2pt,
colframe=blue,arc=10pt,#1}
%\tcbset{listing engine={listings}}
\begin{document}
\begin{myAmazingCodeBox}[listing only]
# define str(x) #x
cout << str(test);
\end{myAmazingCodeBox}
\end{document}
这里的优点是tcolorbox
无缝集成listings
,以便您可以传递lstset
选项。这意味着 C
您可以对代码进行语法高亮(来自listings
)。所有这些选项都留作练习。
答案3
如果您使用以下包,您可以定义自己的环境verbatim
:
\documentclass{article}
\usepackage[framemethod=TikZ]{mdframed}
\mdfdefinestyle{MyFrame}{%
linecolor=blue,
outerlinewidth=2pt,
roundcorner=10pt,
innertopmargin=2pt,
innerbottommargin=2pt,
innerrightmargin=10pt,
innerleftmargin=10pt,
backgroundcolor=gray!50!white}
\usepackage{verbatim}
\newenvironment{myAmazingCodeBox}%
{\mdframed[style=MyFrame]\verbatim}%
{\endverbatim\endmdframed}
\begin{document}
\begin{myAmazingCodeBox}
# define str(x) #x
cout << str(test);
\end{myAmazingCodeBox}
\end{document}
但我更喜欢tcolorbox
已经发布的解决方案。