我想在 tcolorbox 中定义一个环境。
6 个问题:
- 为什么当我想使用数学较低和ams 对齐* 较低将下部设置为带有字体 \displaystyle 的数学模式,出现错误?
- 为什么声明 \bfseries 在fontupper=\bfseries不行吗?
- 如何在 listings 包中定义 Maple 代码?我想将 maple 代码放在上部,我必须自己定义该样式。
- 我想放>字符位于上部任何行之前,如何做到这一点?
- 为什么 when 使用 before上={\texttt{>}},代码出现在换行符之后>字符?
- 我用中下,但下部中心未发生移动。
参见此代码:
\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 个问题。我尝试给出一个答案,但您的问题针对的是不同的问题。
\tcblisting
将基于用户创建的环境与 amsmath 环境的一些特定 hack混合在一起时会出现问题align
。我有一个解决方案,但对于你的情况,有一种更简单的方法(见下面的示例)。更新:tcolorbox v2.72
通用解决方案将成为(未来)的一部分。- 列表通过设置进行格式化
listings
。因此,使用basicstyle
设置列表字体。 - @Christian H. 在他的评论中回答了这个问题。删除该
@
字符。 - 更新:这本身就是一个问题。我认为这是一个
listings
综合问题:如何在列表的每一行前插入文字?您将在下面的第二个示例中找到答案(一个技巧)。 - 您在以新段落开始的
>
之前插入了 。lstlisting
- 您否决了
center lower
。math lower
同样的方式。nobeforeafter
否决before
和after
。
以下代码示例尝试满足您的请求,但以下情况除外>
:
\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}