我需要在 MusixTeX 乐谱中的一些音符周围放置一个方框。我尝试过\fcolorbox
,但背景是白色的(不透明),遮住了谱表线。我也尝试过 Tikz,但无法获得正确的音符间距和位置。有什么想法吗?
\documentclass{article}
\usepackage{etex,musixtex}
\usepackage{tikz}
\begin{document}
\begin{music}
\startextract
\NOtes\wh{cde}\wh{f}\wh{g}\en
\endextract
% I want to box the F note with a red box
\startextract
\NOtes\wh{cde}\fcolorbox{red}{white}{\wh{f}}\wh{g}\en
\endextract
\startextract
\NOtes\wh{cde}\tikz[overlay]\node[draw,red]{\wh{f}};\wh{g}\en
\endextract
\end{music}
\end{document}
答案1
一种可能性是使用tikzmark
库和\FrameNote
命令:
\documentclass{article}
\usepackage{etex,musixtex}
\usepackage{xparse}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\NewDocumentCommand\FrameNote{mO{0pt}O{14pt}O{10pt}}{
\tikz[remember picture,overlay]
\node[inner ysep=0pt,draw,red,text width=#4,minimum height=#3,anchor=west] at ([xshift=-4.5pt,yshift=\the\dimexpr#2-5pt\relax]pic cs:#1) {};
}
\begin{document}
\begin{music}
\startextract
\NOtes\wh{c}\wh{d}\wh{efg}\ha{p}\en
\endextract
\startextract
\NOtes\tikzmark{a}\wh{c}\tikzmark{b}\wh{d}\tikzmark{c}\wh{efg}\tikzmark{d}\ha{p}\en
\endextract
\end{music}
\FrameNote{a}
\FrameNote{b}[4pt]
\FrameNote{c}[8pt][14pt][60pt]
\FrameNote{d}[26pt][24pt]
\end{document}
使用\tikzmark{<mark>}
在所需位置放置标记(通常在您想要框起来的音符或一组音符之前)。然后使用\FrameCommand{<mark>}
绘制框架。该命令有三个可选参数,允许控制框架的垂直偏移、宽度和高度;完整的语法是:
\FrameCommand{<mark>}[<vertical shift>][<height>][<width>]