newtcblisting 的可选参数?

newtcblisting 的可选参数?

是否可以有可选参数newtcblisting

我用吗\ifthenelse

答案1

编辑:添加了@cmhughes 在他的评论中使用 xparse 库建议的解决方案。

这是 tcolorbox 手册第 4.13 页 302 的一个例子,方括号 [ ] 中的参数是可选的:

\documentclass{article}
\usepackage[most]{tcolorbox}

\newtcblisting{mybox}[2][]{%
colback=red!5!white,
colframe=red!75!black,
fonttitle=\bfseries,
title=#2,#1}


\begin{document}
\begin{mybox}%[listing only]
{Listing Box}
This is my \LaTeX\ box.
\end{mybox}
\bigskip

\begin{mybox}[listing only]
{Listing Box}
This is my \LaTeX\ box.
\end{mybox}
\bigskip

\begin{mybox}[listing side text]
{Listing Box}
This is my
\LaTeX\ box.
\end{mybox}

\end{document}

输出:

在此处输入图片描述

使用 xparse 库的第二种解决方案

格式为\DeclareTCBListing[init options]{name}{specification}{options} {specifications} 是 xparse 包的格式。

在示例中,来自手册 4.13 第 441 页的规范为 { s O{} m },其中:

  • “s” 是一个可选的星号,如果存在星号,则结果为 \BooleanTrue,否则为 \BooleanFalse(如下所述)。
  • O{} 与“o”相同,但如果未指定值,则返回 hdefaulti。应指定为 O{hdefaulti}。
  • m 是标准强制参数,可以是单个标记,也可以是花括号括起来的多个标记。无论输入是什么,该参数都将传递给括号对包围的内部代码。这是普通 TEX 参数的 xparse 类型说明符

有关更多信息,请参阅 xparser 包文档:解析

\documentclass{article}
\usepackage[most]{tcolorbox}

\DeclareTCBListing{mybox}{ s O{} m }{%
colback=red!5!white,
colframe=red!75!black,
fonttitle=\bfseries,
IfBooleanTF={#1}
{listing side text}
{text side listing},
title=#3,#2}

\begin{document}

\begin{mybox}{Listing Box}
This is my
\LaTeX\ box.
\end{mybox}
\bigskip
\begin{mybox}*{Listing Box}
This is my
\LaTeX\ box.
\end{mybox}
\bigskip
\begin{mybox}[colback=yellow]
{Listing Box}
This is my
\LaTeX\ box.
\end{mybox}

\end{document}

xparse-listing

相关内容