我无法使用为框架提供可能为空的标题的宏tcolorbox
。
这是使用的代码。
\documentclass{article}
\RequirePackage{tcolorbox}
\begin{document}
\def\thistitle{One title}
\begin{tcolorbox}[title = \thistitle]
Bla, bla, bla....
\end{tcolorbox}
\def\thistitle{}
\begin{tcolorbox}[title = \thistitle]
Bla, bla, bla....
\end{tcolorbox}
\begin{tcolorbox}[title = {}]
Bla, bla, bla....
\end{tcolorbox}
\end{document}
答案1
pgfkeys
您应该阅读TikZ & PGF 手册。.expand once
以及.expanded
可以解决这里的问题,因为您想要获得与title={}
扩展为\thistitle
空时相同的结果(.expand once
在我看来,这比这里更好.expanded
,因为它不会扩展超过必要的范围)。
\documentclass{article}
\usepackage{tcolorbox}
\begin{document}
\newcommand{\thistitle}{One title}
\begin{tcolorbox}[title/.expand once = \thistitle]
Bla, bla, bla....
\end{tcolorbox}
\renewcommand{\thistitle}{}
\begin{tcolorbox}[title/.expand once = \thistitle]
Bla, bla, bla....
\end{tcolorbox}
\begin{tcolorbox}[title = {}]
Bla, bla, bla....
\end{tcolorbox}
\end{document}
这是使用etoolbox
自定义mytitle
键的另一种方法。它与之前的技术不同,因为它\thistitle
绝不会提供任何扩展title
。该title
键要么用 调用\thistitle
,要么根本不调用。
\documentclass{article}
\usepackage{tcolorbox}
\usepackage{etoolbox}
\tcbset{mytitle/.code={%
\expandafter\ifstrempty\expandafter{\thistitle}
{}
{\pgfkeysalso{title=\thistitle}}%
}}
\begin{document}
\newcommand{\thistitle}{One title}
\begin{tcolorbox}[mytitle = \thistitle]
Bla, bla, bla....
\end{tcolorbox}
\renewcommand{\thistitle}{}
\begin{tcolorbox}[mytitle = \thistitle]
Bla, bla, bla....
\end{tcolorbox}
\begin{tcolorbox}[mytitle = {}]
Bla, bla, bla....
\end{tcolorbox}
\end{document}
与上面相同的输出。