Vertikalen Raum über und unter dem Array unterdrücken?

Vertikalen Raum über und unter dem Array unterdrücken?

Die arrayUmgebung verwendet \arraystretch(und \extrarowheightwenn das arrayPaket 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 myarrayund mysolidarray(das \arraystretchauf setzt 0), wie im folgenden Code definiert. Ich suche nach etwas dazwischen.

Bildbeschreibung hier eingeben

\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}

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

Antwort3

Wenn Sie keine vertikalen Regeln verwenden (was ohnehin empfohlen wird), können Sie \addlinespace[some value]„from“ booktabsdirekt 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} 

Bildbeschreibung hier eingeben

verwandte Informationen