最近解决了彩色表格和的问题hhline
,我发现,当babel-spanish
模块生成>
和<
活动字符时,使用诸如\hhline{>{\arrayrulecolor{some colour}}--}
不起作用的代码:线保持黑色。
一种解决方法是使用 来禁用这些字符\shorthandoff
。但是,表格环境序言中的相同类型的构造确实有效,因此我想知道是否不应将其报告为 中的错误hhline
。
这是一个非常简短的代码,演示了这种行为:
\documentclass[spanish, table]{article}%
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{array}
\usepackage{hhline}
\usepackage[table]{xcolor}
\parindent = 0pt
\begin{document}
Without \verb|\shorthandoff|: \medskip
\begin{tabular}{| >{\bfseries}cc|}
\hhline{--}
Some text & Some other text
\\
\hhline{>{\arrayrulecolor{red}}->{\arrayrulecolor{blue}}-}
\end{tabular}
\vspace{1cm}
With \verb|\shorthandoff{<>}|: \medskip
\shorthandoff{<>}\begin{tabular}{|>{\bfseries}cc|}
\hhline{--}
Some text & Some other text
\\
\hhline{>{\arrayrulecolor{red}}->{\arrayrulecolor{blue}}-}
\end{tabular}
\end{document}
答案1
colortbl
的版本\hhline
可以更照顾到主动角色,如下所示:
\documentclass[spanish, table]{article}%
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{array}
\usepackage{hhline}
\usepackage[table]{xcolor}
\parindent = 0pt
{\makeatletter
\catcode`\>\active
\catcode`\-\active
\gdef\hhline#1{\omit\@firstamptrue\@tempswafalse
\global\setbox\@ne\HH@box\doublerulesep\doublerulesep
\expandafter\let\expandafter>\string>%
\expandafter\let\expandafter-\string-%
\xdef\@tempc{\ifx\extrarowheight\HH@undef\hskip\string-.5\arrayrulewidth\fi}%
\HH@xexpast\relax#1*0x\@@\toks@{}\expandafter\HH@let\@tempa`}
}
\begin{document}
Without \verb|\shorthandoff|: \medskip
\begin{tabular}{| >{\bfseries}cc|}
\hhline{--}
Some text & Some other text
\\
\hhline{>{\arrayrulecolor{red}}->{\arrayrulecolor{blue}}-}
\end{tabular}
\vspace{1cm}
With \verb|\shorthandoff{<>}|: \medskip
\shorthandoff{<>}\begin{tabular}{|>{\bfseries}cc|}
\hhline{--}
Some text & Some other text
\\
\hhline{>{\arrayrulecolor{red}}->{\arrayrulecolor{blue}}-}
\end{tabular}
\end{document}