라텍스의 매트릭스

라텍스의 매트릭스

아래 마크업을 사용하여 행렬을 생성하려고 합니다.

\begin{figure}
\centering
\[
\begin{blockarray}{cccccccc}
I & like & nlp & mlpr & enjoy & reading & books \\
\begin{block}{[ccccccc]c}
1 & 1 & 1 & 1 & 1 & 1 & 1 & I \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & like \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & nlp \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & mlpr \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & enjoy \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & reading \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & books \\
\end{block}
\end{blockarray}
\]

\caption{A caption to the entire figure}
\end{figure}

내가 얻는 결과는 다음과 같습니다.

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

보시다시피, 행렬의 열 간격이 고르지 않습니다. 균등한 간격의 열을 얻을 수 있다면 좋을 것입니다.

어떤 아이디어가 있나요?

답변1

경고: 저는 전문가가 아닙니다 blkarray;-)

blockarray그러나 이 지정자를 사용하면 모든 열에 대해 동일한 너비를 사용하는 새 열 유형(예: B)을 정의할 수 있습니다 .

이 기능에는 7개의 열이 있으므로 일반적인 테이블 형식 환경에서와 같이 단축 ccccccc하고 대체 할 수 있습니다.*{7}B

\BAnewcolumntype인수가 있는 열 유형을 지원 하는지 확인해야 합니다 .

\documentclass{article}

\usepackage{mathtools}
\usepackage{blkarray}

\BAnewcolumntype{B}{>{\centering}p{1cm}}

\begin{document}


\begin{figure}
\centering
$
\begin{blockarray}{cccccccc}
\text{I} & \text{like} & \text{nlp} & \text{mlpr} & \text{enjoy} & \text{reading} & \text{books} \\
\begin{block}{[*{7}B]c}
1 & 1 & 1 & 1 & 1 & 1 & 1 & \text{I} \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & \text{like} \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & \text{nlp} \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & \text{mlpr} \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & \text{enjoy} \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & \text{reading} \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & \text{books} \\
\end{block}
\end{blockarray}
$

\caption{A caption to the entire figure}
\end{figure}

\end{document}

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

답변2

패키지 tabstackengine에는 여기서 사용하는 배열에 대한 고정 너비 옵션이 있습니다. 그 때문에 "reading"이라는 단어와 동일한 너비의 "1" 배열의 단일 항목을 만들기만 하면 나머지는 해결되었습니다. 나는 그것을 \tmpbox.

이 패키지를 사용하면 텍스트나 수학을 쌓을 수 있는데, 여기서는 텍스트를 텍스트로, 숫자를 수학으로 쌓는 데 사용했습니다.

\documentclass{article} 
\usepackage{tabstackengine}
\setstackEOL{\cr}
\setstacktabbedgap{1ex}
\fixTABwidth{T}
\begin{document}
\begin{figure}
\centering
\[
\stackText
\setbox0=\hbox{reading}
\savestack{\tmpbox}{\makebox[\wd0]{$1$}}
\savestack{\toprow}{\tabbedCenterstack{I & like & nlp & mlpr & enjoy & reading & books}}
\ensurestackMath{
\stackon{\bracketMatrixstack{
\tmpbox & 1 & 1 & 1 & 1 & 1 & 1 \cr
1 & 1 & 1 & 1 & 1 & 1 & 1  \cr
1 & 1 & 1 & 1 & 1 & 1 & 1 \cr
1 & 1 & 1 & 1 & 1 & 1 & 1  \cr
1 & 1 & 1 & 1 & 1 & 1 & 1  \cr
1 & 1 & 1 & 1 & 1 & 1 & 1  \cr
1 & 1 & 1 & 1 & 1 & 1 & 1
}}{\toprow}}
\Centerstack{ I \cr  like \cr nlp \cr mlpr \cr enjoy \cr reading \cr books}
\]
\caption{A caption to the entire figure}
\end{figure}
\end{document}

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

열 간 간격은 1ex로 설정됩니다 \setstacktabbedgap{1ex}. 행 간 기준선 건너뛰기를 더 크게 하려면 해당 행을 \setstackgap{L}{1.2\baselineskip}프리앰블에 추가하여 다음 결과를 얻을 수 있습니다.

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

[l]마지막으로 에 선택적 인수를 추가하여 단어의 오른쪽 열을 왼쪽 정렬할 수 있습니다 \Centerstack.

답변3

\Right{.}{text}각 블록의 프리앰블 끝에 열이 1개 줄어들고 블록이 7개 있는 변형입니다 . 또한 eqparbox시행착오를 거쳐 올바른 크기가 무엇인지 찾을 필요 없이 동일한 너비의 열을 보장하기 위해 패키지를 사용합니다.

\documentclass{article}

\usepackage{mathtools}
\usepackage{blkarray}
\usepackage{eqparbox}

\BAnewcolumntype{B}{>{\centering}p{1cm}}

\begin{document}

\begin{figure}
  \centering\makeatletter\setlength\tabcolsep{-10pt}\BA@colsep =1pt\makeatother
  $
  \begin{blockarray}{*{7}{c}}
    \eqmakebox[C]{I} & \eqmakebox[C]{like} & \eqmakebox[C]{nlp} & \eqmakebox[C]{mlpr} & \eqmakebox[C]{enjoy} & \eqmakebox[C]{reading} & \eqmakebox[C]{books} \\
    \begin{block}{*{7}{c}\Right{.}{I}}
      1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    \end{block}
    \begin{block}{*{7}{c}\Right{.}{like}}
      1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    \end{block}
    \begin{block}{*{7}{c}\Right{.}{nlp}}
      1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    \end{block}
    \begin{block}{*{7}{c}\Right{.}{mlpr}}
      1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    \end{block}
    \begin{block}{*{7}{c}\Right{.}{enjoy}}
      1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    \end{block}
    \begin{block}{*{7}{c}\Right{.}{reading}}
      1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    \end{block}
    \begin{block}{*{7}{c}\Right{.}{books}}
      1 & 1 & 1 & 1 & 1 & 1 & 1 \\
    \end{block}
  \end{blockarray}
  $

  \caption{A caption to the entire figure}
\end{figure}

\end{document} 

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

관련 정보