배열 위와 아래의 수직 공간을 억제하시겠습니까?

배열 위와 아래의 수직 공간을 억제하시겠습니까?

환경 array에서는 를 사용하여 \arraystretch( 패키지가 로드된 \extrarowheight경우 array) 행 사이에 "선행"을 추가합니다 array. 또한 이 수직 공간은 첫 번째 행 위와 마지막 행 아래에 추가됩니다.

의 행 간 공간을 유지하면서 첫 번째 행 위와 마지막 행 아래의 공간을 억제하는 방법이 있습니까 array?

다음 코드에 정의된 대로 myarraymysolidarray( \arraystretch으로 설정됨)을 사용하여 출력을 비교합니다 . 0나는 둘 사이에 뭔가를 찾고 있습니다.

여기에 이미지 설명을 입력하세요

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

답변1

첫 번째 행의 높이를 얻기 위해 먼저 배열을 조판한 다음 마지막 행의 깊이를 얻기 위해 배열을 조판하는 것을 측정할 수 있습니다.

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

여기에 이미지 설명을 입력하세요

답변2

무슨 뜻인가요 \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}

여기에 이미지 설명을 입력하세요

답변3

수직 규칙을 사용하지 않는 경우(권장 사항) 테이블의 첫 번째 \hline 바로 뒤와 마지막 \hline 바로 앞에서 사용하여 모든 권한을 가질 \addlinespace[some value]수 있습니다.booktabs

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

여기에 이미지 설명을 입력하세요

관련 정보