Die array
Umgebung verwendet \arraystretch
(und \extrarowheight
wenn das array
Paket geladen ist), um einen „Durchschuss“ zwischen den Zeilen des hinzuzufügen array
. Darüber hinaus wird dieser vertikale Abstand über der ersten Zeile und unter der letzten Zeile hinzugefügt.
Gibt es eine Möglichkeit, den Abstand über der ersten Zeile und unter der letzten Zeile zu unterdrücken und gleichzeitig den Zeilenabstand beizubehalten array
?
Vergleichen Sie die Ausgabe mit myarray
und mysolidarray
(das \arraystretch
auf setzt 0
), wie im folgenden Code definiert. Ich suche nach etwas dazwischen.
\documentclass{standalone}
\usepackage{array}
\usepackage{amsmath}
\newenvironment{myarray}%
{\begin{array}[t]{@{}l@{}}}%
{\end{array}}
\newenvironment{mysolidarray}%
{%
\def\arraystretch{0}%
\begin{array}[t]{@{}l@{}}
}%
{\end{array}}
\begin{document}
\fboxsep=0pt
\begin{tabular}{l}
\verb|$P + Q$|: \fbox{$P + Q$}
\\
\verb|myarray|:
\fbox{$
\begin{myarray}
P + Q
\end{myarray}
$}
\fbox{$
\begin{myarray}
P + {} \\ Q
\end{myarray}
$}
\\
\verb|mysolidarray|:
\fbox{$
\begin{mysolidarray}
P + Q
\end{mysolidarray}
$}
\fbox{$
\begin{mysolidarray}
P + {} \\ Q
\end{mysolidarray}
$}
\end{tabular}
\end{document}
Antwort1
Sie können das Array messen, indem Sie es zweimal setzen: zuerst um die Höhe der ersten Zeile zu ermitteln und dann um die Tiefe der letzten Zeile.
\documentclass{article}
\usepackage{array}
\usepackage{environ}
\makeatletter
\NewEnviron{mysolidarray}[1]{%
\begingroup
\def\arraystretch{0}%
\extrarowheight=\z@
\sbox\z@{$\begin{array}[t]{#1}\BODY\end{array}$}%
\sbox\tw@{$\begin{array}[b]{#1}\BODY\end{array}$}%
\expandafter\endgroup\expandafter
\firstlineheight\the\ht\expandafter\z@\expandafter
\lastlinedepth\the\dp\tw@\relax
\sbox{\solidarraybox}{$\begin{array}[t]{#1}\BODY\end{array}\m@th$}
\ht\solidarraybox=\firstlineheight
\dp\solidarraybox=\dimexpr\dp\solidarraybox-\dp\@arstrutbox+\lastlinedepth\relax
\box\solidarraybox
}
\makeatother
\newdimen\firstlineheight
\newdimen\lastlinedepth
\newsavebox{\solidarraybox}
\begin{document}
\fboxsep=0pt
\begin{tabular}{lll}
\verb|$P + Q$| & \fbox{$P + Q$}
\\
\verb|array|&
\fbox{$
\begin{array}[t]{@{}l@{}}
P + Q
\end{array}
$}
\fbox{$
\begin{array}[t]{@{}l@{}}
P + {} \\ Q
\end{array}
$}
&\extrarowheight=2pt
\fbox{$
\begin{array}[t]{@{}l@{}}
P + Q
\end{array}
$}
\fbox{$
\begin{array}[t]{@{}l@{}}
P + {} \\ Q
\end{array}
$}
\\
\verb|mysolidarray|&
\fbox{$
\begin{mysolidarray}{@{}l@{}}
P + Q
\end{mysolidarray}
$}
\fbox{$
\begin{mysolidarray}{@{}l@{}}
P + {} \\ Q
\end{mysolidarray}
$}
&\extrarowheight=2pt
\fbox{$
\begin{mysolidarray}{@{}l@{}}
P + Q
\end{mysolidarray}
$}
\fbox{$
\begin{mysolidarray}{@{}l@{}}
P + {} \\ Q
\end{mysolidarray}
$}
\end{tabular}
\end{document}
Antwort2
Meinst du was \setlength{\extrarowheight}{-1pt}
?
\documentclass{standalone}
\usepackage{array}
\usepackage{amsmath}
\newenvironment{myarray}%
{ \setlength{\extrarowheight}{-1pt}
\begin{array}[t]{@{}l@{}}}%
{\end{array}}
\newenvironment{mysolidarray}%
{%
\def\arraystretch{0}%
\begin{array}[t]{@{}l@{}}
}%
{\end{array}}
\begin{document}
\fboxsep=0pt
\begin{tabular}{l}
\verb|$P + Q$|: \fbox{$P + Q$}
\\
\verb|myarray|:
\fbox{$
\begin{myarray}
P + Q
\end{myarray}
$}
\fbox{$
\begin{myarray}
P + {} \\ Q
\end{myarray}
$}
\\
\verb|mysolidarray|:
\fbox{$
\begin{mysolidarray}
P + Q
\end{mysolidarray}
$}
\fbox{$
\begin{mysolidarray}
P + {} \\ Q
\end{mysolidarray}
$}
\end{tabular}
\end{document}
Antwort3
Wenn Sie keine vertikalen Regeln verwenden (was ohnehin empfohlen wird), können Sie \addlinespace[some value]
„from“ booktabs
direkt nach der ersten \hline und vor der letzten \hline der Tabelle verwenden, um die volle Kontrolle zu haben:
\documentclass{article}
\usepackage{array, booktabs}
\usepackage{amsmath}
\usepackage[table]{xcolor}
\newenvironment{myarray}%
{\begin{array}[t]{@{}l@{}}}%
{\end{array}}
\newenvironment{mysolidarray}%
{%
\def\arraystretch{0}%
\begin{array}[t]{@{}l@{}}
}%
{\end{array}}
\begin{document}
\fboxsep=0pt
\begin{tabular}{l}
\verb|$P + Q$|: \fbox{$P + Q$}
\\
\verb|myarray|:
\fbox{$
\begin{myarray}
P + Q
\end{myarray}
$}
\fbox{$
\begin{myarray}
P + {} \\ Q
\end{myarray}
$}
\\
\verb|mysolidarray|:
\fbox{$
\begin{mysolidarray}
P + Q
\end{mysolidarray}
$}
\fbox{$
\begin{mysolidarray}
P + {} \\ Q
\end{mysolidarray}
$}
\\[3ex]
\verb|othersolidarray|:
$
\begin{array}{@{}l@{}}%
\arrayrulecolor{red}
\hline\addlinespace[-1pt]
P + Q \\ Q + P
\\
\addlinespace[-1.25pt]
\hline
\end{array}
$
$
\begin{array}{@{}l@{}}%
\arrayrulecolor{red}
\hline\addlinespace[-1pt]
P + {} \\ Q
\\
\addlinespace[-1.25pt]
\hline
\end{array}
$
\end{tabular}
\end{document}