Friends, as a follow up to Overlapping TikZ nodes to look as a tape strip, I added a TikZ code to an index entry using the splitidx
package. Consider this code:
\documentclass{article}
\usepackage[useindex]{splitidx}
\newindex[Index of Foo]{iof}
\makeindex
\usepackage{tikz}
\usetikzlibrary{chains,backgrounds}
\usepackage{xstring}
\tikzset{
tape node/.style={
on chain,
draw,
inner sep=1pt,
outer xsep=0pt,
minimum height=0.2cm,
minimum width=0.2cm
}
}
\newcommand*\myblackbox[1]{%
\node[
tape node
] {\tiny\tt\raisebox{0pt}[\height][0pt]{#1}};
}
\newcommand*\mygraybox[1]{%
\begin{pgfonlayer}{background}
\node[
tape node,
gray!60
] {\color{gray!60}\tiny\tt\raisebox{0pt}[\height][0pt]{#1}}; \end{pgfonlayer}
}
\DeclareRobustCommand*\drawboxes[1]{%
\begin{tikzpicture}[
start chain=going right,
node distance=0pt
]
\IfSubStr{#1}{A}{\myblackbox{A}}{\mygraybox{A}}%
\IfSubStr{#1}{N}{\myblackbox{N}}{\mygraybox{N}}%
\IfSubStr{#1}{C}{\myblackbox{C}}{\mygraybox{C}}%
\IfSubStr{#1}{Q}{\myblackbox{Q}}{\mygraybox{Q}}%
\IfSubStr{#1}{P}{\myblackbox{P}~}{\mygraybox{P}~}
\end{tikzpicture}
}
\begin{document}
\sindex[iof]{\drawboxes{AC} Oranges}
\sindex[iof]{\drawboxes{ANCQ} Grapes}
\sindex[iof]{\drawboxes{CP} Bananas}
\sindex[iof]{\drawboxes{Q} Avocado}
\sindex[iof]{\drawboxes{P} Strawberry}
\printindex*
\end{document}
It works like a charm, but unfortunately, due to the TikZ code added to the beginning of the entry, the alphabetical order is lost:
I have a wild guess: by passing some regular expression pattern to the splitindex
parser tool, I could somehow make the generated index ignore the TikZ code at the beginning of the entry.
If possible, I'd like to stick with the splitidx
package, as it can handle several indices I have in the document. Any help is appreciated.