![如果使用 tcolorbox 的索引,则 imakeidx 中的 \makeindex 的“title”选项将被忽略](https://linux22.com/image/341854/%E5%A6%82%E6%9E%9C%E4%BD%BF%E7%94%A8%20tcolorbox%20%E7%9A%84%E7%B4%A2%E5%BC%95%EF%BC%8C%E5%88%99%20imakeidx%20%E4%B8%AD%E7%9A%84%20%5Cmakeindex%20%E7%9A%84%E2%80%9Ctitle%E2%80%9D%E9%80%89%E9%A1%B9%E5%B0%86%E8%A2%AB%E5%BF%BD%E7%95%A5.png)
以下 MWE 指出,如果出现以下情况:
tcolorbox
通过其自动索引记录的命令(得益于其documentation
库),- 一个额外的索引(得益于
imakeidx
的多索引功能),
提供的 选项\makeindex
被忽略(尽管 ,但两个索引的标题都是“索引” )。title
imakeidx
\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}