Я пытаюсь настроить припев пакета songs
, но не могу понять, почему первая строка не выровнена должным образом.рдолжен быть в той же позиции, что и номер стиха(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}