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
需要一个参数;您可以通过使用扩展语法\titleformat
和explicit
选项来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}