Параметр выравнивания по центру без аргумента ширины для табличного формата с использованием пакета массива

Параметр выравнивания по центру без аргумента ширины для табличного формата с использованием пакета массива

Рассмотрим базовую tabularсреду. Два столбца, первый должен содержать tikzpictureнеопределенного размера, второй — описание определенной (и указанной пользователем) ширины. Если бы содержимое первого столбца было хорошо ограничено, можно было бы сделать так:

\begin{tabular}{m{2cm}p{6cm}}

Однако содержание первого столбца недостаточно ограничено, поэтому мне интересно, сможем ли мы достичь эквивалента этого:

\begin{tabular}{mp{6cm}}

или

\begin{tabular}{m{}p{6cm}}

Первая колонка выровнена по центру, но без аргумента ширины. Я опубликую mwe, если нужна ясность.

решение1

В зависимости от желаемого горизонтального выравнивания первого столбца вы можете просто выбрать l(выравнивание по левому краю), c(горизонтальное центрирование) или r(выравнивание по правому краю) для первого столбца. Это автоматически адаптируется к ширине включенного tikzpicture. Чтобы вертикально отцентрировать текст во втором столбце относительно tikzpicture, используйте m{6cm}для второго столбца и добавьте baseline=(current bounding box.center)в качестве опции к каждому tikzpicture.

Поскольку эта настройка может привести к таблице, которая шире, чем textwidth, вы также можете попробовать tabularx. Я также включил tabularxпример в следующий MWE. Обратите внимание, что я использовал его \hlineв качестве ориентира для глаз. В реальной таблице я бы не использовал, а использовал бы \hlineтолько линии из booktabsпакета или вообще не использовал бы горизонтальные линии:

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

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{array}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{document}

\begin{tabular}{cm{6cm}}
\hline
\begin{tikzpicture}[baseline=(current bounding box.center)] 
\node[draw=black] (text1) {some text here};
\node[draw=black] (text2) [below left =of text1] {some other text here}edge [->] node {}(text1) ;
\end{tikzpicture}
& some explanatory text that is vertically centered with respect to the tikz picture\\
\hline
\begin{tikzpicture}[baseline=(current bounding box.center)] 
\node[draw=black] (text1) {A};
\node[draw=black] (text2) [below left =of text1] {B}edge [->] node {}(text1) ;
\end{tikzpicture}
& some explanatory text that is vertically centered with respect to the tikz picture\\
\hline
\end{tabular}

\bigskip

\begin{tabularx}{\textwidth}{cX}
\hline
\begin{tikzpicture}[baseline=(current bounding box.center)] 
\node[draw=black] (text1) {some text here};
\node[draw=black] (text2) [below left =of text1] {some other text here}edge [->] node {}(text1) ;
\end{tikzpicture}
& some explanatory text that is vertically centered with respect to the tikz picture\\
\hline
\begin{tikzpicture}[baseline=(current bounding box.center)] 
\node[draw=black] (text1) {A};
\node[draw=black] (text2) [below left =of text1] {B}edge [->] node {}(text1) ;
\end{tikzpicture}
& some explanatory text that is vertically centered with respect to the tikz picture\\
\hline
\end{tabularx}
\end{document}

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