extra spazio da ifthenelse

  • Creatore
    Topic
  • #12439
    Up
    0
    Down
    ::


    Un saluto a tutti,

    dopo averci provato per tutto il pomeriggio senza risultato, sono a chiedervi aiuto.
    Ho definito un comando per formattare il terzo campo di una riga di una tabella in funzione dei valori dei primi due campi.
    Funziona come voluto, tranne per il fatto che, a quel che vedo, la clausola else, anche se è {} restituisce uno spazio che viene concatenato al risultato if della condizione soddisfatta, con il risultato che ottengo uno scivolamento a sinistra del primo campo di ogni riga.

    Ecco il documento di test:

    `
    \documentclass[a4paper,10pt]{article}
    \usepackage{ifthen}
    \usepackage{color}

    \newcommand{\printValori}[2]
    {
    \ifthenelse{\equal{#1}{Bassa} \AND \equal{#2}{Bassa}} {#1 & #2 & \colorbox{green}{\textcolor{white}{Basso}}}{}
    \ifthenelse{\equal{#1}{Bassa} \AND \equal{#2}{Media}} {#1 & #2 & \colorbox{green}{\textcolor{white}{Basso}}}{}
    \ifthenelse{\equal{#1}{Bassa} \AND \equal{#2}{Elevata}}{#1 & #2 & \colorbox{yellow}{\textcolor{black}{Medio}}}{}
    \ifthenelse{\equal{#1}{Media} \AND \equal{#2}{Bassa}} {#1 & #2 & \colorbox{green}{\textcolor{white}{Basso}}}{}
    \ifthenelse{\equal{#1}{Media} \AND \equal{#2}{Media}} {#1 & #2 & \colorbox{yellow}{\textcolor{black}{Medio}}}{}
    \ifthenelse{\equal{#1}{Media} \AND \equal{#2}{Elevata}}{#1 & #2 & \colorbox{red}{\textcolor{white}{Elevato}}}{}
    \ifthenelse{\equal{#1}{Elevata} \AND \equal{#2}{Bassa}} {#1 & #2 & \colorbox{yellow}{\textcolor{black}{Medio}}}{}
    \ifthenelse{\equal{#1}{Elevata} \AND \equal{#2}{Media}} {#1 & #2 & \colorbox{red}{\textcolor{white}{Elevato}}}{}
    \ifthenelse{\equal{#1}{Elevata} \AND \equal{#2}{Elevata}}{#1 & #2 & \colorbox{red}{\textcolor{white}{Elevato}}}{}
    }

    %opening
    \title{}
    \author{}

    \begin{document}

    \maketitle

    \begin{abstract}

    \end{abstract}

    \section{test}
    \begin{tabular}{|l|l|l|}
    \hline
    \printValori{Elevata}{Elevata}\\
    \hline
    \printValori{Bassa}{Bassa}\\
    \hline
    \printValori{Bassa}{Media}\\
    \hline
    \printValori{Bassa}{Elevata}\\
    \hline
    \printValori{Media}{Bassa}\\
    \hline
    \printValori{Media}{Media}\\
    \hline
    \printValori{Media}{Elevata}\\
    \hline
    \printValori{Elevata}{Bassa}\\
    \hline
    \printValori{Elevata}{Media}\\
    \hline
    \printValori{Elevata}{Elevata}\\
    \hline
    \end{tabular}

    \end{document}
    `

    Che si tratti del risultato della clausola else è evidenziabile trasformandola da {} a {.}, si vede chiaramente il carattere . prendere il posto degli spazi bianchi ricreando la scalettatura dei primi campi.

    Mi sapete suggerire quale direzione prendere per risolvere il problema?

    stefano

Visualizzazione 1 filone di risposte
  • Autore
    Risposte
    • #12440
      Up
      0
      Down
      ::

      Un saluto a tutti,

      dopo averci provato per tutto il pomeriggio senza risultato, sono a chiedervi aiuto.
      Ho definito un comando per formattare il terzo campo di una riga di una tabella in funzione dei valori dei primi due campi.
      Funziona come voluto, tranne per il fatto che, a quel che vedo, la clausola else, anche se è {} restituisce uno spazio che viene concatenato al risultato if della condizione soddisfatta, con il risultato che ottengo uno scivolamento a sinistra del primo campo di ogni riga.

      Ecco il documento di test:

      Non è dovuto alla clausola “else”, ma ai fine riga non commentati.
      `\newcommand{\printValori}[2]
      {%
      \ifthenelse{\equal{#1}{Bassa} \AND \equal{#2}{Bassa}} {#1 & #2 & \colorbox{green}{\textcolor{white}{Basso}}}{}%
      \ifthenelse{\equal{#1}{Bassa} \AND \equal{#2}{Media}} {#1 & #2 & \colorbox{green}{\textcolor{white}{Basso}}}{}%
      \ifthenelse{\equal{#1}{Bassa} \AND \equal{#2}{Elevata}}{#1 & #2 & \colorbox{yellow}{\textcolor{black}{Medio}}}{}%
      \ifthenelse{\equal{#1}{Media} \AND \equal{#2}{Bassa}} {#1 & #2 & \colorbox{green}{\textcolor{white}{Basso}}}{}%
      \ifthenelse{\equal{#1}{Media} \AND \equal{#2}{Media}} {#1 & #2 & \colorbox{yellow}{\textcolor{black}{Medio}}}{}%
      \ifthenelse{\equal{#1}{Media} \AND \equal{#2}{Elevata}}{#1 & #2 & \colorbox{red}{\textcolor{white}{Elevato}}}{}%
      \ifthenelse{\equal{#1}{Elevata} \AND \equal{#2}{Bassa}} {#1 & #2 & \colorbox{yellow}{\textcolor{black}{Medio}}}{}%
      \ifthenelse{\equal{#1}{Elevata} \AND \equal{#2}{Media}} {#1 & #2 & \colorbox{red}{\textcolor{white}{Elevato}}}{}%
      \ifthenelse{\equal{#1}{Elevata} \AND \equal{#2}{Elevata}}{#1 & #2 & \colorbox{red}{\textcolor{white}{Elevato}}}{}%
      }`
      Ciao
      Enrico

    • #12441
      Up
      0
      Down
      ::

      Non è dovuto alla clausola “else”, ma ai fine riga non commentati.
      `\newcommand{\printValori}[2]
      {%
      \ifthenelse{\equal{#1}{Bassa} \AND \equal{#2}{Bassa}} {#1 & #2 & \colorbox{green}{\textcolor{white}{Basso}}}{}%
      \ifthenelse{\equal{#1}{Bassa} \AND \equal{#2}{Media}} {#1 & #2 & \colorbox{green}{\textcolor{white}{Basso}}}{}%

      < snip>

      }`
      Ciao
      Enrico

      Grazie, ora funziona ed ho imparato una cosa nuova ‘:D’

      Stefano

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

Go to top