将乐谱小节线与表格列对齐

将乐谱小节线与表格列对齐

这是一个非常模糊的问题,但我还是会尝试。如何排版音符,使它们之间的音符条与下面的表格对齐?我试过 lilypond,也试过提供的各种间距选项,但都无法正常工作。音符的间距总是有细微的差异,例如,带有升号的音符比没有升号的音符占用的空间多几个像素。我也尝试过手动调整和硬编码列宽,但也无法使它们正常工作。

我并不特别依赖 lilypond(我只需要从 MWE 中排版这一行),所以任何其他包对我来说都可以。

在理想情况下,我希望设置小节之间的距离(例如 1 厘米),将音符置于小节之间的中心,并在音符前附加符号。然后,我可以调整表中的第一列作为调,并将其他列的宽度保持在 10 厘米。

我还发现,有时条形的宽度不同(例如屏幕截图中的第 3 条)。这是 lilypond 的错误还是我遗漏了某些设置?屏幕截图是在 100% 缩放下拍摄的。

梅威瑟:

\documentclass{ltjarticle}
\usepackage{lyluatex}
\usepackage{geometry}
\usepackage{array}
\geometry{
    a4paper,
    total={170mm,257mm},
    left=20mm,
    top=20mm,
}
\begin{document}
    
    \begingroup
    \begin{lilypond}
        \new Staff {
            \set Score.proportionalNotationDuration = #(ly:make-moment 1)
            %\override Score.SpacingSpanner.strict-note-spacing = ##t
            \omit Staff.TimeSignature
            \relative c' { d1 dis1 es1 e1 f1 fis1 ges1 g1 gis1 as1 a1 ais1 bes b1 c1 cis1 des1 }
        }
    \end{lilypond}
    \endgroup%
    \begingroup
        \hspace{-0.23cm}
        \huge
        \centering
        \begin{tabular}{ |p{0.2cm}|p{0.54cm}<{\centering}|p{0.51cm}<{\centering}|p{0.51cm}<{\centering}|p{0.51cm}<{\centering}|p{0.51cm}<{\centering}|p{0.51cm}<{\centering}|p{0.51cm}<{\centering}|p{0.54cm}<{\centering}|p{0.54cm}<{\centering}|p{0.54cm}<{\centering}|p{0.54cm}<{\centering}|p{0.54cm}<{\centering}|p{0.54cm}<{\centering}|p{0.54cm}<{\centering}|p{0.54cm}<{\centering}|p{0.54cm}<{\centering}|p{0.54cm}<{\centering}|p{0.54cm}<{\centering} }
        \hline
        \normalsize 1 & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet \\ 
        \hline
        \normalsize 2 & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet & \bullet \\ 
        \hline
        \normalsize 3  & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ \\ 
        \hline
        \normalsize 4  & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ & \circ \\ 
        \hline
        \end{tabular}
    \endgroup
    
\end{document}

外观

答案1

我本身没有解决方案,但我有一种方法,可能会有效。

首先创建一个所需宽度的 lilypond 片段,另请参阅我的回答音乐.sx。您需要编辑 make moment 值:1/20 比 1/40 更密集。将除数加倍就像“一步”。使用 移除条形雕刻机\remove "Bar_engraver"

  \context {
    \Score
    \remove "Bar_number_engraver"
    \remove "Bar_engraver"
    \override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/200)
  }

使用这个 lilypond 设置创建的片段不会包含条形图。如果这不起作用,请将命令放在\bar""条形图所在的任何位置。它将条形图设置为“不可见条形图”,这意味着它仍然存在,但不可见。即c4 a8 a b2 \bar"" e4 e a4

一旦你有了这个,你需要在 LaTeX 中创建两个框。第一个框包含谱表,第二个框包含小节,它们相互叠放。

\setlength{\parindent}{0pt}
%\parbox[c]{\linewidth}{% parbox A; optional if vertical alignment doesn't work, like intended
\makebox[\linewidth]{\includegraphics[width=\linewdith]{yourSnippet.pdf}\hspace{-\linewidth}\hspace}%
\parbox[c][<height of your lilypond snippet>][c]{\linewidth}{%
\def\notebar{\rule{<width>}{<yourStaffHeight>}}
\hspace{<sizeOfFirstColumn>}\notebar\hfill\notebar\hfill ... \notebar\null
}% inner parbox
%} %parbox A

始终需要在行尾处%不产生任何不需要的空格。

之后,使用p{<columnwidth>}第一列的选项来适应五线谱开始时五线谱键的宽度。

相关内容