我正在使用\diagbox
包来使用 [JASSS 模板] 来格式化表格(https://www.overleaf.com/latex/templates/jasss-article-template/pnrdvncxsjmn)。但是,使用它后,整个文档的字体类型、大小和颜色都会发生变化。我使用的软件包列表如下。
\documentclass{JASSS}
\usepackage[ruled,vlined]{algorithm2e}
\usepackage[original]{pict2e}
\usepackage{algorithmic}
\usepackage{graphics}
\usepackage{epsfig}
\usepackage{amssymb}
\usepackage{bbm}
\usepackage{array}
\usepackage{amsmath}
\usepackage{romannum}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{tikz}
\usetikzlibrary{automata}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows}
\usepackage{ragged2e, eqparbox}
\usepackage{adjustbox}
\usepackage{multirow}
\usepackage{diagbox}
\usepackage{subfigure}
\usepackage{xurl}
\usepackage{makecell}
\begin{document}
\newcommand\norm[1]{\left\lVert#1\right\rVert}
\definecolor{linkcolor}{rgb}{0,0,0.4}
\newcolumntype{M}[1]{>{\RaggedRight}m{#1} <{\hspace*{-1pt}}}
\DeclareUnicodeCharacter{2010}{-}
\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}m{#1}}
\begin{tabular}{|c|c|c|c|}
\toprule
\multicolumn{2}{|c|}{\diagbox[trim=l,height=3\line]{\small\textbf{A\& B}}{\small\strut \textbf{C}}}& \textbf{D} & \textbf{E}\\
\end{tabular}
\label{table2}
\end{table}
\end{document}
答案1
以下 MWE 重现了该问题:
\documentclass{JASSS}
\usepackage{diagbox}
\begin{document}
\parano{}
\section{Section title}
Some text in the section
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{2}{|c|}{\diagbox[trim=l,height=3\line]{\small\textbf{A\& B}}{\small\strut \textbf{C}}}& \textbf{D} & \textbf{E}\\
\hline
\end{tabular}
\section{New section}
some more text\par
extra paragraph\par
and a third
\endparano
\end{document}
问题是 JASSS 类重新定义了显示节号的宏 ( \thesection
),以重置该类用于在每个段落前显示数字的计数器。该diagbox
包加载了该calc
包,但calc
无法正确处理这种计数器重置 - 或者可以说 JASSS 无法calc
正确处理该包。
以下行JASSS.cls
导致了问题:
% line 246
\renewcommand\thesection{\setcounter{parano}{0}}
要解决此问题,您可以使用 以不同的方式重置段落编号\@addtoreset
。然后,您可以提供一个\thesection
不执行任何操作的新重新定义,其效果是删除章节编号(这是所需的)并且不会触发错误calc
(这也是所需的)。
解决方案的 MWE:
\documentclass{JASSS}
\usepackage{diagbox}
\makeatletter
\@addtoreset{parano}{section}
\makeatother
\renewcommand\thesection{\relax}
\begin{document}
\parano{}
\section{Section title}
Some text in the section
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{2}{|c|}{\diagbox[trim=l,height=3\line]{\small\textbf{A\& B}}{\small\strut \textbf{C}}}& \textbf{D} & \textbf{E}\\
\hline
\end{tabular}
\section{New section}
some more text\par
extra paragraph\par
and a third
\endparano
\end{document}
结果:
请注意,我用 替换\toprule
,\hline
因为\toprule
与 不太对齐\diagbox
。
一般说明:您的问题集中在您观察到的颜色和字体变化上。但是,真正的错误是 的问题calc
,这与字体或颜色无关。您看到更改的原因是 Overleaf(以及许多桌面编辑器)设置为在发生错误后继续。但是,在这种情况下,错误通常会导致代码中出现不相关的问题,正如您在此处遇到的那样。因此,Overleaf 中的这种设置相当不幸,因为它会导致极具误导性的行为,例如人们认为diagbox
改变颜色。诊断此类问题的正确方法是,当发生任何错误时(在 Overleaf 中,在“重新编译”按钮旁边显示为红色框),不看输出而是单击错误指示器并阅读报告的第一个错误的实际错误消息。