diseño de tabla dentro de un nuevo comando

diseño de tabla dentro de un nuevo comando

Me pregunto si puedo definir algo similar que \newcommandcoloque los valores dentro de una plantilla de tabla ( ) predefinida tabular.

disposición de la mesa

Si ve la tabla anterior, imagine que la duplicaría muchas veces (por ejemplo, utilizando un comando recién definido \workpackage). Los argumentos de entrada para ese comando serían:

\workpackage {2}{
\begin{itemize}......
}{none}

El diseño en sí es una mesa. ¿Es una buena idea incluir un diseño tan complejo en un nuevo comando como una especie de plantilla?

Este ejemplo no funciona :(

\newcommand{\wp}[3]{
    \begin{tabular}{ l l }
      Effort & #1 \\
      Content & #2 \\
      Pre-Requisites & #3 \\
    \end{tabular}
}

Aquí está mi solución final, que está inspirada en las respuestas que se dan a continuación:

\usepackage{tabularx}
\usepackage{xkeyval}

% define the key (arguments)
\makeatletter
\define@key{wpkeys}{title}{%
  \def\wptitle{#1}
}
\define@key{wpkeys}{number}{%
  \def\wpnumber{#1}
}
\define@key{wpkeys}{weeks}{%
  \def\wpweeks{#1 person weeks}
}
\define@key{wpkeys}{results}{%
  \def\wpresults{#1}
}
\makeatother
% end of key definition

% new command for a work package
\newcommand{\workpackage}[2][]{%
    \setkeys{wpkeys}{#1}%

    \subsection*{WP\wpnumber: \wptitle}
    \begin{tabularx}{\linewidth}{|p{3cm}|X|}
        \hline
        Effort & \wpweeks \tabularnewline
        \hline
        Content & #2 \tabularnewline
        \hline
        Expected results & \wpresults \tabularnewline
        \hline
    \end{tabularx}
}
% end of command definition

Usado así:

\workpackage[number=1, title={Project Management \& Reporting}, weeks=3,results={MS1}]{
    \begin{itemize} 
        \item foo 
        \item baa
    \end{itemize}
}

Respuesta1

He aquí un keyvalueenfoque de interfaz.

Defina claves 'arbitrarias' para una familia de claves, diga wpkeyscon \define@keyy asígnela key-valuea una macro que tenga un nombre similar al de la clave (más fácil de recordar). Esas claves se pueden dar como argumento opcional para \workpackageentonces.

El contenido real se da, por ejemplo, como primer argumento obligatorio.

Con

\setkeys{wpkeys}{prerequisites=none,leftheader={Effort},#1}%

Es posible preestablecer algunas claves que deben tener algunos valores si no se proporcionan explícitamente.

Tenga en cuenta que debido a la brevedad de mi ejemplo, esto dejará el contenido de \leftheaderetc. definido incluso para el siguiente uso de la \workpackagemacro.

\documentclass{article}

\usepackage{tabularx}
\usepackage{xkeyval}

\makeatletter

\define@key{wpkeys}{leftheader}{%
  \def\leftheader{#1}
}

\define@key{wpkeys}{rightheader}{%
  \def\rightheader{#1}
}

\define@key{wpkeys}{prerequisites}{%
  \def\prerequisites{#1}
}




\makeatother


\newcommand{\workpackage}[2][]{%
\setkeys{wpkeys}{prerequisites=none,leftheader={Effort},#1}%
\begin{tabularx}{\linewidth}{|p{3cm}|X|}
\hline
\leftheader & \rightheader \tabularnewline
\hline
Content & #2 \tabularnewline
\hline
Pre-requisites & \prerequisites \tabularnewline
\hline
\end{tabularx}
}

\begin{document}

\workpackage[rightheader={2 person weeks}]{\begin{itemize} \item foo \item foobar \end{itemize}}


\workpackage[rightheader={5 person weeks},prerequisites={a lot}]{\begin{itemize} \item foo \item foobar \end{itemize}}

\end{document}

El diseño de la mesa lo dejo al OP.

ingrese la descripción de la imagen aquí

ActualizarUn poco más agradable/fácil de usar:

\documentclass{article}
\usepackage[x11names]{xcolor}
\usepackage{tabularx}
\usepackage{xkeyval}

\makeatletter

\define@key{wpkeys}{leftheader}{%
  \def\leftheader{#1}
}

\define@key{wpkeys}{rightheader}{%
  \def\rightheader{#1}
}

\define@key{wpkeys}{prerequisites}{%
  \def\prerequisites{#1}
}

\define@key{wpkeys}{contentname}{%
  \def\contentcolumnheadername{#1}
}

\define@key{wpkeys}{prerequisitesname}{%
  \def\prerequisitescolumnheadername{#1}
}

\define@key{wpkeys}{contentheaderstyle}{%
  \def\contentheaderstyle{#1}%
}

\define@key{wpkeys}{prerequisitesheaderstyle}{%
  \def\prerequisitesheaderstyle{#1}%
}

\define@key{wpkeys}{leftheaderstyle}{%
  \def\leftheaderstyle{#1}%
}

\define@key{wpkeys}{rightheaderstyle}{%
  \def\rightheaderstyle{#1}%
}


% Tabular lengths etc. 

\newlength\wp@leftcolumnwidth
\setlength{\wp@leftcolumnwidth}{3cm} % A default value

\define@key{wpkeys}{leftcolumnwidth}{%
  \setlength{\wp@leftcolumnwidth}{#1}%
}

\define@key{wpkeys}{arraystretch}{%
  \renewcommand{\arraystretch}{#1}%
}


\presetkeys{wpkeys}{%
  arraystretch=1.5,
  contentheaderstyle={\textbf},
  prerequisitesheaderstyle={\textit},
  rightheaderstyle={\large\bfseries\textcolor{blue}},
  leftheaderstyle={\large\bfseries\textcolor{red}},
}{}



\newcommand{\workpackage}[2][]{%
  \begingroup
  \setkeys{wpkeys}{contentname={Content},prerequisitesname={Pre - Requisites},prerequisites=none,leftheader={Effort},#1}%
  \begin{tabularx}{\linewidth}{|p{\wp@leftcolumnwidth}|X|}
    \hline
    \leftheaderstyle{\leftheader} & \rightheaderstyle{\rightheader} \tabularnewline
    \hline
    \contentheaderstyle{\contentcolumnheadername} & #2 \tabularnewline
    \hline
    \prerequisitesheaderstyle{\prerequisitescolumnheadername} & \topsep=0pt\prerequisites \tabularnewline
    \hline
  \end{tabularx}
  \endgroup
}

\makeatother


\begin{document}

\workpackage[rightheader={2 person weeks}]{\begin{itemize} \item foo \item foobar \end{itemize}}


\workpackage[rightheader={5 person weeks},prerequisites={\begin{itemize} \item A nice list \item that ends \item after three items\end{itemize}}]{\begin{itemize} \item foo \item foobar \end{itemize}}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada