Chronology 包与 siunitx 冲突

Chronology 包与 siunitx 冲突

尝试向文档添加基本时间线。年表软件包似乎是一个不错的选择,但我遇到了与 siunitx 的冲突。MWE 将按原样运行,但取消注释 \usepackage{siunitx} 会出现错误:LaTeX cmd 错误:命令‘\unit’已定义。}

\documentclass[11 pt]{article}
\usepackage{chronology}
%\usepackage{siunitx}
\begin{document}
    \begin{chronology}[5]{1989}{2025}{\textwidth}[100ex]
        \eventpoint{\decimaldate{25}{8}{1991}}{Event One}[red][1][0.5]
        \eventpoint{\decimaldate{1}{5}{2011}}{Event Two}[red][1][0.5]
        \eventpoint{\decimaldate{5}{9}{2017}}{Event Three}[red][1][0.5]
    \end{chronology}
\end{document}

答案1

该包chronology在使用用户空间名称定义内部参数时犯了一个很大的错误。

尤其是

\newlength{\unit}

用于内部宏,使得用户或其他包无法定义\unit。长度是内部的,因为手册中甚至没有提到它。

解决方案:siunitx先加载,\unit然后更改为\siunit。代码无法重复使用,但至少对您的文档有用。

\documentclass[11pt]{article}
\usepackage{siunitx}

\NewCommandCopy{\siunit}{\unit}
\let\unit\relax

\usepackage{chronology}

\begin{document}

\begin{chronology}[5]{1989}{2025}{\textwidth}[100ex]
  \eventpoint{\decimaldate{25}{8}{1991}}{Event One}[red][1][0.5]
   \eventpoint{\decimaldate{1}{5}{2011}}{Event Two}[red][1][0.5]
   \eventpoint{\decimaldate{5}{9}{2017}}{Event Three}[red][1][0.5]
\end{chronology}

\siunit{\centi\meter}

\end{document}

幸运的是,siunitx写得很好并且不在\unit内部使用,它只是在外部层面上定义它。

顺便说一句,该选项11pt没有空格;但它也可以用于空格这一事实不应被利用,因为它完全是偶然的。

相关内容