附言:我不想碰这个,但我真的需要重新考虑这个问题。此时我有什么选择?我可以暂时使用旧版本的 latex (如何?),或者其他版本的软件包吗songs
?
我正在使用songs
包裹排版一小本歌曲和和弦。这曾经工作得很好,但当我试图重新编译几周前我最后一次处理的源文件时,布局就被破坏了。在环境中\begin{songs}
,换行符被逐字处理。这在lyric
模式下仍然有效。(请参阅下面的 MWE。)chorded
但是,当我启用模式时,这些换行符不再被尊重。
我已经用分隔符 ¶ 标记了源代码中的换行符,以便更容易看到问题。
\documentclass{article}
\usepackage[chorded]{songs}
%\usepackage[lyric]{songs}
\newindex{myindex}{index}
\begin{document}
\begin{songs}{myindex}
\beginsong{And Can It Be}
\beginverse
\[F]And \[F/A]can \[(C)]it \[F]be that \[Gm/B&]I \[C7]should \[F]gain¶
An \[B&]in\[C]terest \[F/A]in \[C/E]the \[C/G]Sav\[G7]ior's \[C]blood?¶
Died He \[F/C]for me, \[C] who \[F/A]caused \[F]His \[C]pain?¶
\endverse
\beginchorus
Amazing \[C]love! How \[C7/E]can it \[F]be¶
That \[B&]Thou, my \[F/A]God, \[Gm/B&]shouldst \[F/C]die \[C7]for \[F]me?
\endchorus
\endsong
\end{songs}
\end{document}
该songs
软件包自 2018 年以来一直没有更新,所以我怀疑基础LaTeX
系统中一定发生了一些变化,因为直到最近它才正常工作。我使用的是最新版本TeX Live 2022
。
lyric
模式(顶部)工作正常,chorded
模式(底部)刚刚损坏:
答案1
问题是 LaTeX 改变了\obeylines
命令。你可以试试这个补丁。作者已经收到通知,但我也会讨论 LaTeX 是否应该做一个急救补丁。
更新
我们在 latex 中添加了急救功能。此急救功能现在可与 latex-dev 一起使用,并将在 6 月 23 日发布的下一个 LaTeX 版本中提供(除非软件包已更新)。
\documentclass{article}
\usepackage[chorded]{songs}
%\usepackage[lyric]{songs}
\newindex{myindex}{index}
\makeatletter
\renewcommand\SB@obeylines{%
\let\obeyedline\SB@par%
\obeylines%
\let\@par\SB@@par%
}
\makeatother
\begin{document}
\begin{songs}{myindex}
\beginsong{And Can It Be}
\beginverse
\[F]And \[F/A]can \[(C)]it \[F]be that \[Gm/B&]I \[C7]should \[F]gain¶
An \[B&]in\[C]terest \[F/A]in \[C/E]the \[C/G]Sav\[G7]ior's \[C]blood?¶
Died He \[F/C]for me, \[C] who \[F/A]caused \[F]His \[C]pain?¶
\endverse
\beginchorus
Amazing \[C]love! How \[C7/E]can it \[F]be¶
That \[B&]Thou, my \[F/A]God, \[Gm/B&]shouldst \[F/C]die \[C7]for \[F]me?
\endchorus
\endsong
\end{songs}
\end{document}
答案2
我用歌曲包使用 Texlive 没有任何问题。使用 Miktex,我明白你遇到的问题。另一种方法是使用leadsheets 包。它比 songs 包更灵活,但您需要创建自己的模板才能利用所有自定义功能。
这里有一个可供您开始使用的工作示例
\documentclass{article}
\usepackage{xcolor}
\usepackage{leadsheets}
\usepackage{booktabs}
\setlength\heavyrulewidth{0.25ex}
\definesongtitletemplate{custom}{
\ifsongmeasuring
{\section*}
{\section*}{%
\begin{tabular}{p{0.05\textwidth}p{0.95\textwidth}}
\toprule
\noindent{\color{blue!50}1}&{\songproperty{title}}\\
\end{tabular}
\vskip -0.15\baselineskip%
\begingroup\normalfont\footnotesize
\noindent\begin{tabular}{p{0.05\textwidth}p{0.95\textwidth}}
\ifsongproperty{interpret}%
{& \GetTranslation{leadsheets/interpret}\\}
{}%
\ifsongproperty{composer}%
{& \GetTranslation{leadsheets/composer}
\printsongpropertylist{composer}{ \& }{, }{ \& }
\\}
{}%
\ifsongproperty{lyrics}%
{& \GetTranslation{leadsheets/lyrics}
\printsongpropertylist{lyrics}{ \& }{, }{ \& }
\\}
{}%
\ifsongproperty{key}
{& \setchords{
major = -\GetTranslation{leadsheets/major} ,
minor = -\GetTranslation{leadsheets/minor}
}%
\GetTranslation{leadsheets/key}: %
\expandcode{\writechord{\songproperty{key}}} \\%
}
{}%
\midrule
\end{tabular}
\endgroup
}
}
\setleadsheets{verse/numbered=true, align-chords = {l}}
\setleadsheets{print-chords=true, title-template=custom, chorus*/format = \bfseries}
\setchords{format={\color{blue}\sffamily\small\bfseries\itshape}}
\begin{document}
\begin{song}[verse/numbered, remember-chords]{
title={Reprehenderit in Voluptate Velit},
interpret={Copycat},
composer={inspired by others},
music={No One Knows},
lyrics={John Doe},
key={Car Keys}
}
\begin{chorus*}
LOR^{E}EM ipsum dolor sit A^{A}MET, consect^{B7}etur ADIPIS^*{E}CING \\
elit, ^{A}sed do eiusmod tempor ^{B7}incididunt ut labore et dolore magna a^{E}liqua LOR^{E}EM ipsum dolor sit A^{A}MET, consect^{B7}etur ADIPIS^*{E}CING
\end{chorus*}
\begin{verse}
Lor^{E}em ipsum dolor sit A^{A}MET, consect^{B7}etur adipis^*{E}cing \\
elit, ^{A}sed do eiusmod tempor ^{B7}incididunt ut labore et dolore magna a^{E}liqua LOR^{E}EM ipsum dolor sit A^{A}met, consect^{B7}etur adipis^*{E}cing
\end{verse}
\begin{verse}
Lor^{E}em ipsum dolor sit A^{A}MET, consect^{B7}etur adipis^*{E}cing \\
elit, ^{A}sed do eiusmod tempor ^{B7}incididunt ut labore et dolore magna a^{E}liqua LOR^{E}EM ipsum dolor sit A^{A}met, consect^{B7}etur adipis^*{E}cing
\end{verse}
\end{song}
\end{document}