我使用该songbook
软件包创建了一本歌本。如手册中所述,我\makeTitleIndex
在歌本的序言中添加了一个命令。它会创建一个.tIdx
包含歌曲标题和歌曲编号的文件。但是,我需要的是页码。
有没有办法配置\makeTitleIndex
输出页码(即使它是一个无参数命令)?如果没有,我还有什么选择?我想用makeindex
将转换.tIdx
为.tdx
。
以下是一个例子songbook.tex
:
\documentclass[a4paper,10pt]{book}
\usepackage[ngerman]{babel}
\usepackage[chordbk]{songbook}
\begin{document}
\makeTitleIndex
\begin{song}{Song 1}{}{~}{}{}{}
song1
\newpage
song1 continued
\end{song}
\begin{song}{Song 2}{}{~}{}{}{}
song2
\end{song}
\begin{song}{Song 3}{}{~}{}{}{}
song3
\end{song}
\input{songbook.tdx}
\end{document}
编译一次。然后运行:
makeindex -o songbook.tdx songbook.tIdx
再次编译。请注意,PDF 末尾的索引显示的是歌曲编号(而不是页码)。
答案1
该song
环境用于\titleIndex{\theSongTitle}{\theSBSongCnt}
制作带有歌曲标题和歌曲计数器值的索引条目。
可以使用 进行修补,以\xpatchcmd
更改\theSBSongCnt
为\thepage
。
\documentclass[a4paper,10pt]{book}
\usepackage[ngerman]{babel}
\usepackage[chordbk]{songbook}
\usepackage{xpatch}
\xpatchcmd{\song}{%
\titleIndex{\theSongTitle}{\theSBSongCnt} %
}{%
\titleIndex{\theSongTitle}{\thepage} %
}{}{}
\begin{document}
\makeTitleIndex
\begin{song}{Song Foo}{}{~}{}{}{}
song1
\newpage
song1 continued
\end{song}
\begin{song}{Song Foobar}{}{~}{}{}{}
song2
\end{song}
\begin{song}{Song Other Foobar}{}{~}{}{}{}
song3
\end{song}
\input{songbook.tdx}
\end{document}