如何保留换行符

如何保留换行符

我正在尝试为自定义 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}

在此处输入图片描述

相关内容