Wie fülle ich eine tabellarische Box mit einem Tikz-Knoten und zentriere den Text h/v?
Ich möchte in diesem Fall das Colortbl-Paket nicht verwenden.
\documentclass[a4paper]{article}
\usepackage{array,tabularx,tikz,ragged2e,siunitx}
\begin{document}
{\renewcommand\tabularxcolumn[1]{m{#1}}
\renewcommand{\arraystretch}{1.3}
\begin{tabularx}{\linewidth}{%
|X|*{3}{>{\Centering}m{2cm}|}}\hline
Entourer la ou les bonne(s) reponse(s)
&\tikz[baseline,overlay]
\node[fill=blue!15,minimum height=20pt,minimum width=2cm+2\tabcolsep] (A) {a};
&b&p\\\hline
\end{tabularx}}
\end{document}
Antwort1
Ich bin nicht sicher, ob ich Ihre Frage verstehe, aber wenn Sie a vertikal mit b und c ausrichten möchten, berücksichtigen Sie
\documentclass[a4paper]{article}
\usepackage{array,tabularx,tikz,ragged2e,siunitx}
\begin{document}
{\renewcommand\tabularxcolumn[1]{m{#1}}
\renewcommand{\arraystretch}{1.3}
\begin{tabularx}{\linewidth}{%
|X|*{3}{>{\Centering}m{2cm}|}}\hline
Entourer la ou les bonne(s) reponse(s)
&\tikz[baseline=(A.base),overlay]
\node[fill=blue!15,minimum height=20pt,minimum width=2cm+2\tabcolsep] (A) {a};
&b&p\\\hline
\end{tabularx}}
\end{document}
AKTUALISIEREN: OK, ich sehe, dass @Zarko Ihnen bereits das gegeben hat, was Sie wollten. Aus Spaß bin ich Ihrem ursprünglichen Ansatz ein wenig gefolgt und habe Folgendes erhalten:
\documentclass[a4paper]{article}
\usepackage{array,tabularx,tikz,ragged2e,siunitx}
\usetikzlibrary{calc}
\newcommand{\TikzStrut}[1]{\tikz[overlay,remember picture]{\node(#1){\strut};}}
\makeatletter
\newcommand{\RowHeight}{% see e.g. https://tex.stackexchange.com/a/84536/121799
\def\tmp{\dimexpr\arraystretch\ht\strutbox+\arraystretch\ht\strutbox+\arraystretch\dp\@arstrutbox}\relax
\xdef\myrowheight{\the\tmp}\relax
}
\makeatother
\begin{document}
{\renewcommand\tabularxcolumn[1]{m{#1}}
\renewcommand{\arraystretch}{1.3}
\begin{tabularx}{\linewidth}{%
|X|*{3}{>{\Centering}m{2cm}|}}\hline
Entourer la ou les bonne(s) reponse(s)\RowHeight
&\tikz[baseline=(A.base),overlay,remember picture]{
\node[fill=blue!15,minimum height=\myrowheight,minimum width=2cm+2\tabcolsep] (A)
{a};}
&b&p\\\hline
\end{tabularx}}
\end{document}
Es berechnet die Höhe der Zeile korrekt (glaube ich), aber erst, nachdem ich die Tatsache berücksichtigt habe, dass es eine Zeile mit zwei Zeilen gibt. Und auch die vertikale Ausrichtung ist nicht perfekt. Ich poste das nur, damit es bei Bedarf später vervollständigt werden kann.
Antwort2
ich vermute, dass Sie Folgendes suchen:
hierfür ist keine Zauberei nötig mit tikz
:
\documentclass[a4paper]{article}
\usepackage{array,tabularx}%reorganized loading of package
\renewcommand\tabularxcolumn[1]{m{#1}} % added
\usepackage{ragged2e}
%\usepackage{tikz} % is not used in mwe
%\usepackage{siunitx} % is not used in mwe
%
\usepackage[table]{xcolor}% new package, for coloring table
\begin{document}
\renewcommand{\arraystretch}{1.3}
\begin{tabularx}{\linewidth}{|X|*{3}{>{\Centering}m{2cm}|}}
\hline
Entourer la ou les bonne(s) reponse(s)
& \cellcolor{blue!15}{a} & b & p \\
\hline
\end{tabularx}
\end{document}
Nachtrag (bearbeitet): aus der Diskussion in den Kommentaren unten *und aus Ihrem Follow-up Frage* ich schließe daraus, dass Sie eigentlich gerne habenLösung ähnlich dem ersten Beispiel in meiner Antwort, wie ich es auf diese (Folge-)Frage gebe:
*die Ihre weiteren Änderungen der Knotenform ermöglichen, wie Sie im Kommentar unten erwähnt und in Ihrer Folgefrage näher erläutert haben:
\documentclass[12pt]{article}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}}
\usepackage{ragged2e}
\usepackage{tikz}
\newcommand{\DC}[1]{%
\begin{tikzpicture}[baseline=(current bounding box.base)]
\node[minimum width=\dimexpr2cm+2\tabcolsep,
minimum height=12mm, text depth=0.25ex,
inner ysep=2mm, outer sep=0pt,
append after command={
\pgfextra{\let\LN\tikzlastnode
\path[fill=blue!15]
(\LN.south west) -| (\LN.north east) -| cycle;
} },
font=\bfseries] {#1};
\end{tikzpicture}}
\begin{document}
\begingroup
\renewcommand{\arraystretch}{1.3}
\begin{tabularx}{\linewidth}{%
|>{\raggedright}X | *{3}{@{}>{\Centering}m{\dimexpr2cm+2\tabcolsep}@{}|}
}
\hline
Entourer la ou les bonne(s) reponse(s)
& \DC{a} & b & c \\
\hline
\end{tabularx}
\endgroup
\end{document}