这是一个非常模糊的问题,但我还是会尝试。如何排版音符,使它们之间的音符条与下面的表格对齐?我试过 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>}
第一列的选项来适应五线谱开始时五线谱键的宽度。