Tabla de un diseño/plantilla definido para entrada

Tabla de un diseño/plantilla definido para entrada

Estoy haciendo un proyecto en el que necesito copiar una tabla varias veces a lo largo de un documento. La estructura básica de la tabla es la misma, sin embargo, algunas entradas deben cambiar. Me preguntaba si es posible definir un diseño básico (o algún tipo de plantilla) donde solo necesito completar los datos variables y no configurar toda la tabla una vez más.

Mi problema es que existe una gran posibilidad de que se produzca un error humano al copiar y pegar tablas para cambiarlas más adelante.

Pongamos un ejemplo de lo que me gustaría. Primero, aquí hay una definición de tabla:

\begin{table}[h]
\makebox[\linewidth]
{
    \begin{tabular}{|l|l|l|}
    \hline
    [static]            & [static]  & [static]  \\ \hline
    [static]            & [DYNAMIC] & [DYNAMIC] \\ \hline
    [static]            & [DYNAMIC] & [DYNAMIC] \\ \hline
    [static]            & [DYNAMIC] & [DYNAMIC] \\ \hline
    \end{tabular}
}
\caption{[DYNAMIC}
\label{[DYNAMIC]}
\end{table}

Lo que estoy buscando es una manera de replicar la tabla donde las cosas marcadas con [estática] no se deben cambiar cada vez que replico la tabla, sin embargo, las cosas que están marcadas con [DINÁMICO] se deben cambiar en cada tabla. Entonces, lo que estoy buscando es algún tipo de forma de definir el diseño base que facilite "pegar" los datos que deben cambiarse.

He estado buscando esto en Google, pero no he tenido suerte, así que ahora me pregunto si esto es posible con látex y, de ser así, ¿cuál es la forma correcta de hacerlo?

Gracias :)

Respuesta1

Puede utilizar un sistema clave-valor, por ejemplo expl3.

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\archietable}{m}
 {
  \begin{table}[htp]
  \centering
  \keys_set:nn { archie/table } { #1 }
  \begin{tabular}{|l|l|l|}
  \hline
  STATIC & STATIC & STATIC \\ \hline
  STATIC & \l_archie_table_XA_tl & \l_archie_table_YA_tl \\ \hline
  STATIC & \l_archie_table_XB_tl & \l_archie_table_YB_tl \\ \hline
  STATIC & \l_archie_table_XC_tl & \l_archie_table_YC_tl \\ \hline
  STATIC & \l_archie_table_XD_tl & \l_archie_table_YD_tl \\ \hline
  \end{tabular}
  \caption{\l_archie_table_caption_tl}
  \label{\l_archie_table_label_tl}
  \end{table}
 }

\keys_define:nn { archie/table }
 {
  XA      .tl_set:N = \l_archie_table_XA_tl,
  XB      .tl_set:N = \l_archie_table_XB_tl,
  XC      .tl_set:N = \l_archie_table_XC_tl,
  XD      .tl_set:N = \l_archie_table_XD_tl,
  YA      .tl_set:N = \l_archie_table_YA_tl,
  YB      .tl_set:N = \l_archie_table_YB_tl,
  YC      .tl_set:N = \l_archie_table_YC_tl,
  YD      .tl_set:N = \l_archie_table_YD_tl,
  caption .tl_set:N = \l_archie_table_caption_tl,
  label   .tl_set:N = \l_archie_table_label_tl,
 }

\ExplSyntaxOff

\begin{document}

\archietable{
  XA = foo,
  XB = bar,
  XC = baz,
  XD = foobar,
  YA = gnu,
  YB = gnat,
  YC = gnocco,
  YD = whatever,
  caption=First caption,
  label=flabel,
}

\archietable{
  XA = 1,
  XB = 2,
  XC = 3,
  XD = 4,
  YA = 5,
  YB = 6,
  YC = 7,
  YD = 8,
  caption=Second caption,
  label=slabel,
}

\end{document}

Cambiar los STATICvalores; recuerde que los espacios en el texto en la definición de \archietabledeben insertarse como ~.

El orden en el que especifique las claves es irrelevante.

ingrese la descripción de la imagen aquí

información relacionada