2009-09-07 16 views
5

Tengo un entorno de tabla personalizado definido con \ newenvironment. Tengo un título en este entorno, pero quiero tenerlo al final.¿Cómo crear un entorno de tabla autodefinido con la leyenda al final de la tabla con LaTeX?

mi entorno se ve un poco (simplificado) como este:

\newenvironment{mytable}[2]{\begin{table}[hbtp]\caption{#1}\label{#1}\begin{center}\begin{tabular}{#2}}{\end{tabular}\end{center}\end{table}} 

quiero poner el título al final, de esta manera:

\newenvironment{mytable}[2]{\begin{table}[hbtp]\label{#1}\begin{center}\begin{tabular}{#2}}{\caption{#1}\end{tabular}\end{center}\end{table}} 

Pero eso no funciona, porque No puedo usar los parámetros al final del entorno. ¿Como puedó resolver esté problema?

Respuesta

4

Querrá guardar los subtítulos y los parámetros de la etiqueta y usarlos más adelante. (Además, el \ etiqueta debe aparecer después del \ caption.)

Algo como esto debería funcionar:

\newcommand{\templabel}{}% stores the label 
\newcommand{\tempcaption}{}% stores the caption 

\newenvironment{mytable}[3]{% 
    \gdef\templabel{#1}% store the label so we can use it later 
    \gdef\tempcaption{#2}% store the caption so we can use it later 
    \begin{table}[hbtp]% 
    \begin{center}% 
     \begin{tabular}{#3}% 
}{% 
     \caption{\tempcaption}% use the stored caption 
     \label{\templabel}% use the stored label (*after* the caption) 
     \end{tabular}% 
    \end{center}% 
    \end{table}% 
} 

uso del entorno como este:

\begin{mytable}{tab:example}{This is the caption for my example table.}{cc} 
    Row 1 & First \\ 
    Row 2 & Second \\ 
    Row 3 & Third \\ 
\end{mytable} 

no he probado esto código.

+0

Muchas gracias. Pero resultó que \ gdef no funcionó. En su lugar, utilicé \ renewcommand y todo funciona como quiero. Gracias. – Mnementh

+0

Ah, lo arruiné. Las llaves alrededor del comando gdef no deberían estar allí: \ gdef \ templabel {# 1} \ gdef \ tempcaption {# 2} Lo sentimos. Eso es lo que obtengo por no probar mi código primero. – godbyk

+0

Use '\ centering' en lugar del entorno central. Este último agrega espacio vertical adicional innecesario. –

-2

utilizar cortar y pegar en lugar de un nuevo entorno? Estoy harta de the \ newenv. no está destinado a ser usado de esa manera. ¿Cual es el punto de esto? no escribirlo todo cada vez?

+2

Para no escribirlo todo el tiempo. Para cambiar el aspecto de las tablas sobre todo el libro de una vez. Para tener claramente el mismo estilo en todas las tablas. Las razones típicas de DRY. Podrías preguntar cuál es el punto en definir entornos o nuevos comandos. – Mnementh

+0

bueno, el objetivo de definir un nuevo entorno es que tenga sus propios contadores, en lugar de contarlo como una tabla o una figura ... pero parece bastante inútil. – Mica

Cuestiones relacionadas