曲パッケージのコーラスのカスタマイズ

曲パッケージのコーラスのカスタマイズ

コーラスをカスタマイズしようとしていますsongsが、最初の行が正しく配置されていない理由がわかりません。R詩番号と同じ位置にあるべきである(1)

私は、とxpatchの出現をすべて削除していました。その後、コーラスを詩と同じ形式になるように調整しました。\SB@cbarshift\cbarwidth

曲

\documentclass[a4paper]{report}
\usepackage[left=2.5cm,right=1cm,top=1cm,bottom=1cm]{geometry}
\usepackage[bookmarks,pdfborder={0 0 0}]{hyperref}
\usepackage[chorded,noshading]{songs}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{xpatch}
\songcolumns{1}
\setlength{\parindent}{0pt}

\makeatletter

\xpatchcmd{\justifyleft}
  {\SB@cbarshift}
  {\ifSB@inchorus\advance\leftskip\versenumwidth\fi}
  {}{}

\xpatchcmd{\justifycenter}
  {\SB@cbarshift}{}
  {}{}

\xpatchcmd{\SB@par}
  {\ifdim\cbarwidth>\z@\nobreak\else\SB@ilpenalty\fi}{}
  {}{}

\xpatchcmd{\brk}
  {
    \ifdim\cbarwidth=\z@%
    \ifrepchorus\marks\SB@cmarkclass{}\fi%
    \SB@breakpoint\brkpenalty%
  }
  {
    \endgroup\egroup
    \ifrepchorus\ifSB@gotchorus\else
      \global\setbox\SB@chorusbox\vbox{
        \unvbox\SB@chorusbox
        \SB@chorusbar\SB@box
        \unvcopy\SB@box
        \SB@breakpoint\brkpenalty
      }%
    \fi
  }
  {}{}

\xpatchcmd{\beginchorus}
  {\vnumberedfalse}{\vnumberedtrue}
  {}{}

\xpatchcmd{\SB@@beginchorus}
  {
    \setbox\SB@box\vbox\bgroup\begingroup%
      \ifchorded%
        \def\SB@everypar{%
          \vrule\@height\baselineskip\@width\z@\@depth\z@%
          \gdef\SB@everypar{}%
        }%
        \everypar{\SB@everypar\everypar{}}%
      \fi%
  }
  {
    \setbox\SB@box\vbox\bgroup\begingroup
      \ifvnumbered
        \def\SB@everypar{
          \setbox\SB@box\hbox{R}
           \ifdim\wd\SB@box<\versenumwidth
             \setbox\SB@box
             \hbox to\versenumwidth{\unhbox\SB@box\hfil}
           \fi
          \ifchorded\vrule\@height\baselineskip\@width\z@\@depth\z@\fi
          \placeversenum\SB@box
          \gdef\SB@everypar{}
        }
      \else
        \def\SB@everypar{
          \ifchorded\vrule\@height\baselineskip\@width\z@\@depth\z@\fi
          \gdef\SB@everypar{}
        }
      \fi
      \everypar{\SB@everypar\everypar{}}
  }
  {}{}

\xpatchcmd{\SB@endchorus}
  {\SB@chorusbar\SB@box}{}
  {}{}

\makeatother

\begin{document}
\begin{songs}{}

\beginsong{Dämmerung fällt}

\newchords{dfverse}
\newchords{dfchorus}

\beginverse\memorize[dfverse]
\[a]Dämmerung fällt und grauer \[d]Nebel zieht auf, \[G]einsamer Ruf von wilden \[C]Schwänen klingt auf.
\[a]Sitzen wir um das lodernd' \[d]Feuer herum, \[C]fragen uns leise: Warum \[G]zieh'n wir, warum?
\endverse

\beginchorus\memorize[dfchorus]
\[F]Nordwärts steh'n uns're Sterne, \[C]nordwärts, in weiter Ferne, \[a]nordwärts, da suchen wir das \[G]Glück.
\[F]Nordwärts bei Dunkelheiten, \[C]nordwärts durch Einsamkeiten, \[G]nordwärts, für uns gibt's kein Zu\[a]rück.
\endchorus

\endsong
\end{songs}
\end{document}

答え1

%あなたの特定の状況では、のパッチで4 つの記号が欠落しているケースです\SB@@beginchorus。 正直に言うと、%他の状況で余分なスペースが導入されるのを防ぐために、行の末尾にさらに多くの記号を追加します。

見る行末のパーセント記号 (%) は何の目的で使用しますか?

\documentclass[a4paper]{report}
\usepackage[left=2.5cm,right=1cm,top=1cm,bottom=1cm]{geometry}
\usepackage[bookmarks,pdfborder={0 0 0}]{hyperref}
\usepackage[chorded,noshading]{songs}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{xpatch}
\songcolumns{1}
\setlength{\parindent}{0pt}

\makeatletter

\xpatchcmd{\justifyleft}
  {\SB@cbarshift}
  {\ifSB@inchorus\advance\leftskip\versenumwidth\fi}
  {}{}

\xpatchcmd{\justifycenter}
  {\SB@cbarshift}{}
  {}{}

\xpatchcmd{\SB@par}
  {\ifdim\cbarwidth>\z@\nobreak\else\SB@ilpenalty\fi}{}
  {}{}

\xpatchcmd{\brk}
  {
    \ifdim\cbarwidth=\z@%
    \ifrepchorus\marks\SB@cmarkclass{}\fi%
    \SB@breakpoint\brkpenalty%
  }
  {
    \endgroup\egroup
    \ifrepchorus\ifSB@gotchorus\else
      \global\setbox\SB@chorusbox\vbox{
        \unvbox\SB@chorusbox
        \SB@chorusbar\SB@box
        \unvcopy\SB@box
        \SB@breakpoint\brkpenalty
      }%
    \fi
  }
  {}{}

\xpatchcmd{\beginchorus}
  {\vnumberedfalse}{\vnumberedtrue}
  {}{}

\xpatchcmd{\SB@@beginchorus}
  {
    \setbox\SB@box\vbox\bgroup\begingroup%
      \ifchorded%
        \def\SB@everypar{%
          \vrule\@height\baselineskip\@width\z@\@depth\z@%
          \gdef\SB@everypar{}%
        }%
        \everypar{\SB@everypar\everypar{}}%
      \fi%
  }
  {
    \setbox\SB@box\vbox\bgroup\begingroup
      \ifvnumbered
        \def\SB@everypar{%
          \setbox\SB@box\hbox{R}%
           \ifdim\wd\SB@box<\versenumwidth
             \setbox\SB@box
             \hbox to\versenumwidth{\unhbox\SB@box\hfil}%
           \fi
          \ifchorded\vrule\@height\baselineskip\@width\z@\@depth\z@\fi
          \placeversenum\SB@box
          \gdef\SB@everypar{}%
        }
      \else
        \def\SB@everypar{
          \ifchorded\vrule\@height\baselineskip\@width\z@\@depth\z@\fi
          \gdef\SB@everypar{}
        }
      \fi
      \everypar{\SB@everypar\everypar{}}
  }
  {}{}

\xpatchcmd{\SB@endchorus}
  {\SB@chorusbar\SB@box}{}
  {}{}

\makeatother

\begin{document}
\begin{songs}{}

\beginsong{Dämmerung fällt}

\newchords{dfverse}
\newchords{dfchorus}

\beginverse\memorize[dfverse]
\[a]Dämmerung fällt und grauer \[d]Nebel zieht auf, \[G]einsamer Ruf von wilden \[C]Schwänen klingt auf.
\[a]Sitzen wir um das lodernd' \[d]Feuer herum, \[C]fragen uns leise: Warum \[G]zieh'n wir, warum?
\endverse

\beginchorus\memorize[dfchorus]
\[F]Nordwärts steh'n uns're Sterne, \[C]nordwärts, in weiter Ferne, \[a]nordwärts, da suchen wir das \[G]Glück.
\[F]Nordwärts bei Dunkelheiten, \[C]nordwärts durch Einsamkeiten, \[G]nordwärts, für uns gibt's kein Zu\[a]rück.
\endchorus

\endsong
\end{songs}
\end{document}

ここに画像の説明を入力してください

関連情報