我正在尝试使用 Package 制作歌本Songs
。歌曲是西班牙语的,我想使用\titleprefixword
宏来避免以冠词 (El、La、Los、Las) 开头对歌曲标题进行排序。
这是代码,我认为一切都是正确的,但显然不是,因为它不起作用:
\documentclass[letterpaper]{article}
\usepackage[bookmarks]{hyperref}
\usepackage[chorded]{songs}
\usepackage[utf8x]{inputenc}
\usepackage[spanish]{babel}
\usepackage{xpatch}
% \includeonlysongs{2}
\setlength{\oddsidemargin}{0in}
\setlength{\evensidemargin}{0in}
\setlength{\textwidth}{6.5in}
\setlength{\topmargin}{0in}
\setlength{\topskip}{0in}
\setlength{\headheight}{0in}
\setlength{\headsep}{0in}
\setlength{\textheight}{9.1in}
\settowidth{\versenumwidth}{1.\ }
\pagestyle{empty}
\titleprefixword{El}
\titleprefixword{La}
\titleprefixword{Los}
\titleprefixword{Las}
\titleprefixword{Un}
\titleprefixword{Una}
\authsepword{y}
\authbyword{por}
\authignoreword{Desconocido}
\ifchorded
\newcommand{\stopchords}{\chordsoff}
\newcommand{\resumechords}{\chordson}
\else
\newcommand{\stopchords}{}
\newcommand{\resumechords}{}
\fi
%\makeatletter
%\xpatchcmd{\SB@@@beginsong}
% {\SB@addtoindexes\songtitle}
% {\SB@addtoindexes{\songtitle\ifx\songauthors\empty\else\ (\songauthors)\fi}}
% {}{}
%\makeatother
\newindex{titleidx}{cbtitle}
%\indexsongsas{titleidx}{\thepage}
\newauthorindex{authidx}{cbauth}
\newscripindex{scripidx}{cbscrip}
\begin{document}
\showindex{Índice Completo de Canciones y Temas}{titleidx}
\songsection{Himnario de la Iglesia Reformada en Venezuela}
\begin{songs}{titleidx,authidx,scripidx}
\beginsong{La Cruz Excelsa}[
by={Isaac Watts},
sr={Números 21:4-9; Marcos 15:1-47; Romanos 5:6-11; Filipenses 2:1-13; Salmos 34:2; 1 Corintios 1:17-31; 1 Pedro 2:19-25},
ititle={(salvación)},
ititle={(cruz)},
ititle={(entrega)},
ititle={(sacrificio)},
ititle={(muerte de Cristo)}]
\beginverse
\[D]La cruz ex\[^\gtab{Dmaj9}{200220}]celsa al \[Em]con\[A]tem\[D]plar
\[D]Do Cristo a\[G]llí \[D/F#]por \[E7]mí mu\[A]rió,
\[D]De todo \[Dmaj9]cuanto es\[Em]ti\[A]mo a\[D]quí,
\[D]Lo más pre\[G]cio\[D/F#]so \[Em]es \[A]su a\[D]mor.
\endverse
\beginverse
^No busco \[Dmaj9]gloria ^ni ^ho^nor
^Sino en la ^cruz ^de \[Bm7]mi ^Se^ñor,
^Las cosas ^que me en^can^tan ^más
^Las sacri^fi^co ^por ^su a^mor.
\endverse
\stopchords
\beginverse
De su cabeza, manos, pies,
Preciosa sangre allí corrió;
Corona vil de espinas fue
La que Jesús por mí llevó.
\endverse
\beginverse
El mundo entero no será
Dádiva digna de ofrecer.
Amor tan grande, sin igual,
En cambio, exige todo el ser.
\endverse
\resumechords
\endsong
\beginscripture{Salmos 34:2}
\Acolon Mi alma se gloría en el Señor;
\Bcolon lo oirán los humildes y se alegrarán.
\endscripture
\end{songs}
\showindex{Índice de Autores y Compositores}{authidx}
\showindex{Índice de Referencias Bíblicas}{scripidx}
\end{document}
关于如何让它发挥作用,您有什么想法吗?
答案1
authsepword
我遇到了与非常类似的问题authignoreword
。 将它们移动到 之前即可\begin{document}
解决问题。
答案2
似乎有一个 bug\titleprefixword
被 songs 包完全忽略了(即使升级到 3.0 版也是如此)。不过,修复方法其实很简单。你必须修改创建索引的脚本:songidx.lua. 更改行
prelist = { A=true, THE=true}
添加所有所需的前缀,全部大写,例如,
prelist = { A=true, THE=true, EL=true, LA=true}