Я хочу иметь команду cup, которая адаптируется к размеру массива слева (что-то вроде left
и right
для скобок), сохраняя при этом тот же шрифт для букв и толщину линии. Я пробовал использовать bigcup
с пакетом scalerel, но линия и нижний индекс становятся слишком широкими. Я привожу здесь минимальный пример, чтобы показать, каков результат:
\documentclass{article}
\usepackage{scalerel}
\begin{document}
\[
\scalerel{
\bigcup\limits_{x \in X}
}
{
\left\{
f(x)
\begin{array}{| l}
a \\ % first row
b \\ % second row
c \\ % third row
d \\ % fourth row
e \\ % fifth row
\dots \\ % etc.
z \\ % n-th row
\end{array}
\right\}
}
\]
\end{document}
Полученный размер правильный, однако размер шрифта x \in X
становится слишком большим, а линия слишком толстой.
Как можно получить аналогичный результат без этих искажений?
решение1
Я думаю, что при масштабировании с размером массива вы всегда будете сталкиваться с тем фактом, что все содержимое поля scalerel
, включая нижний индекс, масштабируется, что приводит к непоследовательным размерам скрипта (и, вероятно, к смехотворным размерам чашек).
Я бы предложил вместо этого использовать \scaleobj
команду, также предоставленную пакетом scalerel
, которая работает аналогично команде \scalebox
из graphicx
пакета. При масштабировании всего стакана и нижнего индекса вы можете масштабировать только нижний индекс в другом направлении. Чтобы нижний индекс хорошо расположился под стаканом после внутреннего масштабирования, можно добавить \raisebox
и \smash
:
\documentclass{article}
\usepackage{scalerel}
\newcommand\hugecup{%
\scaleobj{2.5}{%
\bigcup\limits_{\smash{\raisebox{.25\baselineskip}{\(\scaleobj{0.425}{x\in X}\)}}}
}
}
\begin{document}
\[
\hugecup
\left\{
f(x)
\begin{array}{| l}
a \\ % first row
b \\ % second row
c \\ % third row
d \\ % fourth row
e \\ % fifth row
\dots \\ % etc.
z \\ % n-th row
\end{array}
\right\}
\]
\end{document}
Выход:
Используемые значения — это именно те, которые, по моему мнению, выглядят разумными для ряда различных (больших) массивов; вы можете захотеть их настроить.