
Я хотел бы добавить/нарисовать линии (как показано красным) поверхипод буквами A, B и D (не в \cdots
) -каждый к верхнему и нижнему концу матрицы.
Какой правильный метод nicematrix для этого использует?
· Кажется, есть проблема с рисованием в "пустых ячейках". Знает ли nicematrix ключ, подобный ключу TikZ-matrix nodes into empty cells
?
·Можно ли выполнить эту задачу элегантно с помощью цикла foreach?
\documentclass{article}
\usepackage{amsmath}
\usepackage{nicematrix}
\usepackage{tikz}
\begin{document}
$\begin{NiceArray}{(c c c c) }
& & & \\
A & B & \cdots & D \\
& & & \\
\CodeAfter
\begin{tikzpicture}[]
%\draw[red] (2-1) -- (1-1); % does not work-->' No shape named `1-1' is known.'
\draw[red] (2-1) -- (1.5|-1); % work
\end{tikzpicture}
\end{NiceArray}$
\end{document}
решение1
Ваша инструкция по Tikz \draw (2-1) -- (1-|1.5) ;
кажется хорошей (если я действительно понимаю, что вы хотите нарисовать...).
Для цикла можно (например) использовать foreach
цикл (предоставляемый , pgffor
который загружается pgf
, а сам загружается nicematrix
).
Вот пример:
\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}
\begin{document}
$\begin{NiceArray}{(c c c c)}
\NotEmpty & & & \\
A & B & \cdots & D \\
& & & \\
\CodeAfter
\begin{tikzpicture} [red]
\foreach \i in {1,...,\value{jCol}}
{
\draw (2-\i) -- (1-|\i.5) ;
\draw (2-\i) -- (last-|\i.5) ;
} ;
\end{tikzpicture}
\end{NiceArray}$
\end{document}
В \CodeAfter
счетчике LaTeX jCol
содержится общее количество столбцов массива (тогда как в теле массива он содержит номер текущего столбца).
Вы говорите в своем вопросе, что вам не нужно никаких правил выше и ниже \cdots
. Конечно, предыдущий код не определяет команду \cdots
в ячейке автоматически... Вы на самом деле хотите код с автоматическим определением положения потенциальных команд \cdots
(написать код с такой функцией можно, но это не так просто)?