Автоматическое разбиение строк (не строк) в табличных (или аналоговых) данных с переменным количеством столбцов

Автоматическое разбиение строк (не строк) в табличных (или аналоговых) данных с переменным количеством столбцов

У меня есть некоторые значения, которые мне нужно поместить в строчную форму, т.е. заполнить столбец таблицы на основе его ширины, как описано в MWE.

\documentclass[a4paper]{article}
\usepackage[margin=2cm]{geometry} % Just for this example
\setlength{\tabcolsep}{0.5cm}
\newcommand\myelement{\rule{1cm}{0.5cm}}
\begin{document}
Suppose each element width is 1 cm.

The whole page is 21 cm - 2*2 cm = 19 cm and therefore can contain
(19 cm / (1 cm + 2*0.5 cm)) = 9.5 = 9 elements, so the output should be like:

\begin{tabular}{rrrrrrrrr}
\myelement & \myelement & \myelement & \myelement & \myelement & \myelement & \myelement & \myelement & \myelement\\
\myelement & \myelement & \myelement & \myelement & \myelement & \myelement & \myelement & \myelement & \myelement\\
\myelement & \myelement & \myelement
\end{tabular}

~\\[1cm]

\begin{minipage}{0.5\linewidth}
Here the output should be like:

\begin{tabular}{rrrr}
\myelement & \myelement & \myelement & \myelement \\
\myelement & \myelement & \myelement & \myelement \\
\myelement & \myelement & \myelement & \myelement \\
\myelement & \myelement & \myelement & \myelement \\
\myelement & \myelement & \myelement & \myelement \\
\myelement
\end{tabular}
\end{minipage}
\end{document}

Количество столбцов должно быть автоматически выведено из ширины поля, содержащего «среду/команду автоколонок» (назовите ее по своему усмотрению), с учетом максимальной ширины элементов.

Есть идеи? Я мог бы использовать LuaLaTeX, но это решение будет слишком медленным и потребляет много памяти, так что это последний вариант.

решение1

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

\documentclass[a4paper]{article}
\usepackage[margin=2cm]{geometry} % Just for this example
\setlength{\tabcolsep}{0.5cm}
\newcommand\myelement{\rule{1cm}{0.5cm}}
\newcommand\xelement{\makebox[2cm]{\myelement}\hspace{0pt}}

\begin{document}
Suppose each element width is 1 cm.

The whole page is 21 cm - 2*2 cm = 19 cm and therefore can contain
(19 cm / (1 cm + 2*0.5 cm)) = 9.5 = 9 elements, so the output should be like:


\begin{flushleft}
\xelement  \xelement  \xelement  \xelement  \xelement  \xelement  \xelement  \xelement  \xelement
\xelement  \xelement  \xelement  \xelement  \xelement  \xelement  \xelement  \xelement  \xelement
\xelement  \xelement  \xelement
\end{flushleft}

\bigskip

\begin{minipage}{0.5\linewidth}
Here the output should be like:

\begin{flushleft}
\xelement  \xelement  \xelement  \xelement 
\xelement  \xelement  \xelement  \xelement 
\xelement  \xelement  \xelement  \xelement 
\xelement  \xelement  \xelement  \xelement 
\xelement  \xelement  \xelement  \xelement 
\xelement
\end{flushleft}
\end{minipage}
\end{document}

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