基于两个现有环境(mdframed、spverbatim)的新环境

基于两个现有环境(mdframed、spverbatim)的新环境

我想定义一个环境,将使用该spverbatim包的逐字文本放入由该包定义的框架中mdframed。这是我的(天真的)方法:

\documentclass{scrreprt}
\usepackage{mdframed}
\usepackage{spverbatim}
\usepackage{color}
\definecolor{lightblue}{RGB}{240,248,255}

\newmdenv
[
backgroundcolor=lightblue,
hidealllines=true,
frametitlerule=false,
frametitle=,
]{notesx}

\newenvironment{notes}
{\begin{notesx}\begin{spverbatim}}
{\end{spverbatim}\end{notesx}}

\begin{document}

% works
\begin{notesx}
\begin{spverbatim}
Test 1
Test 2
\end{spverbatim}
\end{notesx}

% does not work
\begin{notes}
Test 1
Test 2
\end{notes}


\end{document}

使用定义的环境时notes出现以下错误:

Runaway argument?
\end{document}
! File ended while scanning use of \@xverbatim.

notesx使用添加环境的环境spverbatim工作正常。

编辑:使用surroundwithmdframed有效,但是当为自定义环境设置它\newenvironment{notes}{\begin{spverbatim}}{\end{spverbatim}}而不是spverbatim使用更好的名称时,它不起作用:! File ended while scanning use of \@xverbatim.

答案1

spverbatim你可以使用与我相同的想法重新定义逐字环境

使用该verbatim包,您可以定义一个适用的新环境\surroundwithmdframed

\documentclass{article}
\usepackage{verbatim,mdframed,ragged2e}
\usepackage{color}

\definecolor{lightblue}{RGB}{240,248,255}

\surroundwithmdframed[
  backgroundcolor=lightblue,
  hidealllines=true,
  frametitlerule=false,
  frametitle=,
]{notes}

\makeatletter
\def\notes{\def\@xobeysp{\mbox{}\space}\emergencystretch=\textwidth\RaggedRight\verbatim}
\let\endnotes\endverbatim
\makeatother

\begin{document}

\begin{notes}
Something breakable but otherwise typeset @#verbatim#} with special characters accessible
Test 1
Test 2
\end{notes}

\end{document}

在此处输入图片描述

相关内容