带有 tcolorbox 的表格无法正常工作

带有 tcolorbox 的表格无法正常工作

我使用 tcolorbox 定义 mytables,但是不起作用。

\documentclass{book}
\usepackage{array,tabularx}
\usepackage[table]{xcolor}
\usepackage{amsmath,amsfonts,amssymb,amsthm}
\usepackage{tcolorbox}
\usepackage{colortbl}
\tcbuselibrary{listings,skins,theorems,xparse,fitting}


\newtcolorbox{mytables}{%
width=\linewidth,
enhanced,
fonttitle=\bfseries\large,
fontupper=\normalsize\sffamily,
colback=yellow!10!white,
colframe=red!50!black,
colbacktitle=green,
coltitle=black,
center title}

\begin{document}

\begin{mytables}[tabularx={|X|},title=My table]
  a b c d e f g h i j k l m n o p q r s t u v w x y z \\\hline
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \\\hline
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9
\end{mytables}


\end{document}

输出:

在此处输入图片描述

答案1

语法\newtcolorbox如下:

\newtcolorbox[⟨init options⟩]{⟨name⟩}[⟨number⟩][⟨default⟩]{⟨options⟩}

其中[⟨number⟩],是新环境应该具有的参数数量,[⟨default⟩]是第一个参数的默认值。由于您没有[1][]在代码中包含,因此第一个参数不是预期的,从而导致出现错误消息。为了不仅告知tcolorbox需要mytables可选参数,而且为了使用您在此处添加的任何代码,我还添加了#1环境的定义mytables

我还添加了一个替代方案,其中我使用\tcbset并定义了一种可以在常规tcolorbox环境中使用的新样式。 两种方法均产生以下输出:

在此处输入图片描述

对序言中的软件包有一些小的评论:使用\usepackage[table]{xcolor}已经加载colortbl,因此不需要\usepackage{colortbl}。同样,tabularx加载array,因此不需要明确加载后者。最后,amssymb内部加载amsfonts,因此您可以省略后者。

\documentclass{book}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{tcolorbox}
\tcbuselibrary{listings,skins,theorems,xparse,fitting}



\newtcolorbox{mytables}
[1][]                        % <----------- added
{% 
width=\linewidth,
enhanced,
fonttitle=\bfseries\large,
fontupper=\normalsize\sffamily,
colback=yellow!10!white,
colframe=red!50!black,
colbacktitle=green,
coltitle=black,
center title, 
#1                            %<------------- added
}

\tcbset{mytables/.style={%
width=\linewidth,
enhanced,
fonttitle=\bfseries\large,
fontupper=\normalsize\sffamily,
colback=yellow!10!white,
colframe=red!50!black,
colbacktitle=green,
coltitle=black,
center title}}

\begin{document}

\begin{mytables}[tabularx={|X|},title=My table]
  a b c d e f g h i j k l m n o p q r s t u v w x y z \\\hline
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \\\hline
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9
\end{mytables}


\begin{tcolorbox}[mytables,tabularx={|X|},title=My table]
  a b c d e f g h i j k l m n o p q r s t u v w x y z \\\hline
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \\\hline
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9
\end{tcolorbox}
\end{document}

相关内容