[RISOLTO] Elenco di esercizi con risultati al margine destro

  • Creatore
    Topic
  • #37825
    Up
    0
    Down
    ::


    Tramite l’istruzione

    `\newcommand{\mans}[1]{\hfill{\color{blue}$\displaystyle\left[#1\right]$}}`

    ho definito il comando mans che scrive in blu al margine destro e fra parentesi quadre il risultato di un esercizio. Purtroppo non tutti i risultati sono perfettamente allineati a destra.

    In particolare succede che se l’argomento di mans è una frazione il risultato appare lievemente a sinistra rispetto al margine. Faccio un esempio:

    `
    \begin{enumerate}
    \item $esercizio1$ \mans{x>1}
    \item $esecizion2$ \mans{x>\frac{1}{2}}
    \item $esercizio3$ \mans{x>3}
    \item $esecizion4$ \mans{x>\frac{1}{4}}
    `

    Il codice precedente produce dei risultati non tutti perfettamente allineati a destra. Più in particolare \mans{x>1} e \mans{x>3} sono allineati perfettamente a destra mentre \mans{x>\frac{1}{2}} e \mans{x>\frac{1}{4}} sono un pò più a sinistra degli altri due.
    Sembra che ciò dipenda dall’altezza del testo prodotto.

    Come posso risolvere questo strano problema? Grazie in anticipo a chiunque voglia rispondermi.

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #37826
      Up
      0
      Down
      ::

      Tramite l’istruzione

      `\newcommand{\mans}[1]{\hfill{\color{blue}$\displaystyle\left[#1\right]$}}`

      ho definito il comando mans che scrive in blu al margine destro e fra parentesi quadre il risultato di un esercizio. Purtroppo non tutti i risultati sono perfettamente allineati a destra.

      In particolare succede che se l’argomento di mans è una frazione il risultato appare lievemente a sinistra rispetto al margine. Faccio un esempio:

      `
      \begin{enumerate}
      \item $esercizio1$ \mans{x>1}
      \item $esecizion2$ \mans{x>\frac{1}{2}}
      \item $esercizio3$ \mans{x>3}
      \item $esecizion4$ \mans{x>\frac{1}{4}}
      `

      Il codice precedente produce dei risultati non tutti perfettamente allineati a destra. Più in particolare \mans{x>1} e \mans{x>3} sono allineati perfettamente a destra mentre \mans{x>\frac{1}{2}} e \mans{x>\frac{1}{4}} sono un più a sinistra degli altri due.
      Sembra che ciò dipenda dall’altezza del testo prodotto.

      Come posso risolvere questo strano problema? Grazie in anticipo a chiunque voglia rispondermi.

      Dipende dal fatto che usi parentesi quadre di tipo diverso; più una parentesi quadra è alta, più deve essere staccata da ciò che precede o segue.

      Si ottiene un risultato soddisfacente misurando l’altezza dell’espressione e inserendo uno spazio negativo di un quinto di essa:
      `\newcommand{\EvalHeight}[1]{%
      \setbox0=\hbox{$\displaystyle\left[\mathinner{#1}\right]$}%
      \textcolor{blue}{\unhcopy0 \kern-.2\ht0}}

      \newcommand{\mans}[1]{%
      {\unskip\nobreak\hfil\penalty50
      \hskip2em\hbox{}\nobreak\hfil\EvalHeight{#1}
      \parfillskip=0pt \finalhyphendemerits=0 \par}}`
      La definizione di \mans potrebbe essere semplicemente
      `\newcommand{\mans}{\hfill\EvalHeight{#1}}`
      ma quella che ti suggerisco evita problemi di “soluzione al margine sinistro” se l’esercizio fosse troppo lungo. Prova. È un po’ complicato, ma non c’è da temere.

      Esercizio: perché ho colorato due parole, una nella citazione del tuo messaggio e una nell’ultimo capoverso? 🙂

      Ciao
      Enrico

    • #37827
      Up
      0
      Down
      ::


      Enrico, fantastico!
      Quest’esercizio è didatticamente una bomba! 😉

      Ciao
      Tommaso

    • #37828
      Up
      0
      Down
      ::


      Sono a dir poco impressionato!!! Mille grazie !!!

      😀 😀 😀 😀 😀 😀 😀 😀 😀 😀 😀 😀 😀

      C’è solo un caso in cui non funziona ed è questo:

      `\mans{-2a^2\leq x\leq 2a^2}`

      Non riesco a spiegarmelo.

      PS
      Il coefficente -0.201 funziona meglio (almeno nel mio caso)

      PPS
      Grazie per la correzione fra pò e po’ 🙂

    • #37829
      Up
      0
      Down
      ::

      C’è solo un caso in cui non funziona ed è questo:

      `\mans{-2a^2\leq x\leq 2a^2}`

      Non riesco a spiegarmelo.

      Purtroppo non è davvero lineare. 🙁 Sostituisci la definizione di \EvalHeight con questa, ma tieni presente che vale solo per Computer Modern a 10pt
      `\makeatletter
      \newcommand{\EvalHeight}[1]{%
      \setbox0=\hbox{$\displaystyle\left[#1\right]$}%
      \textcolor{blue}{\unhcopy0
      \ifdim\ht0<8.5pt
      $\mkern-3mu$%
      \else
      \dimen0=\ht0
      \dimen2=\dimexpr(.2\dimen0+2.7pt)\relax
      $\mkern-\strip@pt\dimen2 mu$%
      \fi
      }%
      }
      \makeatother`
      Ciao
      Enrico

Visualizzazione 3 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top