我正在尝试为自定义 DSL 定义自定义环境,并写道
% Preamble
\documentclass[11pt]{article}
% Packages
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{tcolorbox}
\tcbset{width=0.9\textwidth,boxrule=0pt,colback=blue,arc=0pt,auto outer arc,left=0pt,right=0pt,boxsep=5pt,fontupper=\color{yellow}}
\newenvironment{code}
{
\fontfamily{cmtt}\selectfont
%\textcolor{yellow}
%\colorbox{BlueViolet}
\begin{tcolorbox}
}
{
\end{tcolorbox}
}
% Document
\begin{document}
Example program:
\begin{code}
print("Hello world");
exit(0);
\end{code}
\end{document}
不幸的是,环境中的代码code
没有保留换行符。
答案1
您使用的是“普通”tcolorbox 来显示代码。在这种情况下,您的文本行为与.tex
文件中的行为类似,这意味着新行需要在段落或之间留一个空行\\
。
无论如何,我建议使用一个tcblisting
定义为使用listings
包的框(您也可以使用minted
)。在这种情况下,每行代码都显示在不同的行中。
% Preamble
\documentclass[11pt]{article}
% Packages
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{listings}
\usepackage[most]{tcolorbox}
\tcbset{
codestyle/.style={width=0.9\textwidth,boxrule=0pt,colback=blue,arc=0pt,auto outer arc,left=0pt,right=0pt,boxsep=5pt,fontupper=\ttfamily, colupper=yellow}
}
\newtcolorbox{code}{codestyle}
\newtcblisting{codelisting}{listing only, codestyle}
% Document
\begin{document}
Example program:
\begin{code}
print("Hello world");
exit(0);
\end{code}
\begin{codelisting}
print("Hello world");
exit(0);
\end{codelisting}
\end{document}