Verwirrungsmatrix in LaTeX

Verwirrungsmatrix in LaTeX

Ich habe das vorgeschlagene Beispiel im "Konfusionsmatrix nur unter Verwendung von LaTeX-Code"

Ich habe die Anzahl der Klassen erhöht und bis zur 9x9-Konfusionsmatrix hat alles sehr gut funktioniert, aber bei 10 oder mehr Zahlen traten einige Fehler auf. Ich lade das Beispiel mit 10 Spalten hoch:

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

Antwort1

Anstatt 10 Argumente für Ihr Makro zu verwenden, ist es besser, eine durch Kommas getrennte Liste zu verwenden und diese dann mit etwas wie dem docsvlistaus dem etoolboxPaket zu verarbeiten. Mit dieser kleinen Änderung erzeugt Ihr Code:

Bildbeschreibung hier eingeben

Hier ist der vollständige Code:

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

Ich \MyTBoxhabe drei Argumente angegeben, da es jeweils eine „spezielle“ Verarbeitung für Kopfzeile, Textkörper und Fußzeile gibt. Trotzdem würde ich das wahrscheinlich anders machen, indem ich etwas wie verwende tikz, obwohl das wirklich davon abhängt, was Sie wirklich in diese Makros einfügen:) – aber ich mag Ihre Makros auch!

Antwort2

Danke, ich habe den Kommentar von @daleif befolgt und es geschafft.

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

Nachfolgend habe ich den Code und das resultierende Bild hochgeladen.

Bildbeschreibung hier eingeben

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

verwandte Informationen