Автоматически согласовывать ширину извлечений MusiXTex

Автоматически согласовывать ширину извлечений MusiXTex

Найден ответ, который является достаточным, но не оптимальным.Любые улучшения приветствуются.

Несколько MusiXTeXфрагментов помещены в несколько плавающих элементов как подрисунки документа. Изменение ширины этих фрагментов в среде фигур может не радовать глаз. Ширина не сильно различается. Поэтому единая ширина может быть выгодной. Есть ли способ добиться этого автоматически? Если так, то ширина должна настраиваться в каждой среде фигур индивидуально. Возможно, разумно расширить вопрос, чтобы согласовать ширину нескольких фрагментов в разных плавающих элементах на одной странице.

Следующая схема MWE демонстрирует проблему, а мой подход к ее решению можно найти в ответах.

\documentclass{article}
\usepackage{subfig,musixtex}

\begin{document}

\begin{figure}
\subfloat[narrow example]{%
\begin{music}%
\nobarnumbers%
\startextract%
\NOTEs\wh{cdefg}\enotes%
\endextract%
\end{music}}

\subfloat[wide example]{%
\begin{music}%
\nobarnumbers%
\startextract%
\NOTes\ha{cdef}\enotes\bar%
\NOTes\ha{ghi}\enotes%
\endextract%
\end{music}}

%\subfloat[test]{%from p. 116 of the manual, most like useless for this problem
%\begin{music}%
%\let\extractline\hbox
%\hbox to \hsize{%
%\hss\startextract\NOTes\hu{cd}\enotes\endextract\hss%
%\hss\startextract\NOTEs\wh{cd}\enotes\endextract\hss}%
%\end{music}
%}
\caption{Can these two examples automatically have the same width?}
\end{figure}

\end{document}

введите описание изображения здесь

Замечание.Заранее прошу прощения за неудачную игру слов в названии.

решение1

Ниже представлен ручной подход, поэтому вопрос решен.за исключением автоматического аспекта.

Использование \hsize=\musicwidthможет быть более естественным и эффективным, чем \parboxили minipageдля инкапсуляции. Излишне говорить: глобальное неизменяемое определение ширины удовлетворяет требованию постоянной ширины на одной странице в нескольких figureсредах, но может не подходить для всех отрывков. Однако для большинства рисунков может существовать компромиссный размер.

\documentclass{article}
\usepackage{subfig,musixtex}

\newlength{\musicwidth}%new
\setlength{\musicwidth}{0.75\textwidth}%new, can be set for each instance of a figure environment 

\begin{document}

\begin{figure}
\centering%new

\subfloat[narrow example]{
%\fbox
{\begin{music}
\hsize=\musicwidth%new
\nobarnumbers%
\startpiece%new
\NOTEs\wh{cdefg}\enotes%
\endpiece%new
\end{music}}}

\subfloat[wide example]{
%\fbox
{\begin{music}
\hsize=\musicwidth%new
\nobarnumbers%
\startpiece%new
\NOTes\ha{cdef}\enotes\bar%
\NOTes\ha{ghi}\enotes%
\endpiece%new
\end{music}}}

\caption{This manual approach by try and error works. But there might be room for improvement.}
\end{figure}

\end{document}

введите описание изображения здесь

Замечание.Возможно, тонкий комментарий \startpiece%newтребует дополнительного пояснения: в отличие от MWEАвтоматически согласовывать ширину извлечений MusiXTex, это предложение требует создания файла *.mx2, как написано в руководстве https://ctan.org/pkg/musixtexв разделе «Трехпроходная система» (читайте подробное руководство, RTFM).

Связанный контент