newcommand e new environment

  • Creatore
    Topic
  • #32089
    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}`

Visualizzazione 1 filone di risposte
  • Autore
    Risposte
    • #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

    • #32091
      Up
      0
      Down
      ::


      Si è vero…cioè pensavo in questo modo di definire un metodo veloce per creare tabelle in corpo, però non avevo pensato al fatto che così facendo posso definire solo tabelle di 3 colonne….

      Grazie, cercherò di sistemare il documento….

Visualizzazione 1 filone di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top