titlesec 和 colortbl 之间的冲突

titlesec 和 colortbl 之间的冲突

titlesec我遇到了和之间的冲突colortbl,似乎无法解决。

下面是最小的工作示例。我一输入\section,pdflatex 就出错了! Missing number, treated as zero. <to be read again> } l.9 \section{First Section}

为了使其工作,我必须:

  • 不使用sections(显然不可行)
  • 不使用我的部分样式(但期刊要求它!)
  • 不使用彩色表格(但我想!)

您能帮我制作这个文档,其中包含我的部分标题样式和表格中的彩色单元格吗?

谢谢,斯文。

下面编辑以包含我使用的全套titlesec命令titleformat

\documentclass{article}

\usepackage{colortbl}
\usepackage{textcase}
\usepackage[explicit]{titlesec}
\titleformat{\section}
  {\normalfont\bfseries\filcenter}{\thesection}{1em}{\MakeTextUppercase{#1}}
\titlespacing*{\subsection}{0pt}{1em}{0em}
\titlespacing*{\subsubsection}{0pt}{1em}{0em}
\titleformat*{\subsection}{\bfseries}
\titleformat*{\subsubsection}{\bfseries}


\begin{document}

\section{First Section}
\subsection{a sub Sec}
If I define a section (by uncommenting above)... it fails.
\subsubsection{Again}

If I then do one of:
\begin{itemize}
\item{Remove the table (and colortbl package}
\item{Remove my section formatting above}
\end{itemize}
... my doc will compile, but I won't have the style I want.

\begin{table}[!ht]
\begin{tabular}{ |c|l|l } \hline
\rowcolor{red} A    & B     & C     \\ \hline
Hello World         & other     & \cellcolor{blue}stuff\\ \hline
\end{tabular}
\caption{How can I get colored table cells and keep my section heading format?}
\end{table}

\end{document}

为了在发生包冲突时提供参考,下面是我在完整文档中使用的其他包的列表(但似乎不会影响这个特定的错误):

\usepackage[left=18mm,top=20mm,right=18mm,bottom=25mm,includehead,nofoot,headheight=0pt,headsep=5mm]{geometry}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{dcolumn}
\usepackage{hyperref}
\usepackage{tabularx}
\usepackage{subfig}
\usepackage{url}
\usepackage[capitalise,noabbrev]{cleveref}
\usepackage{epstopdf}
\usepackage[absolute]{textpos}

答案1

这些包之间没有冲突;问题是\MakeUppercase需要一个参数;您可以通过使用扩展语法\titleformatexplicit选项来titlesec明确访问标题来解决这个问题:

\documentclass{article}
\usepackage{colortbl}
\usepackage{textcase}
\usepackage[explicit]{titlesec}
\titleformat{\section}
  {\normalfont\bfseries\filcenter}{\thesection}{1em}{\MakeTextUppercase{#1}}

\begin{document}

\section{First Section}

\begin{table}[!ht]
\centering
\begin{tabular}{ |c|l|l } \hline
\rowcolor{red} A    & B     & C     \\ \hline
Hello World         & other     & \cellcolor{blue}stuff\\ \hline
\end{tabular}
\caption{Problem solved!}
\end{table}

\end{document}

在此处输入图片描述

还要注意,我使用的是\MakeTextUppercase来自textcase包装的产品(它比标题中的标准更安全\MakeUppercase)。

对原始问题进行编辑后,现在的代码针对其他部分单元进行了必要的修改:

\documentclass{article}
\usepackage{colortbl}
\usepackage{textcase}
\usepackage[explicit]{titlesec}

\titleformat{\section}
  {\normalfont\normalsize\bfseries\filcenter}{\thesection}{1em}{\MakeTextUppercase{#1}}
\titleformat{\subsection}
  {\normalfont\normalsize\bfseries}{\thesubsection}{1em}{#1}
\titlespacing*{\subsection}{0pt}{1em}{0em}
\titlespacing*{\subsubsection}{0pt}{1em}{0em}

\begin{document}

\section{Test Section}
\subsection{Test Subsection}
\subsubsection{Test Subsubsection}
\begin{table}[!ht]
\centering
\begin{tabular}{ |c|l|l } \hline
\rowcolor{red} A    & B     & C     \\ \hline
Hello World         & other     & \cellcolor{blue}stuff\\ \hline
\end{tabular}
\caption{Problem solved!}
\end{table}

\end{document}

在此处输入图片描述

相关内容