LaTeX의 혼동 행렬

LaTeX의 혼동 행렬

나는 "에서 제안된 예를 사용했습니다.LaTeX 코드만 사용하는 혼동 행렬"

클래스 수를 늘렸고 9x9 혼동 행렬까지 모든 것이 잘 작동했지만 10개 이상의 숫자에서는 약간의 오류가 발생했습니다. 10개의 열이 있는 예제를 업로드합니다.

\documentclass{article}
\usepackage{graphicx}

\newcommand\MyBox[1]{%
  \fbox{\parbox[c][.7cm][c]{.7cm}{\centering #1}}%
}
\newcommand\MyVBox[1]{%
  \parbox[c][.7cm][c]{1cm}{\centering\bfseries #1}%
}  
\newcommand\MyHBox[2][\dimexpr.7cm+2\fboxsep\relax]{%
  \parbox[c][1cm][c]{#1}{\centering\bfseries #2}%
}  
\newcommand\MyTBox[10]{%
  \MyVBox{#1}\MyBox{#2}\hspace*{-\fboxrule}\MyBox{#3}\hspace*{-\fboxrule}%
  \MyBox{#4}\hspace*{-\fboxrule}%
  \MyBox{#5}\hspace*{-\fboxrule}%
  \MyBox{#6}\hspace*{-\fboxrule}%
  \MyBox{#7}\hspace*{-\fboxrule}%
  \MyBox{#8}\hspace*{-\fboxrule}%
  \MyBox{#9}\hspace*{-\fboxrule}%
  \MyBox{#10}\par\vspace{-\fboxrule}
}  

\begin{document}

{
\offinterlineskip
\raisebox{-5cm}[0pt][0pt]{\rotatebox[origin=c]{90}{\parbox[c][0pt][c]{1cm}{\textbf{Source2}\\[20pt]}}}\par
\hspace*{1cm}\MyHBox[\dimexpr5.1cm+6\fboxsep\relax]{Source1}\par
\hspace*{1cm}\MyHBox{A}\MyHBox{B}\MyHBox{C}
\MyHBox{D}\MyHBox{E}\MyHBox{F}\par

\MyTBox{A}{1}{2}{3}{4}{5}{6}{7}{8}{9}
\MyTBox{B}{2}{3}{4}{5}{6}{7}{8}{9}{10}
\MyTBox{C}{3}{4}{5}{6}{7}{8}{9}{10}{11}
\MyTBox{D}{4}{5}{6}{7}{8}{9}{10}{11}{12}
\MyTBox{E}{5}{6}{7}{8}{9}{10}{11}{12}{13}
\MyTBox{F}{6}{7}{8}{9}{10}{11}{12}{13}{14}
}

\end{document}

답변1

docsvlist매크로에 10개의 인수를 사용하는 것보다 쉼표로 구분된 목록을 사용한 다음 패키지 와 같은 것을 사용하여 처리하는 것이 더 좋습니다 etoolbox. 이 작은 수정으로 코드는 다음을 생성합니다.

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

전체 코드는 다음과 같습니다.

\documentclass{article}
\usepackage{graphicx}

\newcommand\MyBox[1]{%
  \fbox{\parbox[c][.7cm][c]{.7cm}{\centering #1}}%
}
\newcommand\MyVBox[1]{%
  \parbox[c][.7cm][c]{1cm}{\centering\bfseries #1}%
}
\newcommand\MyHBox[2][\dimexpr.7cm+2\fboxsep\relax]{%
  \parbox[c][1cm][c]{#1}{\centering\bfseries #2}%
}
\usepackage{etoolbox}
\newcommand\MyTBox[3]{%
  \MyVBox{#1}
  \renewcommand*\do[1]{\MyBox{##1}\hspace*{-\fboxrule}}
  \docsvlist{#2}
  \MyBox{#3}\par\vspace{-\fboxrule}
}

\begin{document}

{
\offinterlineskip
\raisebox{-5cm}[0pt][0pt]{\rotatebox[origin=c]{90}{\parbox[c][0pt][c]{1cm}{\textbf{Source2}\\[20pt]}}}\par
\hspace*{1cm}\MyHBox[\dimexpr5.1cm+6\fboxsep\relax]{Source1}\par
\hspace*{1cm}\MyHBox{A}\MyHBox{B}\MyHBox{C}
\MyHBox{D}\MyHBox{E}\MyHBox{F}\par

\MyTBox{A}{1, 2, 3, 4, 5, 6, 7, 8}{9}
\MyTBox{B}{2, 3, 4, 5, 6, 7, 8, 9}{10}
\MyTBox{C}{3, 4, 5, 6, 7, 8, 9, 10}{11}
\MyTBox{D}{4, 5, 6, 7, 8, 9, 10, 11}{12}
\MyTBox{E}{5, 6, 7, 8, 9, 10, 11, 12}{13}
\MyTBox{F}{6, 7, 8, 9, 10, 11, 12, 13}{14}
}

\end{document}

\MyTBox머리글, 본문, 바닥글에 각각 "특별한" 처리가 있기 때문에 세 가지 인수를 만들었습니다 . 즉, 나는 아마도 와 같은 것을 사용하여 이 작업을 다르게 수행할 것입니다 tikz. 비록 이것은 실제로 이 매크로 안에 무엇을 넣는지에 따라 달라지지만 :) -- 하지만 저는 귀하의 매크로도 좋아합니다!

답변2

감사합니다. @daleif의 의견을 따라가서 성공했습니다.

\newcommand\MyTBox[9]{%
 %....
 \MyTBoxcontinued
 }  
\newcommand\MyTBoxcontinued[2]{%
 %two more arguments
 }

다음에는 코드와 결과 이미지를 업로드했습니다.

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

\documentclass{article}
\usepackage{graphicx}
\usepackage{tipa}
\usepackage[normalem]{ulem}
\newcommand\MyBox[1]{%
  \fbox{\parbox[c][.7cm][c]{.7cm}{\centering #1}}%
}
\newcommand\MyVBox[1]{%
  \parbox[c][.7cm][c]{1cm}{\centering\bfseries #1}%
}  
\newcommand\MyHBox[2][\dimexpr.7cm+2\fboxsep\relax]{%
  \parbox[c][1cm][c]{#1}{\centering\bfseries #2}%
}  
\newcommand\MyTBox[9]{%
  \MyVBox{#1}\MyBox{#2}\hspace*{-\fboxrule}\MyBox{#3}\hspace*{-\fboxrule}%
  \MyBox{#4}\hspace*{-\fboxrule}%
  \MyBox{#5}\hspace*{-\fboxrule}%
  \MyBox{#6}\hspace*{-\fboxrule}%
  \MyBox{#7}\hspace*{-\fboxrule}%
  \MyBox{#8}\hspace*{-\fboxrule}%
  \MyBox{#9}\hspace*{-\fboxrule}%
  \MyTBoxcontinued
}  
\newcommand\MyTBoxcontinued[2]{%
 \MyBox{#1}\hspace*{-\fboxrule}%    
 \MyBox{#2}\par\vspace{-\fboxrule}
}

\begin{document}

{
\offinterlineskip
\hspace*{1cm}\MyHBox{/\textipa{a}/}\MyHBox{/\textipa{E}/}\MyHBox{\textipa{/I/}}
\MyHBox{/\reflectbox{\textipa{c}}/}\MyHBox{/\textipa{U}/}\MyHBox{/\textipa{a:}/}
\MyHBox{/\textipa{e}/}\MyHBox{/\textipa{i}/}\MyHBox{/\textipa{o}/}\MyHBox{/\textipa{u}/}\par

\MyTBox{/\textipa{a}/}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}
\MyTBox{/\textipa{E}/}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}
\MyTBox{/\textipa{I}/}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}
\MyTBox{/\reflectbox{\textipa{c}}/}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}
\MyTBox{/\textipa{U}/}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}
\MyTBox{/\textipa{a:}/}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}
\MyTBox{/\textipa{e}/}{7}{8}{9}{10}{11}{12}{13}{14}{15}{16}
\MyTBox{/\textipa{o}/}{8}{9}{10}{11}{12}{13}{14}{15}{16}{17}
\MyTBox{/\textipa{u}/}{9}{10}{11}{12}{13}{14}{15}{16}{17}{18}
}

\end{document}

관련 정보