Re: newcommand e new environment

#32090
Up
0
Down
::

Salve a tutti, avrei un problemino con Latex (uso MikTex sotto Vista): mi sono definito un newcommand per sostituire \begin e \end tabular e un newenvironment per crearmi delle tabelle in testo. Ho dei problemi però per quanto riguarda l’output delle tabelle (ne ho create 2), le quali non mi vengono centrate come vorrei; inoltre la descrizione \caption mi appare sballata, ovvero non la visualizzo a capo ma bensì di seguito alla tabella.
La prima tabella è in testo e la visualizzo non centrata con la didascalia che non va a capo, mentre la seconda è una tabella in corpo, definita con il newenvironment, anch’essa non è centrata ma però la didascalia la visualizzo correttamente a capo.
Questo di seguito è il codice, spero che possiate aiutarmi a risolvere:

`
\newcommand{\btab}[2] {\begin{tabular}{c|c|c}} {\centering}
\newcommand{\etab}[1] {\end{tabular}}

\newenvironment{tabella}
{\begin{table} \btab}
{\etab

\caption {\footnotesize Tabella 2 – Esempio di tabella fuori testo costruita con newenvironment}
\end{table}
}

\begin {document}
\title {}
\author {}
\date {}
\maketitle

\btab
\multicolumn{1}{c}{DATA} & \multicolumn{1}{c}{CITTA'} & \multicolumn{1}{c}{LOCATION} \\
\hline

\hline
\etab
\caption {\footnotesize Tabella 1 – Esempio di tabella non fuori testo costruita con un newcommand}

\begin{tabella}
\multicolumn{1}{c}{DATA} & \multicolumn{1}{c}{CITTA'} & \multicolumn{1}{c}{LOCATION} \\
\hline

\hline
\end{tabella}

\end {document}`

Stai facendo pasticci notevoli. Con \newcommand{\xxx}[2]{,,,} definisci un comando con due argomenti. Il tuo {\centering} non fa assolutamente nulla, perché compare nel preambolo e certamente non fa parte della definizione. Ovviamente TeX si mangia i suoi argomenti e ti trovi con qualcosa di inaspettato. Per esempio,
`\btab
\multicolumn{1}{c}{DATA} & …`
diventa
`\begin{tabular}{c|c|c}{c}{DATA} &`
perché \multicolumn e {1} sono i due argomenti del comando \btab.

Mi chiedo dove sia la convenienza di fare definizioni del genere, quando
`\begin{table}[htp]
\centering
\begin{tabular}{…}

\end{tabular}
\caption{…}\label{…}
\end{table}`
non è più complicato di quanto vuoi ottenere. Che fra l’altro ti obbligherebbe (se le definizioni fossero corrette) a sole tabelle di tre colonne. Perché poi definire l’ambiente “tabella” con una didascalia fissa? A che serve? A mettere il testo della didascalia nel preambolo e non nel documento?

Ciao
Enrico

Go to top