歌本 \makeTitleIndex:页码与歌曲编号

歌本 \makeTitleIndex:页码与歌曲编号

我使用该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}

在此处输入图片描述

相关内容