Breite von MusiXTex-Extrakten automatisch harmonisieren

Breite von MusiXTex-Extrakten automatisch harmonisieren

Es wurde eine Antwort gefunden, die ausreichend, aber nicht optimal ist.Alle Verbesserungen sind willkommen.

Mehrere MusiXTeXAuszüge werden in einigen Floats als Unterabbildungen eines Dokuments platziert. Die Breitenvariation dieser Auszüge innerhalb einer Abbildungsumgebung ist möglicherweise nicht angenehm für das Auge. Die Breiten variieren nicht stark. Eine einheitliche Breite könnte also von Vorteil sein. Gibt es eine Möglichkeit, dies automatisch zu erreichen? Wenn ja, sollte sich die Breite in jeder Abbildungsumgebung individuell anpassen. Vielleicht ist es sinnvoll, die Frage zu erweitern, um die Breite mehrerer Auszüge in verschiedenen Floats auf derselben Seite zu harmonisieren.

Das folgende MWE zeigt das Problem und mein manueller Ansatz ist in den Antworten zu finden.

\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}

Bildbeschreibung hier eingeben

Anmerkung.Ich entschuldige mich im Voraus für das schlechte Wortspiel im Titel.

Antwort1

Nachfolgend finden Sie einen manuellen Ansatz, daher wird die Frage beantwortetaußer dem automatischen Aspekt.

Die Verwendung von \hsize=\musicwidthkönnte natürlicher und effizienter sein als die Verwendung von \parboxoder minipagezur Kapselung. Es versteht sich von selbst: Eine globale, sich nicht ändernde Definition der Breite erfüllt die Anforderung einer konstanten Breite auf derselben Seite in mehreren figureUmgebungen, ist aber möglicherweise nicht für alle Auszüge geeignet. Es könnte jedoch eine Kompromissgröße für die meisten Abbildungen geben.

\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}

Bildbeschreibung hier eingeben

Anmerkung.Vielleicht bedarf der subtile Kommentar \startpiece%neweiner weiteren Erklärung: Im Gegensatz zum MWE vonBreite von MusiXTex-Extrakten automatisch harmonisieren, dieser Vorschlag erfordert die Generierung der *.mx2Datei wie im Handbuch beschrieben https://ctan.org/pkg/musixtexim Abschnitt „Drei-Durchgang-System“ (lesen Sie das ausführliche Handbuch, RTFM).

verwandte Informationen