babel-spanish 与 hhline 冲突吗?

babel-spanish 与 hhline 冲突吗?

最近解决了彩色表格和的问题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} 

相关内容