Найден ответ, который является достаточным, но не оптимальным.Любые улучшения приветствуются.
Несколько 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).