使用自定义模板对 leadsheets 诗句进行编号 诗句编号不在歌词前面

使用自定义模板对 leadsheets 诗句进行编号 诗句编号不在歌词前面

使用第 41 页中的自定义诗句模板示例,我想尝试左对齐模板。但是,诗句编号与歌词行不在同一行。它在和弦行中。我希望诗句编号位于歌词行前面

\documentclass{article}
\usepackage{leadsheets}


\defineversetypetemplate{flushleft}
{%
    
    \noindent\llap{\verselabel\space}%
    \flushleft
    \unskip
    \vspace*{-\baselineskip}
    \ifobeylines
    {%
        \setlength\parskip{0pt}
         \setleadsheets{ obey-lines-parskip = .5\baselineskip }
         }
     {%
         \setlength\parskip{.5\baselineskip}
         \vspace*{-0.5\parskip}
         }%
     }
 
{\endflushleft}

\setleadsheets{print-chords=true, chorus*/format = \bfseries}


\begin{document}
    \begin{song}[verse/numbered, remember-chords]{
            title={Reprehenderit in Voluptate Velit}%
        }
        \begin{chorus*}[template=flushleft]
            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}[template=flushleft]
            Ent^{A}rad en su presencia con can^{E}tares, can^{B}tares de alegría a nuestro D^{E}ios ^{E7} \\
            Ent^{A}rad en su presencia con can^{E}tares, can^{B}tares de alegría a nuestro Dios.
        \end{verse}
        
        \begin{verse}[template=flushleft]
            ^Sabed que el Señor es nuestro ^Dios que ^nos hizo y somos suyos^. ^{} \\
            ^Sabed que somos su pu^eblo y las ov^ejas de su rebaño.
        \end{verse}
    \end{song}
    
\end{document}

在此处输入图片描述

答案1

模板flushleft确实只是打印了诗节标签,然后如果打印了和弦,则将文本向下移动。一种解决方法是添加一行垂直空间,然后打印标签,然后添加负垂直空间以保持其之前的位置。

当然,这只应在实际打印和弦时进行。为此,您可以公开与选项关联的内部布尔值print-chords,即\l__leadsheets_chord_print_bool

梅威瑟:

\documentclass{article}
\usepackage{leadsheets}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand \ifprintchords {}
  { \bool_if:NTF \l__leadsheets_chord_print_bool }
\ExplSyntaxOff

\defineversetypetemplate{flushleft}
{%
    \ifprintchords{\vspace*{\baselineskip}}{}%
    \noindent\llap{\verselabel\space}%
    \ifprintchords{\vspace*{-\baselineskip}}{}%
    \flushleft
    \unskip
    \vspace*{-\baselineskip}
    \ifobeylines
    {%
        \setlength\parskip{0pt}
         \setleadsheets{ obey-lines-parskip = .5\baselineskip }
         }
     {%
         \setlength\parskip{.5\baselineskip}
         \vspace*{-0.5\parskip}
         }%
     }
 
{\endflushleft}

\setleadsheets{print-chords=true, chorus*/format = \bfseries}

\begin{document}
    \begin{song}[verse/numbered, remember-chords]{
            title={Reprehenderit in Voluptate Velit}%
        }
        \begin{chorus*}[template=flushleft]
            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}[template=flushleft]
            Ent^{A}rad en su presencia con can^{E}tares, can^{B}tares de alegría a nuestro D^{E}ios ^{E7} \\
            Ent^{A}rad en su presencia con can^{E}tares, can^{B}tares de alegría a nuestro Dios.
        \end{verse}
        
        \begin{verse}[template=flushleft]
            ^Sabed que el Señor es nuestro ^Dios que ^nos hizo y somos suyos^. ^{} \\
            ^Sabed que somos su pu^eblo y las ov^ejas de su rebaño.
        \end{verse}
    \end{song}
    
\end{document}

结果:

在此处输入图片描述

请注意,虽然在自定义模板的其他地方也可以添加和减少垂直空间,但在我看来这不是一个非常干净的解决方案。也许包作者 Clemens(他是 TeX.SE 的常客)可以提供更好的解决方案 - 一种可能性是某种\printlabel命令会延迟打印标签,直到知道正确的位置。

相关内容