这是一个有效的例子(但行为有些奇怪):
\documentclass{article}
\usepackage[listings]{tcolorbox}
\newtcblisting{termbox}[1][\normalsize]{%
listing options={basicstyle=#1},
}
\begin{document}
\begin{termbox}
aa
\end{termbox}
\begin{termbox}[]
aa
\end{termbox}
\begin{termbox}[\footnotesize]
aa
\end{termbox}
\end{document}
我不明白为什么首先termbox
,由于不提供[]
选项卡,所以不将其解释为列表环境的一部分,因此不显示。
然后,我尝试显示以 开头的列表环境#
(由于第一个选项卡是由 LaTeX 读取的,我几乎确信它会出错)
\documentclass{article}
\usepackage[listings]{tcolorbox}
\newtcblisting{termbox}[1][\normalsize]{%
listing options={basicstyle=#1},
}
\begin{document}
\begin{termbox}
# aa
\end{termbox}
\end{document}
! Illegal parameter number in definition of \next.
<to be read again>
}
l.12 #
aa
我尝试添加[]
(与 相同[\footnotesize]
)并查看!出现新的错误:
\documentclass{article}
\usepackage[listings]{tcolorbox}
\newtcblisting{termbox}[1][\normalsize]{%
listing options={basicstyle=#1},
}
\begin{document}
\begin{termbox}[]
# aa
\end{termbox}
\end{document}
! You can't use `macro parameter character #' in internal vertical mode.
l.1 #
aa
是我做错了什么还是软件包中存在错误?除了我实际的解决方案之外,还有其他方法可以解决这个问题吗(我创建了两个 tcblisting,一个带有参数,\normalsize
另一个带有\footnotesize
参数而没有参数)
答案1
错误出现在下半部分,代码如下执行。除非您显示正确的 LaTeX 代码,否则我认为您不会想要它。
\documentclass{article}
\usepackage[listings]{tcolorbox}
\newtcblisting{termbox}[1][\normalsize]{%
listing options={basicstyle=#1},
listing only,
}
\begin{document}
\begin{termbox}[]
# aa
\end{termbox}
\begin{termbox}[\footnotesize]
# aa
\end{termbox}
\end{document}
[]
然而,如果您打算从 开始,恐怕您需要#
。
您可能希望使用xparse
允许避免扫描输入的界面来查找可能的[
。
\documentclass{article}
\usepackage[listings,xparse]{tcolorbox}
\NewTCBListing{termbox}{!O{\normalsize}}{%
listing options={basicstyle=#1},
listing only,
}
\begin{document}
\begin{termbox}
# aa
\end{termbox}
\begin{termbox}[]
# aa
\end{termbox}
\begin{termbox}[\footnotesize]
# aa
\end{termbox}
\end{document}
这里的限制是不允许在 前面有空格[
,所以不行
\begin{termbox} [...]
但这不应该是一个问题。