在 LaTeX 中复制 Lilypond 标题

在 LaTeX 中复制 Lilypond 标题

我正在做一个大型项目,该项目可以自动生成乐谱,无需任何人工干预。大多数情况下,我使用 Lilypond。但有些乐谱使用图形符号,对于这些乐谱,我使用 TikZ 和 pdfLaTeX。问题是我想在 LaTeX 中匹配 Lilypond 的标题标题外观,但我很挣扎。

首先是Lilypond

Lilypond 标题

接下来是我的努力:

在此处输入图片描述

以下是我的软件生成的 LaTeX 代码:

\documentclass[11pt]{memoir} 
\usepackage{tikz} 
\usepackage[top=5mm,left=15mm,right=15mm]{geometry}
\usepackage{parskip}
\usepackage{newcent}

\begin{document}
\begin{center}
(Dedication) \\ 
\smallskip\textbf{\LARGE{Title}} \\ 
\medskip\textbf{\large{Style}} \\ 
\end{center} 
\vspace{-8pt} 
\noindent 
\begin{minipage}[t][0em][b]{0.33\textwidth}Poet \end{minipage}
\begin{minipage}[t][0em][b]   {0.33\textwidth}\begin{center}\textbf{\large{Instrument}}   \end{center}\end{minipage}
\begin{minipage}[t][0em][b]{0.33\textwidth}\hfill Composer\end{minipage}\\
\medskip 
\noindent
\begin{minipage}[c][1em][b]{0.5\textwidth}Meter \end{minipage}
\begin{minipage}[c][1em][b]{0.5\textwidth}\hfill Arranger\end{minipage}\\
Piece

\end{document}

因此存在几个问题:

  1. 我的“作曲家”似乎没有右对齐

  2. 我真的不喜欢这\vspace{-8pt}一点。该软件将使用不同的字体和纸张大小,我担心任何这样的硬编码最终都会看起来很糟糕。我以前从未使用过 minipages,所以我不知道我是否正确地做了这些事情。基本上我只是试验了参数,直到它看起来不错。

  3. 我不知道为什么 Lilypond 示例中的“Piece”条目间距如此尴尬,但我更喜欢我的示例中更均匀的间距,所以不是一个问题。

  4. 我可以自己更多地尝试几何形状,但如果有人对间距有任何建议,我也会很感激。

  5. “诗人”、“韵律”和“作品”并不总是有条目。因此,目前使用\hfill似乎可以保持相同的间距。假设我继续使用 minipages,这是处理该问题的最佳方法吗?

它不需要是一个完美的复制品,但我希望它在普通观察者看来是相同的。

答案1

我建议,首先,使用键值语法。然后,你可以使用tabular三个大小相同的列来划分空间,并进行左对齐、居中对齐和右对齐。

仅当存在时才会排版题注,并且位于独特的中心对齐列中,因此其宽度不会影响其他元素的定位。

\documentclass[11pt]{memoir} 
\usepackage[top=5mm,left=15mm,right=15mm]{geometry}
\usepackage{newcent}
%\usepackage{array} % not needed with memoir
\usepackage{xparse}

\ExplSyntaxOn
\keys_define:nn { bfootdav/lilyheader }
 {
  dedication .tl_set:N = \l_bfootdave_lilytitle_dedication_tl,
  title .tl_set:N = \l_bfootdave_lilytitle_title_tl,
  style .tl_set:N = \l_bfootdave_lilytitle_style_tl,
  instrument .tl_set:N = \l_bfootdave_lilytitle_instrument_tl,
  poet .tl_set:N = \l_bfootdave_lilytitle_poet_tl,
  composer .tl_set:N = \l_bfootdave_lilytitle_composer_tl,
  arranger .tl_set:N = \l_bfootdave_lilytitle_arranger_tl,
  meter .tl_set:N = \l_bfootdave_lilytitle_meter_tl,
  piece .tl_set:N = \l_bfootdave_lilytitle_piece_tl,
 }

\NewDocumentCommand{\makepieceheader}{m}
 {
  \group_begin:
  \keys_set:nn { bfootdav/lilyheader } { #1 }
  \bfootdav_make_piece_header:
  \group_end:
 }

\cs_new_protected:Npn \bfootdav_make_piece_header:
 {
  \noindent\begin{tabular}
   {
    @{}
    >{\raggedright}p{.33333\textwidth}
    @{}
    >{\centering}p{.33333\textwidth}
    @{}
    >{\raggedleft\arraybackslash}p{.33333\textwidth}
    @{}
   }
  \tl_if_empty:NF \l_bfootdave_lilytitle_dedication_tl
   {
    \multicolumn{3}{@{}>{\centering}p{\textwidth}@{}}
     {
      ( \l_bfootdave_lilytitle_dedication_tl )
     }
    \\
   }
  & \LARGE\bfseries\strut \l_bfootdave_lilytitle_title_tl &
  \\
  & \large\bfseries\strut \l_bfootdave_lilytitle_style_tl &
  \\
  \l_bfootdave_lilytitle_poet_tl &
  \bfseries\l_bfootdave_lilytitle_instrument_tl &
  \l_bfootdave_lilytitle_composer_tl
  \\
  \l_bfootdave_lilytitle_meter_tl && \l_bfootdave_lilytitle_arranger_tl
  \\
  \l_bfootdave_lilytitle_piece_tl &&
  \end{tabular}
 }
\ExplSyntaxOff

\begin{document}
\makepieceheader{
  dedication=Dedication,
  title=Title,
  style=Style,
  poet=Poet,
  instrument=Instrument,
  composer=Composer,
  meter=Meter,
  arranger=Arranger,
  piece=Piece
}

\end{document}

在此处输入图片描述

相关内容