在 tcolorbox 中定义环境,并在下方使用数学模式

在 tcolorbox 中定义环境,并在下方使用数学模式

我想在 tcolorbox 中定义一个环境。

6 个问题:

  1. 为什么当我想使用数学较低ams 对齐* ‎较低‎将下部设置为带有字体 \displaystyle 的数学模式,出现错误?
  2. 为什么声明 \bfseries 在‎fontupper=‎\bfseries‎不行吗?
  3. 如何在 listings 包中定义 Maple 代码?我想将 maple 代码放在上部,我必须自己定义该样式。
  4. 我想放>字符位于上部任何行之前,如何做到这一点?
  5. 为什么 when 使用 before上=‎{‎\texttt{>}‎‎‎‎}‎‎,代码出现在换行符之后>字符?
  6. 我用‎中下‎,但下部中心未发生移动。

参见此代码:

\documentclass{article}

\usepackage[svgnames]{xcolor}
\usepackage{tcolorbox}
\usepackage{amsmath,amsfonts,amssymb,amsthm}
\usepackage{lipsum}
%\usepackage{maplestd2e}

\tcbuselibrary{listings}
\tcbuselibrary{skins}
\tcbuselibrary{theorems}

\definecolor{ocre}{RGB}{243,102,25}

%\lst@definelanguage{Maple}%
%{morekeywords={and,assuming,break,by,catch,description,do,done,%
%elif,else,end,error,export,fi,finally,for,from,global,if,%
%implies,in,intersect,local,minus,mod,module,next,not,od,%
%option,options,or,proc,quit,read,return,save,stop,subset,then,%
%to,try,union,use,uses,while,xor},%
%sensitive=true,%
%morecomment=[l]\#,%
%morestring=[b]",%
%morestring=[d]"%
%}[keywords,comments,strings]% 

\newtcblisting{code}[1]{
           lowerbox=visible, % visible,invisible,ignored,
%          colback=black,
           skin=bicolor,
%          colbacklower=white,
%          colupper=white,
%          collower=black,
           overlay={\draw[dashed,black] (segmentation.west)--(segmentation.east);},
%          listing options={language={Maple}},
%          frame style={draw=black,left color=Gold,right color=Goldenrod!50!Gold},
           fontupper=\bfseries,
           fontlower=\sffamily\bfseries,
           width=\linewidth,
%          toprule=1mm,bottomrule=.3mm,rightrule=.3mm,leftrule=3mm,
           boxrule=0.5mm,
           outer arc=1mm,arc=1mm,
%          leftupper=3cm,leftlower=3cm,rightupper=4cm,rightlower=3cm,
           top=1mm,bottom=1mm,middle=1mm,
%          height=,
           valign=center,
           valign lower=center,
           before=\begin{center},after=\end{center},
           before upper={\texttt{>}},
           before lower={\begin{center}},
           after lower={\end{center}},
           center lower, % center upper,
%          flushright upper,
           nobeforeafter, 
           math lower,
%          ams align* lower,
           listing and comment,
           comment={#1}
           }

\begin{document}


\begin{code}{\frac{n}{n+1}}
2+3;
\end{code}

\end{document}

输出:

在此处输入图片描述

答案1

正如您所写的,您问了 6 个问题。我尝试给出一个答案,但您的问题针对的是不同的问题。

  1. \tcblisting将基于用户创建的环境与 amsmath 环境的一些特定 hack混合在一起时会出现问题align。我有一个解决方案,但对于你的情况,有一种更简单的方法(见下面的示例)。更新:tcolorbox v2.72通用解决方案将成为(未来)的一部分。
  2. 列表通过设置进行格式化listings。因此,使用basicstyle设置列表字体。
  3. @Christian H. 在他的评论中回答了这个问题。删除该@字符。
  4. 更新:这本身就是一个问题。我认为这是一个listings综合问题:如何在列表的每一行前插入文字?您将在下面的第二个示例中找到答案(一个技巧)。
  5. 您在以新段落开始的>之前插入了 。lstlisting
  6. 您否决了center lowermath lower同样的方式。nobeforeafter否决beforeafter

以下代码示例尝试满足您的请求,但以下情况除外>

\documentclass{article}

\usepackage[svgnames]{xcolor}
\usepackage{tcolorbox}
\usepackage{amsmath,amsfonts,amssymb,amsthm}
\usepackage{lipsum}

\tcbuselibrary{listings,skins,theorems}

\lstdefinelanguage{Maple}%
{aboveskip={0pt},belowskip={0pt},basicstyle=\bfseries,
morekeywords={and,assuming,break,by,catch,description,do,done,%
elif,else,end,error,export,fi,finally,for,from,global,if,%
implies,in,intersect,local,minus,mod,module,next,not,od,%
option,options,or,proc,quit,read,return,save,stop,subset,then,%
to,try,union,use,uses,while,xor},%
sensitive=true,%
morecomment=[l]\#,%
morestring=[b]",%
morestring=[d]"%
}[keywords,comments,strings]%

\newtcblisting{code}[1]{
           skin=bicolor,
           overlay={\draw[dashed,black] (segmentation.west)--(segmentation.east);},
           listing options={language={Maple}},
           boxrule=0.5mm,arc=1mm,
           top=1mm,bottom=1mm,middle=1mm,
           listing and comment,
           ams nodisplayskip lower,
           comment={\begin{align*}#1\end{align*}}
           }

\begin{document}

\begin{code}{\frac{n}{n+1}}
2+3;
\end{code}

\end{document}

在此处输入图片描述

更新: 以下技巧允许在列表的每一行前插入文本。这里>插入了红色:

\documentclass{article}

\usepackage[svgnames]{xcolor}
\usepackage{tcolorbox}
\usepackage{amsmath,amsfonts,amssymb,amsthm}
\usepackage{lipsum}

\tcbuselibrary{listings,skins,theorems}

\makeatletter
\tcbset{every listing line/.code={%
  \def\lst@NewLine{%
      \ifx\lst@OutputBox\@gobble\else
          \par\noindent \hbox{}#1%
      \fi
      \global\advance\lst@newlines\m@ne
      \lst@newlinetrue}}}
\makeatother


\lstdefinelanguage{Maple}%
{aboveskip={0pt},belowskip={0pt},basicstyle=\bfseries,
morekeywords={and,assuming,break,by,catch,description,do,done,%
elif,else,end,error,export,fi,finally,for,from,global,if,%
implies,in,intersect,local,minus,mod,module,next,not,od,%
option,options,or,proc,quit,read,return,save,stop,subset,then,%
to,try,union,use,uses,while,xor},%
sensitive=true,%
morecomment=[l]\#,%
morestring=[b]",%
morestring=[d]"%
}[keywords,comments,strings]%

\newtcblisting{code}[1]{
           skin=bicolor,
           overlay={\draw[dashed,black] (segmentation.west)--(segmentation.east);},
           listing options={language={Maple}},
           boxrule=0.5mm,arc=1mm,
           top=1mm,bottom=1mm,middle=1mm,
           listing and comment,
           ams nodisplayskip lower,
           comment={\begin{align*}#1\end{align*}},
           every listing line={\textcolor{red}{\ttfamily>}}
           }

\begin{document}

\begin{code}{\frac{n}{n+1}}
2+3;
4+5;
\end{code}

\end{document}

在此处输入图片描述

相关内容