problema con newenvironment

  • Creatore
    Topic
  • #41725
    Up
    0
    Down
    ::


    Salve a tutti. Il mio scopo \`e di creare un ambiente teorema con riquadro. Dopo molte prove sono arrivato ad un risultato per me soddisfacente che \`e il seguente:

    `
    {\parindent=0pt
    \fbox{%
    \addtolength{\linewidth}{-2\fboxsep}%
    \addtolength{\linewidth}{-2\fboxrule}%
    \begin{minipage}{\linewidth}%
    \begin{teo}
    Questo \`e un esempio di teorema.
    La pi\`u bella formula
    \[e^{i\pi}=-1\]
    \end{teo}
    \end{minipage}%
    }}`

    dopo aver ovviamente definito l’ambiente teo.
    Ho provato allro a metterlo sottoforma di ambiente in modo da poterlo richiamare in modo semplice in questo modo:

    `
    \newenvironment{boxth}{
    \bgroup\parindent=0pt
    \fbox\bgroup
    \addtolength{\linewidth}{-2\fboxsep}%
    \addtolength{\linewidth}{-2\fboxrule}%
    \begin{minipage}{\linewidth}%
    \begin{teo}
    }
    {
    \end{teo}
    \end{minipage}%
    \egroup\egroup
    }
    `

    ma mi da i seguenti errori:

    Missing } inserted \begin{boxth}

    Extra }, or forgotten endgroup \end{boxth}

    Qualcuno mi pu\`o aiutare.
    Grazie in anticipo.

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #41726
      Up
      0
      Down
      ::

      Salve a tutti. Il mio scopo è di creare un ambiente teorema con riquadro […]

      somiglia ad una cosa che avevo già chiesto io tempo fa. Prova con il codice seguente: preambolo
      `\newsavebox{\thbox}

      \newenvironment{boxth}{%
      \par\medskip\noindent%
      \fboxsep=.5em% da personalizzare: separazione tra bordo e contenuto
      \fboxrule=.125em% da personalizzare: spessore del bordo
      \begin{lrbox}{\thbox}%
      \begin{minipage}{.96\linewidth}% da personalizzare: larghezza del riquadro
      \begin{teo}
      }
      {%
      \end{teo}
      \end{minipage}%
      \end{lrbox}
      \fbox{\usebox{\thbox}}%
      \par\medskip
      }`
      e corpo
      `\begin{boxth}
      Questo è un esempio di teorema. La più bella formula
      \[
      e^{i\pi}=-1
      \]
      \end{boxth}`
      Eventualmente potresti integrare le chiamate a \addtolength che suggerisci sopra.

      Nel preambolo ho inoltre caricato amsmath e inserito la riga \newtheorem{teo}{Teorema}.

      A presto.

    • #41727
      Up
      0
      Down
      ::


      grazie mille!!!

    • #41728
      Up
      0
      Down
      ::

      grazie mille!!!

      Prego. Metti anche un \ignorespaces dopo quel \noindent.

      A presto.

    • #41729
      Up
      0
      Down
      ::

      grazie mille!!!

      Prego. Metti anche un \ignorespaces dopo quel \noindent.

      Non serve a niente il \noindent dove l’hai messo, né \ignorespaces ha alcun effetto:
      `\usepackage{calc}
      \newsavebox{\thbox}
      \newenvironment{boxth}
      {\par\medskip
      \setlength{\fboxsep}{5em} % da personalizzare: separazione tra bordo e contenuto
      \setlength{\fboxrule}{0.125em} % da personalizzare: spessore del bordo
      \begin{lrbox}{\thbox}%
      \edef\saveparindent{\the\parindent}%
      \begin{minipage}{\columnwidth-2\fboxsep-2\fboxrule}
      \setlength{\parindent}{\saveparindent}
      \begin{teo}}
      {\end{teo}
      \end{minipage}
      \end{lrbox}
      \noindent\fbox{\usebox{\thbox}}\par\medskip}`
      Come vedi il \noindent va quando produci effettivamente il testo. Ho lasciato quello spessore del filetto, ma di sicuro va molto diminuito per evitare l’effetto RIP.(*)

      Ho usato il pacchetto calc per impostare la giustezza della minipage senza dover indovinare; così diventa, compresi spazi aggiunti e filetti, esattamente uguale alla giustezza normale. Ho anche aggiunto il trucco per riportarsi dentro alla minipage la dimensione usuale del rientro.

      Ciao
      Enrico

      (*) RIP sta, naturalmente, per Requiescat in pacem. 😉

    • #41730
      Up
      0
      Down
      ::

      Non serve a niente il \noindent dove l’hai messo, né \ignorespaces ha alcun effetto […]

      Grazie per la lezione TeXnica.

      Ho lasciato quello spessore del filetto, ma di sicuro va molto diminuito per evitare l’effetto RIP […]

      😀 Bellissima questa! Vorrei avere la forza di ridere, ma non ce la faccio perché sono ancora senza voce dopo aver letto quel bellissimo deve c’essere dall’altra parte!

    • #41731
      ernded
      Partecipante
        Up
        0
        Down
        ::

        emanuelesacco\n

        dopo aver ovviamente definito l’ambiente teo.

        Con newtheorem o come?

      • #41732
        Up
        0
        Down
        ::

        dopo aver ovviamente definito l’ambiente teo.

        Con newtheorem o come?

        Anche solo così:
        `\newtheorem{teo}{Teorema}`
        A presto.

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

    Go to top