nuovo ambiente – new environment – tra linee orizzontali

  • Creatore
    Topic
  • #33881
    Up
    0
    Down
    ::


    Carissimi,
    sto cercando di creare un nuovo ambiente (esempio) fatto così:
    -ambiente “compreso” tra due linee orizzontali
    -una specie di titolo sopra la linea orizzontale
    -dimensione del font più piccola rispetto al resto del testo
    Spulciano qua e là me ne sono venuto fuori con questo codice che sarà senz’altro molto rozzo:
    `\newenvironment{esempio}[1][]{\vskip 6pt\small\noindent\textsc{Esempio#1}\vskip 6pt\hrule\vskip 6pt\noindent}{\vskip 3pt\hrule\vskip 6pt\normalsize}
    `
    Il problema che mi rimane è che spesso capita che la linea orizzontale finale sia “orfana” e compaia da sola a inizio di una pagina, o che il titoletto dell’esempio sia orfano e linea iniziale e testo me lo ritrovi alla pagina dopo… come fare per evitare questi inconvenienti?
    Un’occhiata e una modifica ad ambienti tipo theorem?

    Yours,
    O.

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

      Carissimi,
      sto cercando di creare un nuovo ambiente (esempio) fatto così:
      -ambiente “compreso” tra due linee orizzontali
      -una specie di titolo sopra la linea orizzontale
      -dimensione del font più piccola rispetto al resto del testo
      Spulciano qua e là me ne sono venuto fuori con questo codice che sarà senz’altro molto rozzo:
      `\newenvironment{esempio}[1][]{\vskip 6pt\small\noindent\textsc{Esempio#1}\vskip 6pt\hrule\vskip 6pt\noindent}{\vskip 3pt\hrule\vskip 6pt\normalsize}
      `
      Il problema che mi rimane è che spesso capita che la linea orizzontale finale sia “orfana” e compaia da sola a inizio di una pagina, o che il titoletto dell’esempio sia orfano e linea iniziale e testo me lo ritrovi alla pagina dopo… come fare per evitare questi inconvenienti?
      Un’occhiata e una modifica ad ambienti tipo theorem?

      Precedi ciascun \vskip esclusi primo e ultimo con \nobreak. Quei due andrebbero sostituiti con \addvspace{6pt}.

      Nota che \normalsize nella definizione è del tutto superfluo, ma che va aggiunto \ignorespaces dopo \noindent: va messo ogni volta che l’ambiente inizia un paragrafo. Occorre ricordare che \par finisce un paragrafo; invece \noindent lo comincia. Dunque
      `\newenvironment{esempio}[1][]
      {\par\addvspace{6pt}%
      \small\noindent\textsc{Esempio #1}\par
      \nobreak\vskip 6pt\hrule\nobreak\vskip 6pt
      \noindent\ignorespaces}
      {\par\nobreak\vskip 3pt\hrule\addvspace{6pt}}`
      Occorre dare \par prima di \nobreak per andare in modo verticale, cosicché la penalità inserita con \nobreak sia appunto in modo verticale.

      Non metterei tutto attaccato “Esempio#1”, visto che comunque vai a capo subito dopo; con la definizione di prima avresti dovuto dire
      `\begin{esempio}[ fondamentale]`
      mentre con questa puoi scrivere più comodamente
      `\begin{esempio}[fondamentale]`
      Ciao
      Enrico

    • #33883
      Up
      0
      Down
      ::


      Grazie dell’aiuto, non ci sarei mai arrivato!
      A dire il vero, avevo scritto Esempio#1 perchè prevedevo due tipi di “titoli”, uno con l’aggiunta di una breve descrizione, tipo:
      Esempio: la storia di cappuccetto rosso
      l’altro
      Esempio
      senza descrizione
      Cordialmente,
      Olotiv

    • #33884
      Up
      0
      Down
      ::


      Carissimi, carissimo egreg9,
      torno ancora a tediarvi su questo ambiente per chiedervi come posso aumentarne i margini rispetto al resto del testo…
      Grazie,
      O. 🙄

    • #33885
      Up
      0
      Down
      ::

      Carissimi, carissimo egreg9,
      torno ancora a tediarvi su questo ambiente per chiedervi come posso aumentarne i margini rispetto al resto del testo…

      Perché quei tre puntini? 🙄
      `\newenvironment{esempio}[1][]
      {\par\addvspace{6pt}%
      \leftskip=2\parindent
      \rightskip=\leftskip
      \small\noindent\textsc{Esempio #1}\par
      \nobreak\vskip 6pt\hrule\nobreak\vskip 6pt
      \noindent\ignorespaces}
      {\par\nobreak\vskip 3pt\hrule\addvspace{6pt}}`
      Sostituisci 2\parindent con la lunghezza che preferisci.

      Ciao
      Enrico

    • #33886
      Up
      0
      Down
      ::


      Grazie di nuovo.
      I tre puntini sono proprio puntini di sospensione, di interruzione e di attesa dei vostri necessari suggerimenti… (eccoci di nuovo)
      😳

    • #33887
      Up
      0
      Down
      ::


      … e se volessi che anche le linee orizzontali avessero la stessa larghezza del testo?
      😕

    • #33888
      Up
      0
      Down
      ::

      … e se volessi che anche le linee orizzontali avessero la stessa larghezza del testo?
      😕

      Che esigente! 🙂
      `\newenvironment{esempio}[1][]
      {\par\addvspace{6pt}%
      \leftskip=2\parindent
      \rightskip=\leftskip
      \small\noindent\textsc{Esempio #1}\par
      \nointerlineskip
      \nobreak\vskip 6pt\xhrule\nointerlineskip\nobreak\vskip 6pt
      \noindent\ignorespaces}
      {\par\nointerlineskip\nobreak\vskip 3pt\xhrule\nointerlineskip\addvspace{6pt}}

      \def\xhrule{\moveright2\parindent
      \vbox{\advance\hsize-4\parindent\hrule\hbox to\hsize{}}}`
      Ciao
      Enrico

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

Go to top