我想在文中直接提及乐曲韵律,例如:
这首曲子是以4/4拍子写成的。
有没有办法以没有分数条的分数形式获得拍号(4/4)?我尝试了musixtex
软件包,但当我这样做时:
\begin{music}\meterfrac44\end{music}
这个分数比文本的其余部分大得多。当然,我可以尝试将其缩小以适合文本,但也许有更简单的方法可以做到这一点?
答案1
我可以提出两个解决方案:
\documentclass{article}
%%% solution 1
\usepackage{amsmath}
\newcommand{\setmetera}[2]{\ensuremath{\genfrac{}{}{0pt}{}{#1}{#2}}}
%%% solution 2
\newcommand{\setmeterb}[2]{\ensuremath{%
\vcenter{\offinterlineskip
\halign{\hfil##\hfil\cr
$\scriptstyle#1$\cr
\noalign{\vskip1pt}
$\scriptstyle#2$\cr}
}}%
}
\begin{document}
This is common time: \setmetera{4}{4}
This is a ternary time: \setmetera{3}{4}
\bigskip
This is common time: \setmeterb{4}{4}
This is a ternary time: \setmeterb{3}{4}
\end{document}
对第二种解决方案的一些评论
的定义\setmeterb
使用了一些低级 TeX 技巧。我使用它\ensuremath
来将\vcenter
结果相对于线居中(“几何中心”实际上会略高于基线)。
在\vcenter
我设置了一个使用原始 构建的对齐方式\halign
,这避免了 LaTeX 使用tabular
以确保行之间的间距相等,这正是我们不在这种情况下,两行仅由数字组成;特别是行间粘连的插入被禁用\offinterlineskip
。因此,最后的技巧是设置一个居中的列
\halign{\hfil#\hfil\cr ...}
然后添加两行,中间用 1pt 的空白隔开。#
实际上必须是,##
因为我们在定义中使用它。
答案2
答案3
答案4
使用 MusiXTeX,我定义了一个命令来执行此操作(需要改进,但可以工作):
\NewDocumentCommand{\textmeter}{m m O{1.0} O{-3.0pt} O{0pt}}{%
\adjustbox{scale=#3, raise=#4, margin=0pt 0pt 0pt 0pt, frame=#5}{%
\setbox\toks@box\vbox{\hbox{\twelvebf#1}%
\hbox{\twelvebf#2}}\vbox\@to15.5pt{\offinterlineskip
\hbox\@to\wd\toks@box{\hfill\twelvebf#1\hfill}
\hbox\@to\wd\toks@box{\hfill\twelvebf#2\hfill}}}%
}
您可以将其用作:
Some text \textmeter{2}{4} more text...
\notesintext
您还可以在 MusiXTeX 文档中查看该命令。