我们如何定义自己的源代码简单环境?

我们如何定义自己的源代码简单环境?

我们希望在文档中为源代码块定义一个新的环境

\newenvironment{srcblock}%
  % Define the environment

稍后我们会用到环境:

\begin{srcblock} % use the environment
  % source code here
\end{srcblock}

我们寻求以下行为:

  • src 代码块中的每一行都有编号
  • src 代码块使用的字体是等宽字体
  • 在代码块周围绘制边框,\fbox就像
  • 每个代码块“浮动”到一个位置,以便能够容纳整个页面。

答案1

我的答案在此有所变化:看似微不足道:verbatim、newenvironment 和 colorbox。这需要对我的verbatimbox包进行一点小的修改。

\documentclass{article}
\usepackage{xcolor,caption,lipsum}
\usepackage{verbatimbox}
\makeatletter
\newenvironment{cverbbox}[5][]{%
  \setcounter{VerbboxLineNo}{0}%
  \def\verbatim@processline{%
% THE FIRST #1 ACCOUNTS FOR NON-PRINTING COMMANDS; THE SECOND #1 IS FOR
% PRINTED OPTIONAL MATERIAL
    {\addtocounter{VerbboxLineNo}{1}%
    #1\setbox0=\hbox{#1\the\verbatim@line}%
    \hsize=\wd0 \the\verbatim@line\par}}%
  \@minipagetrue%
  \@tempswatrue%
  \global\edef\sv@name{\@macro@name{#2}}%
  \global\edef\cverbboxColor{#4}%
  \global\edef\cverbboxFColor{#5}%
  \@ifundefined{\sv@name content}{%
    \expandafter\newsavebox\expandafter{\csname\sv@name content\endcsname}%
  }%
  \expandafter\global\expandafter\edef\csname\sv@name\endcsname{\usebox{%
  \csname\sv@name content\endcsname}}%
  \setbox0=\vbox\bgroup\color{#3} \verbatim
}
{%
  \endverbatim%
  \unskip\setbox0=\lastbox %
  \egroup%
  \setbox1=\hbox{%
    \colorbox{\cverbboxColor}{\box0}}%
  \global\sbox{\csname\sv@name content\endcsname}%
    {\fboxsep=\fboxrule\colorbox{\cverbboxFColor}{\box1}}%
}
\makeatother
\fboxrule=1pt\fboxsep=3pt\relax
\begin{document}
\lipsum[1]
\begin{figure*}[ht]
\begin{cverbbox}[\textcolor{black}{\scriptsize\theVerbboxLineNo~~}]{\mycvbox}{red!80}{blue!10}{cyan}
\verbatim <Text>
Here
%$#@&^* \macros
xa
\end{cverbbox}
\centerline{\mycvbox}
\caption*{My code chunk}
\end{figure*}
\lipsum[2]
\end{document}

在此处输入图片描述

答案2

这种方法不是简单环境,而是minted嵌套在您自己的浮动环境中的标准环境。不完全是要求,但是:

src 代码块中的每一行都已编号(可选地

src 代码块使用的字体是等宽字体(语法突出显示

在代码块周围绘制边框,类似于\fbox(顶部标题内使用\stdcaption,对于框外的底部标题,请使用\caption*)

每个代码块“浮动”到一个位置(具体来说,到新页面的顶部) 以便所有内容都能放在一页上。

姆韦

\documentclass[a6paper]{article}
\usepackage[margin=1cm, paperheight=5in,paperwidth=5in]{geometry}
\pagestyle{empty}
\usepackage{lipsum}
\let\stdcaption\caption
\setcounter{totalnumber}{1}
\usepackage{minted}
\usepackage{float}
\floatstyle{boxed}
\newfloat{fancycode}{t}{loa}
\floatname{fancycode}{LaTeX code}

\begin{document}


\begin{fancycode}
\stdcaption[Basic Structure]{The basic structure of a \LaTeX\ document.}
\begin{minted}[linenos,bgcolor=orange!05]{latex}
    \documentclass{article} 
    \begin{document}
    \end{document}
\end{minted}
\end{fancycode}

\begin{fancycode}
\stdcaption[Preamble]{The \LaTeX\ preamble to do a \texttt{fancycode}.}
\begin{minted}[linenos,bgcolor=cyan!10]{latex}
    \usepackage{minted}
    \usepackage{float}
        \floatstyle{boxed}
        \newfloat{fancycode}{t}{loa}
        \floatname{fancycode}{LaTeX code}
\end{minted}
\end{fancycode}

\lipsum[1-2]

\listof{fancycode}{Code examples}

\end{document}

相关内容