Verwenden von Booktabs mit Newcommand

Verwenden von Booktabs mit Newcommand

Ich bin relativ neu im Definieren von Befehlen und Umgebungen. Ich versuche, mehrere Tabellen zu erstellen (die alle einer Vorlage folgen) und dachte, dass das Definieren eines neuen Befehls den Code vereinfachen würde. Folgendes habe ich versucht:

\newcommand{test}[6]{
    \begin{table}
    \begin{tabular}{ll}
        \centering
        \toprule

        \textbf{Form} & \textbf{Conjugation} \\
        \midrule

        \textit{Yo} & \textit{#1} \\
        \textit{T\'u} & \textit{#2} \\
        \textit{\'El} & \textit{#3} \\
        \textit{Nosot@s} & \textit{#4} \\
        \textit{Vosotr@s} & \textit{#5} \\
        \textit{Ell@s} & \textit{#6} \\

        \bottomrule
    \end{tabular}
    \end{table}
}

Grundsätzlich möchte ich 6 Parameter eingeben können, die dann ausgefüllt werden und die entsprechende Tabelle ausdrucken.

Leider funktioniert dieser Code nicht. Wissen Sie, wie Sie ihn zum Laufen bringen?

Danke schön!

Antwort1

Hier ist ein flexibleres Makro, das die Wahl zwischen der Verwendung table(wenn der Schlüssel captionim optionalen Argument verwendet wird) oder der einfachen Erstellung von ermöglicht tabular.

Der placementSchlüssel (Standardwert htp) kann zusammen mit den anderen Optionen hinzugefügt werden.

\documentclass{article}
\usepackage{booktabs}
\usepackage{xparse}

\ExplSyntaxOn

\NewDocumentCommand{\conjugation}{O{}m}
 {
  \group_begin:
  \keys_set:nn { froggos/conjugation } { #1 }
  \froggos_conjugation:n { #2 }
  \group_end:
 }

\keys_define:nn { froggos/conjugation }
 {
  placement    .tl_set:N  = \l__froggos_conjugation_placement_tl,
  placement    .initial:n = htp,
  caption      .tl_set:N  = \l__froggos_conjugation_caption_tl,
  shortcaption .tl_set:N  = \l__froggos_conjugation_shortcaption_tl,
  label        .tl_set:N  = \l__froggos_conjugation_label_tl,
 }

\seq_new:N \l__froggos_conjugation_entries_seq

\cs_new_protected:Nn \froggos_conjugation:n
 {
  \tl_if_empty:NF \l__froggos_conjugation_caption_tl
   {
    \__froggos_conjugation_table_begin:V \l__froggos_conjugation_placement_tl
    \centering
   }
  \seq_set_split:Nnn \l__froggos_conjugation_entries_seq { \\ } { #1 }
  \begin{tabular}{ll}
    \toprule
    \textbf{Form} & \textbf{Conjugation} \\
    \midrule
    \textit{Yo}       & \textit{\seq_item:Nn \l__froggos_conjugation_entries_seq {1}} \\
    \textit{T\'u}     & \textit{\seq_item:Nn \l__froggos_conjugation_entries_seq {2}} \\
    \textit{\'El}     & \textit{\seq_item:Nn \l__froggos_conjugation_entries_seq {3}} \\
    \textit{Nosotr@s} & \textit{\seq_item:Nn \l__froggos_conjugation_entries_seq {4}} \\
    \textit{Vosotr@s} & \textit{\seq_item:Nn \l__froggos_conjugation_entries_seq {5}} \\
    \textit{Ell@s}    & \textit{\seq_item:Nn \l__froggos_conjugation_entries_seq {6}} \\
    \bottomrule
  \end{tabular}
  \tl_if_empty:NF \l__froggos_conjugation_caption_tl
   {
    \tl_if_empty:NTF \l__froggos_conjugation_shortcaption_tl
     {
      \caption{\l__froggos_conjugation_caption_tl}
     }
     {
      \caption[\l__froggos_conjugation_shortcaption_tl]{\l__froggos_conjugation_caption_tl}
     }
    \tl_if_empty:NF \l__froggos_conjugation_label_tl
     {
      \label{\l__froggos_conjugation_label_tl}
     }
    \end{table}
   }
 }

\cs_new_protected:Nn \__froggos_conjugation_table_begin:n
 {
  \begin{table}[#1]
 }
\cs_generate_variant:Nn \__froggos_conjugation_table_begin:n {V}

\ExplSyntaxOff

\begin{document}

\listoftables

\section{Main}

\conjugation{soy \\ eres \\ es \\ somos \\ sois \\ son}

\conjugation[
  caption=Conjugation of \textit{ser},
  label=verb:ser,
]{soy \\ eres \\ es \\ somos \\ sois \\ son}

\conjugation[
  caption={Conjugation of \textit{ser}, but with a very long caption that requires a short one},
  shortcaption=Conjugation of \textit{ser},
  label=verb:ser-again,
]{soy \\ eres \\ es \\ somos \\ sois \\ son}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen