我是论坛和 LaTeX 的新手,所以请对我温柔一点 :) 我正在尝试编写一本带有和弦的歌曲集,这是我的目标外观的一个例子:
!https://ibb.co/imwkmJ
我正在使用 songs 包来标记我的和弦,这样我就可以使用我的歌本输出的歌词和和弦版本。我不想为此使用 tabular,因为这意味着我必须用 ifchorded 来编码每个单元格。我当前的代码如下所示:
% Preamble
\documentclass[11pt,twocolumn]{book}
% Packages
\usepackage{a4wide}
\usepackage[margin=1.5cm,footskip=0.25in,headheight=34.5pt]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{polski}
\usepackage[polish]{babel}
\usepackage{comment}
%\usepackage{multicol}
\usepackage{titlesec, color}
\usepackage{lmodern}
\usepackage{fancyhdr}
%\usepackage[defaultlines=1,all]{nowidow}
\usepackage[chorded]{songs}
\usepackage{verse}
%styles
\definecolor{gray75}{gray}{0.75}
\newcommand{\hsp}{\hspace{20pt}}
\titleformat{\chapter}[hang]{\Huge\bfseries}{\thechapter\hsp\textcolor{gray75}{|}\hsp}{0pt}{\Huge\bfseries}
\titlespacing{\section}{0cm}{0.7cm}{0.2cm}[0pt]
\parindent=0pt
\parskip=0pt
%\def\hmm{\par\if@firstcolumn\else \par \nopagebreak \fi\par\bigskip}
%head and foot
\pagestyle{fancy}
%\headheight{14pt}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}}
%
% Document
\begin{document}
\section{Bezdroża}
\begin{minipage}[t]{\dimexpr.4\textwidth-.4\columnsep}
Powiewając kaszkietem nieba\\
Witają nas bezdroża wzbijając kurz\\
Zarosłym trawą Łemków traktem\\
Wędrownej pieśni jedzie wóz\\
\hfill\break
Wypłowiały na płótna budzie\\
Fruwa ruski Michał z mieczem\\
Na wozie tym namiot nieba\\
I długowłosy wicher jedzie\\
\hfill\break
\vin I świat wronieje i koń i wóz\\
\vin I wiatr jak żagle wydyma balkony\\
\vin Kiedyż ja wreszcie z tych domów stu\\
\vin Choć jeden nazwę swoim domem\\
\hfill\break
\vin I świat wronieje i koń i wóz\\
\vin I wiatr jak żagle wydyma balkony\\
\vin Kiedyż ja wreszcie z tych domów stu\\
\vin Choć jeden nazwę swoim domem\\
\hfill\break
Tam jesień wokół niczyja\\
I świat też w chmurach jest niczyj\\
Dusza nasza w liście ubrana\\
Paradnych kroków nie ćwiczy\\
\hfill\break
Niezmierzona jest duszy przestrzeń\\
Roni złote liście na drzewach\\
Płomienisty wolności szych\\
Przez jesienne pisze się nieba\\
\hfill\break
\vin I świat wronieje i koń i wóz\\
\vin I wiatr jak żagle wydyma balkony\\
\vin Kiedyż ja wreszcie z tych domów stu\\
\vin Choć jeden nazwę swoim domem\\
\hfill\break
\vin Już świat wronieje i koń i wóz\\
\vin I wiatr jak żagle wydyma balkony\\
\vin Wiem teraz - piórka wiatru trzy\\
\vin Są moim domem rozpędzonym\\
\end{minipage}
\hfill
\begin{minipage}[t]{\dimexpr.05\textwidth-.05\columnsep}
\ifchorded
F G\\
a^7\\
F G\\
a^7\\
\hfill\break
a e\\
F G\\
a e\\
F G\\
\vfill\null
\else
\fi
\end{minipage}
\end{document}
只要歌曲的文本不太长,这种方法就很有效。如果太长,列就会溢出,超出页面。我想让文本跨列,但不跨页面,或者如果可行,只在偶数->不偶数方向上,这样我就不必在歌曲中间翻页。我宁愿避免手动拆分小页面,我将每首歌曲放在不同的 .tex 文件中,然后将它们包含在主文件中,以便通过调整歌曲顺序来轻松“填补歌曲之间的空白”。
你们对解决这个问题有什么建议吗?
答案1
您的 MWE 不使用 songs 包的环境来排版歌曲,但我假设您愿意这样做,因为它们提供了您想要的那种分页方式。以下解决方案创建一个\clist
在 songs 环境中工作的宏,将和弦列表放在一边。
% Create lengths for the width of the chord area and its left margin
\newlength\chordswidth\setlength\chordswidth{1in}
\newlength\chordsmargin\setlength\chordsmargin{3pt}
\newbox\chbox
\newcommand\clist[1]{\ifchorded
\ifvmode\leavevmode\fi
\setbox\chbox\vtop{\raggedright
\leftskip=\hsize\advance\leftskip-\chordswidth\advance\leftskip\chordsmargin
\printchord{\transposehere{#1}}\par
}\vadjust{\vbox{\kern-2pt\kern-\ht\chbox\box\chbox}}\fi\ignorespaces}
\let\oldjustifyleft=\justifyleft
\renewcommand\justifyleft{\oldjustifyleft
\ifchorded\advance\rightskip\chordswidth\fi}
然后您可以按照以下风格创作歌曲:
\beginsong{Doxology}
\beginverse
\clist{G Em G} Praise God, from Whom all blessings flow;
\clist{G Em D} Praise Him, all creatures here below;
\clist{Em D C Em} Praise Him above, ye heav'nly host;
\clist{G D G} Praise Father, Son, and Holy Ghost.
\clist{C G} Amen.
\endverse
\endsong
如果您不打算在歌词之间添加和弦,您可能还需要将\baselineadj
和弦书中的负距离更改为消除歌词行之间和弦的间距。