newcommand와 함께 북탭 사용하기

newcommand와 함께 북탭 사용하기

저는 명령과 환경을 정의하는 데 비교적 익숙하지 않습니다. 저는 여러 개의 테이블(모두 템플릿을 따릅니다)을 만들려고 노력하고 있으며 새로운 명령을 직접 정의하면 코드가 단순화될 것이라고 생각했습니다. 내가 시도한 것은 다음과 같습니다.

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

기본적으로 6개의 매개변수를 입력하고 해당 매개변수를 채우고 해당 테이블을 인쇄할 수 있기를 바랍니다.

불행하게도 이 코드는 작동하지 않습니다. 작동시키는 방법을 알고 있나요?

감사합니다!

답변1

다음은 사용( 선택적 인수에 table키가 사용되는 경우 ) 또는 그냥 생성 중에서 선택할 수 있는 보다 유연한 매크로입니다 .captiontabular

placement(기본값 htp)는 다른 옵션과 함께 추가될 수 있습니다.

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

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

관련 정보