Teoremi/Definizioni con immagine laterale

  • Creatore
    Topic
  • #10938
    Up
    0
    Down
    ::


    Ciao a tutti,
    il mio problema è il seguente:

    dovrei ridefinire lo stile di theorem (con il pacchetto amsthm o ntheorem, non importa) in modo tale che per ciascun teorema inserito, oltre alla stampa del titolo e della numerazione venisse aggiunta anche un’immagine, alla sinistra del titolo (in automatico, ovviamente).

    L’idea l’ho presa dal libro “C++ fondamenti di programmazione” di Deitel&Deitel dove se ne faceva uso per i vari suggerimenti sparsi nel testo.

    Grazie in anticipo per l’aiuto,
    jiveaxe

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #10939
      Up
      0
      Down
      ::

      Ciao a tutti,
      il mio problema è il seguente:

      dovrei ridefinire lo stile di theorem (con il pacchetto amsthm o ntheorem, non importa) in modo tale che per ciascun teorema inserito, oltre alla stampa del titolo e della numerazione venisse aggiunta anche un’immagine, alla sinistra del titolo (in automatico, ovviamente).

      L’idea l’ho presa dal libro “C++ fondamenti di programmazione” di Deitel&Deitel dove se ne faceva uso per i vari suggerimenti sparsi nel testo.

      Con ntheorem

      `\newcommand\lowerimage[2]{\setbox0=\hbox{\includegraphics[#1]{#2}}%
      \dimen255=\ht0 \advance\dimen255 -10pt
      \smash{\lower\dimen255 \box0 }}

      \setlength{\theoremindent}{2.2cm}
      \newtheorem{thm}{\hspace{-\theoremindent}\lowerimage{width=2cm}{try}%
      \hspace{.2cm}Teorema}`
      Devi naturalmente aggiustare le dimensioni al tuo caso.

      Ciao
      Enrico

    • #10940
      Up
      0
      Down
      ::


      Mille grazie, Enrico; ho provato il tuo codice e non potevo chiedere di meglio.

      Ora me lo studio così cerco anche di impare qualcosa.

      Ancora grazie,
      Giuseppe

    • #10941
      Up
      0
      Down
      ::

      Mille grazie, Enrico; ho provato il tuo codice e non potevo chiedere di meglio.

      Ora me lo studio così cerco anche di impare qualcosa.

      Naturalmente non è secondo i canoni della programmazione in LaTeX, ma per queste cose un po’ di TeX a basso livello è insostituibile.

      Il comando \lowerimage serve per inserire la figura ma abbassandola rispetto alla posizione che riceverebbe se usassimo semplicemente \includegraphics.

      Perciò la inserisco in una box: il codice
      `\setbox0=\hbox{\includegraphics[#1]{#2}`
      serve proprio a questo; il parametro numero 1 contiene quanto va dato come opzione a \includegraphics, il secondo parametro il nome del file grafico. Adesso uso un registro provvisorio, \dimen255 va benissimo allo scopo, nel quale metto l’altezza della box, cioè della figura; poi la diminuisco di 10pt, il corpo del carattere (qui occorre poi guardare se va bene o no, dipende dalla figura)
      `\dimen255=\ht0 \advance\dimen255 -10pt`
      A questo punto inserisco la box abbassandola della dimensione calcolata prima; ma ne rendo le dimensioni verticali nulle, in modo che TeX non aumenti l’interlinea per farle spazio (\smash):
      `\smash{\lower\dimen255 \box0 }`
      Il tutto va in un comando da usare poi:
      `\newcommand\lowerimage[2]{\setbox0=\hbox{\includegraphics[#1]{#2}}%
      \dimen255=\ht0 \advance\dimen255 -10pt
      \smash{\lower\dimen255 \box0 }}`
      Adesso definisco l’ambiente “teorema”; nell’intestazione metto la figura, abbassata al punto giusto, ma prima imposto un margine sinistro all’enunciato (i 2.2 cm ovviamente dipendono dalla larghezza della figura che nella mia prova era di 2cm).
      `\setlength{\theoremindent}{2.2cm}`
      E, per finire, il teorema:
      `\newtheorem{thm}{\hspace{-\theoremindent}\lowerimage{width=2cm}{try}%
      \hspace{.2cm}Teorema}`
      Il secondo argomento di \newtheorem contiene l’intestazione; torno indietro di quanto dice \theoremindent, inserisco la figura, lascio uno spazio corrispondente alla differenza fra \theoremindent e la larghezza della figura e inserisco la vera intestazione (Teorema); il numero viene messo dopo da ntheorem. Hai certo capito che “try” è il nome della figura che ho usato io.

      Et voilà.

      Ciao
      Enrico

    • #10942
      Up
      0
      Down
      ::


      Dopo aver letto la tua spiegazione e osservate tutte le raffinatezze usate per raggiungere lo scopo sono sempre più convinto che non ci sarei mai arrivato da solo… Come tra l’altro ora non riesco più a mettere su righe distinte titolo del teorema e corpo dello stesso; cercando di definire \newtheoremstyle o non ottengo nulla oppure errori.

      Puoi aiutarmi anche in questo?

      Grazie, ciao

    • #10943
      Up
      0
      Down
      ::

      Dopo aver letto la tua spiegazione e osservate tutte le raffinatezze usate per raggiungere lo scopo sono sempre più convinto che non ci sarei mai arrivato da solo… Come tra l’altro ora non riesco più a mettere su righe distinte titolo del teorema e corpo dello stesso; cercando di definire \newtheoremstyle o non ottengo nulla oppure errori.

      Non so se ho capito bene. Ma hai provato a dire
      `\theoremstyle{break}`
      prima di dove stabilisci il \theoremindent?

      Ciao
      Enrico

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

Go to top