如果使用 tcolorbox 的索引,则 imakeidx 中的 \makeindex 的“title”选项将被忽略

如果使用 tcolorbox 的索引,则 imakeidx 中的 \makeindex 的“title”选项将被忽略

以下 MWE 指出,如果出现以下情况:

  • tcolorbox通过其自动索引记录的命令(得益于其documentation库),
  • 一个额外的索引(得益于imakeidx的多索引功能),

提供的 选项\makeindex被忽略(尽管 ,但两个索引的标题都是“索引” )。titleimakeidx\makeindex[name=concepts,title=Concepts Index]

\documentclass{article}
\usepackage{imakeidx}
\usepackage{tcolorbox}
\tcbuselibrary{documentation}
\makeindex
\makeindex[name=concepts,title=Concepts Index]
\begin{document}
\begin{docCommand}{foo}{}%
  \index[concepts]{foo}%
  \refCom{foo} is foo.  
\end{docCommand}
\printindex
\printindex[concepts]
\end{document}

你知道发生了什么吗?

答案1

默认情况下,documentation库会tcolorbox重新定义theindex环境,与文档类似pgf。但是,使用键可以轻松更改默认值index format。特别是对于imakeidx包,tcolorbox文档建议使用

\tcbset{index format=off}

然后,所有格式化都可以通过 完成imakeidx

示例的完整代码为:

\documentclass{article}
\usepackage{imakeidx}
\usepackage{tcolorbox}
\tcbuselibrary{documentation}
\tcbset{index format=off}
\makeindex
\makeindex[name=concepts,title=Concepts Index]

\begin{document}
\begin{docCommand}{foo}{}%
  \index[concepts]{foo}%
  \refCom{foo} is foo.
\end{docCommand}
\printindex
\printindex[concepts]
\end{document}

答案2

documentation库重新定义了theindex环境。我认为,当加载诸如imakeidx或之类的包时,它不应该这样做。idxlayout

直到对库采取措施解决该问题为止,您可以恢复imakeidx文档开头的定义。

\documentclass{article}
\usepackage{imakeidx}
\usepackage{tcolorbox}

\tcbuselibrary{documentation}

\makeindex
\makeindex[name=concepts,title=Concepts Index]

\expandafter\AtBeginDocument\expandafter{%
  \expandafter\def\expandafter\theindex\expandafter{\theindex}%
}
\expandafter\AtBeginDocument\expandafter{%
  \expandafter\def\expandafter\endtheindex\expandafter{\endtheindex}%
}

\begin{document}
\begin{docCommand}{foo}{}%
  \index[concepts]{foo}%
  \refCom{foo} is foo.
\end{docCommand}
%\printindex
\printindex[concepts]
\end{document}

相关内容