note a margine … quando va a capo??

  • Creatore
    Topic
  • #5496
    Up
    0
    Down
    ::


    Ciao a tutti,
    ho il seguente problema:
    devo fare un’aggiunta ad un articolo, e non vorrei cambiare l’impaginazione. Quindi ho pensato di introdurre una nota a margine visto che non devo aggiungere molto. Ho il seguente problema:
    `
    marginparwidth=2cm
    `
    ma ho parole lunghe come: trasporto, isotropo, sorgente. Il latex, ogni tanto va a capo, ma in casi come questo servirebbe che andasse a capo a tutte le righe.
    Ho utilizzato una dimensione scriptsize.
    Vorrei sapere se c’è un modo per costringerlo ad usare l’intero spazio messo a disposizione andando a capo con le parole, invece di allineare il testo lasciando dei notevoli spazi bianchi (viste le modeste dimensioni)
    Spero di essere riuscito a spiegare la mia richiesta
    vi ringrazio in anticipo

Visualizzazione 15 filoni di risposte
  • Autore
    Risposte
    • #5497
      Up
      0
      Down
      ::


      Non sono sicuro di aver capito, comunque prova con questo`\marginpar{\begin{flushleft}
      \scriptsize …testo…
      \end{flushleft}}`

    • #5498
      Up
      0
      Down
      ::


      adesso provo.
      cmq, per spiegarmi meglio:
      vorrei utilizziare tutto lo spazio messo a disposizione dalla nota a margine senza dover andare a capo manualmente:
      esempio se ho la parola diffusione che va a capo lasciando mezza riga vuota vorrei evitare di scrivere
      `
      diffu \\ sione
      `
      ma far si che sia il latex che formattando il testo evita di andare a capo con l’intera parola ma spezzi le parole in modo da occupare tutto lo spazio messo a disposizione dalla nota a margine.

    • #5499
      Up
      0
      Down
      ::

      vorrei utilizziare tutto lo spazio messo a disposizione dalla nota a margine senza dover andare a capo manualmente

      Nelle note a margine a me va a capo esattamente come nel resto del testo.

    • #5500
      Up
      0
      Down
      ::


      infatti praticamente non va mai a capo, e giustifica il testo. In questo modo però le righe sono mezze vuote e la nota a margine è molto estesa.
      il testo che devo inserire è:
      basso assorbimento, scattering e sorgente isotropi la teoria della diffusione coincide con quella del trasporto: le sezioni d urto sono indipendenti dall angolo, il termine di streaming non `e presente e non ci sono condizioni al contorno imposte sulle direzioni. L equazione di accelerazione coincide con quella che `e accelerata e quindi l autovalore si annulla

      che è particolarmente lungo. vorrei che andasse a capo spezzando la parola alla fine della nota a margine invece che andare a capo con tutta la parola lasciando mezza riga vuota.
      Mettermi a spezzare la parole con il comando \\ non mi sembra il caso.

      PS il comando per allineare a sinistra non è quello che sto cercando: infatti in questo modo ho le righe ugualmente mezze vuote perchè il latex preferisce andare a capo con la parola intera piuttosto che sillabarla (dif\-fu\-sio\-ne).

      Tornando al mio problema, vorrei sapere se c’è un modo per fargli cominciare la nuova riga solo a riempimento della precedente, non mettere l’intera parola nella riga successiva ma le sillabe in eccesso.
      grazie

    • #5501
      Up
      0
      Down
      ::


      Il problema deriva dal fatto che su larghezze così basse non c’è lo spazio materiale per ottenre una sillabazione senza spazi bianchi. Di solito, infatti, nelle note a margine si allinea a sinistra (o a destra) e non si usa il giustificato.

    • #5502
      Up
      0
      Down
      ::


      Salve a tutti,
      riposto un problema nel quale sono inciampato, cercando di dare un’espressione più chiara alla mia domanda:
      nel linguaggio comune si dice semplicemente “andare a capo” intendendo il passaggio alla riga successiva, ma ci sono due modi in cui il latex lo fa:
      1- cambia riga con l’intera parola che sarebbe in eccesso e giustifica il testo (come fa anche word)
      2- mediante sillabazione della parola, proprio come si fa quando si scrive una relazione a mano: si scrive finché c’è posto e poi si va a capo

      Da quel poco che ho visto, il latex privilegia la possibilità 1; ciò è sicuramente meglio (facilita la lettura) quando la larghezza del testo è quella tipica delle pubblicazioni (molte parole per ogni riga). Ma nel caso in cui per ogni riga ci stiano solo poche parole; le righe risultano mezze vuote con due problemi: uno visivo (essendo il testo mezzo vuoto) e uno di estensione notevole in altezza (molte righe tutte mezze vuote).
      Sono incappato in questo problema perché devo aggiungere una nota a margine ad una relazione universitaria.

      Quindi vorrei sapere se c’è un modo per costringere il latex ad andare a capo mediante sillabazione delle parole, utilizzando quindi tutto il poco spazio che ho a disposizione.
      L’unica soluzione che mi viene in mente sarebbe quella di compilare, vedere il pdf e utilizzare il comando \\ tra le sillabe delle parole per cambiare riga. Ma questa soluzione non mi sembra certo la migliore. Una mezza soluzione è quella di ridurre le dimensioni del testo, ma è una mezza soluzione.
      Grazie a tutti

    • #5503
      Up
      0
      Down
      ::

      riposto un problema nel quale sono inciampato, cercando di dare un’espressione più chiara alla mia domanda:
      nel linguaggio comune si dice semplicemente “andare a capo” intendendo il passaggio alla riga successiva, ma ci sono due modi in cui il latex lo fa:
      1- cambia riga con l’intera parola che sarebbe in eccesso e giustifica il testo (come fa anche word)
      2- mediante sillabazione della parola, proprio come si fa quando si scrive una relazione a mano: si scrive finché c’è posto e poi si va a capo

      TeX lo fa leggermente meglio di Word® 😮

      Da quel poco che ho visto, il latex privilegia la possibilità 1; ciò è sicuramente meglio (facilita la lettura) quando la larghezza del testo è quella tipica delle pubblicazioni (molte parole per ogni riga). Ma nel caso in cui per ogni riga ci stiano solo poche parole; le righe risultano mezze vuote con due problemi: uno visivo (essendo il testo mezzo vuoto) e uno di estensione notevole in altezza (molte righe tutte mezze vuote).
      Sono incappato in questo problema perché devo aggiungere una nota a margine ad una relazione universitaria.
      Quindi vorrei sapere se c’è un modo per costringere il latex ad andare a capo mediante sillabazione delle parole, utilizzando quindi tutto il poco spazio che ho a disposizione.
      L’unica soluzione che mi viene in mente sarebbe quella di compilare, vedere il pdf e utilizzare il comando \\ tra le sillabe delle parole per cambiare riga. Ma questa soluzione non mi sembra certo la migliore. Una mezza soluzione è quella di ridurre le dimensioni del testo, ma è una mezza soluzione.
      Grazie a tutti

      Ovviamente non si va a capo manualmente, ci mancherebbe. La sillabazione, per motivi TeXnici è inibita per la prima parola. Un \hspace{0pt}, in casi problematici, dovrebbe risolvere. Che LaTeX non provi la sillabazione nelle note a margine mi suona strano. In ogni caso, scrivere in colonne molto strette dà sempre problemi.
      Ciao
      Enrico

    • #5504
      Up
      0
      Down
      ::


      Ciao
      Appena inizia la Nota a margine, anteponi la massima tolleranza possibile per la badness, che sarebbe il parametro che regola l’andata a capo e che di default è pari a 200. Nel *.log trovi, praticamente per ogni riga, il messaggio Underfull \hbox (badness 4068) … ossia, essendo superiore a 200, dà un po’ di problemi.
      Scrivi cioè:
      `
      \marginpar{\tolerance=10000 Basso assorbimento…si annulla. \tolerance=200} %torna alla badness predefinita.
      `

      Noterai, nella compilazione, meno Underfull \hbox. Questo è il massimo che si può ottenere per le andate a capo, essendo 10000=$\infty$.

      Fonte: capitolo 6 del The TeXbook.

      Ciao
      Roberto

    • #5505
      Up
      0
      Down
      ::

      Appena inizia la Nota a margine, anteponi la massima tolleranza possibile per la badness, che sarebbe il parametro che regola l’andata a capo e che di default è pari a 200. Nel *.log trovi, praticamente per ogni riga, il messaggio Underfull \hbox (badness 4068) … ossia, essendo superiore a 200, dà un po’ di problemi.
      Scrivi cioè:`\marginpar{\tolerance=10000 Basso assorbimento…si annulla. \tolerance=200} %torna alla badness predefinita.`Noterai, nella compilazione, meno Underfull \hbox. Questo è il massimo che si può ottenere per le andate a capo, essendo 10000=$\infty$.
      Fonte: capitolo 6 del The TeXbook.

      Così però aggravi il problema delle righe semivuote. Possiamo provare un misto delle varie tecniche:`\newcommand{\mymarginpar}[2][5000]{\marginpar{\footnotesize
      \edef\oldtolerance{\the\tolerance}%
      \tolerance=#1\relax
      \hskip0pt
      #2\par\tolerance=\oldtolerance}}`In realtà il cambio di \tolerance dovrebbe essere già protetto dal fatto che il contenuto di \marginpar è composto in una \vbox, ma rimettere quella di partenza non è un delitto (e mostra la conoscenza dell’uso di \edef :D). Noterai l’argomento opzionale per stabilire, se opportuno, una \tolerance diversa:`\mymarginpar{Ciao} %con \tolerance=5000
      \mymarginpar[10000]{Cocco Bill} % con \tolerance=10000`Ciao
      Enrico

    • #5506
      Up
      0
      Down
      ::


      Oddio, perché io non ci sto capendo
      più niente?? Allora, tra i miei prova
      e riprova ho notato che se inserisco
      l’allineamento a sx NON va mai a ca-
      po (indipendentemente dai \tolerance)
      mentre se non gli dico nulla (e quindi
      il LaTeX giustifica) c’è qualche a ca-
      po, ma la resa non è molto diversa con
      il comando \tolerance o senza.
      Inoltre se utilizzo l’allineamento a sini-
      stra la nota a margine è meno estesa ver-
      ticalmente, come se ci fosse un interlinea
      differente rispetto al testo giustificato, è
      possibile?
      Ho provato \hspace{0pt} ma , da quel che
      ho visto, inserisce solo un rientro nella pri-
      ma riga della nota a margine.Per risponde-
      re a Enrico, volevo solo dirgli che non è
      che non vada a capo nelle note a margine,
      ma ci va come nel resto del documento
      cioè poco. Io vorrei che sillabasse le paro-
      le praticamente in ogni riga in modo da ave-
      re una colonna piena di testo.
      Adesso provo anche questa nuova stringa di comandi.

      PS provo con questa risposta di simulare l’effetto che vorrei ottenere, non so se ci riesco… ovviamente poi sarebbe necessario che la colonna venisse giustificata …
      Cmq, grazie a tutti per l’interesse 🙂

    • #5507
      Up
      0
      Down
      ::


      A me, su 21 righe di testo effettive, con \mymarginpar[10000]{testo}, va a capo su 12 righe. Poi è perfettamente giustificato a parte uno spazio un po’ eccessivo alla prima linea tra Basso e assorbi\-mento.

      Non capisco il problema. Io scrivo:
      `
      \documentclass{article}
      \usepackage[italian]{babel}
      \usepackage[T1]{fontenc}

      \newcommand{\mymarginpar}[2][5000]{\marginpar{\footnotesize
      \edef\oldtolerance{\the\tolerance}%
      \tolerance=#1\relax
      \hskip0pt
      #2\par\tolerance=\oldtolerance}}

      \begin{document}

      \mymarginpar[10000]{Basso assorbimento, scattering e sorgente isotropi la teoria
      della diffusione coincide con quella del trasporto: le sezioni d'urto sono indipendenti
      dall'angolo, il termine di streaming non è presente e non ci sono condizioni al contorno
      imposte sulle direzioni. L'equazione di accelerazione coincide con quella che è
      accelerata e quindi l'autovalore si annulla.}

      \end{document}
      `

      Inoltre è vero che le \vbox agiscono su \baseline, \lineskip e un \lineskiplimit.

    • #5508
      Up
      0
      Down
      ::

      Oddio, perché io non ci sto capendo
      più niente?? Allora, tra i miei prova
      e riprova ho notato che se inserisco
      l’allineamento a sx NON va mai a ca-
      po (indipendentemente dai \tolerance)
      mentre se non gli dico nulla (e quindi
      il LaTeX giustifica) c’è qualche a ca-
      po, ma la resa non è molto diversa con
      il comando \tolerance o senza.
      Inoltre se utilizzo l’allineamento a sini-
      stra la nota a margine è meno estesa ver-
      ticalmente, come se ci fosse un interlinea
      differente rispetto al testo giustificato, è
      possibile?
      Ho provato \hspace{0pt} ma , da quel che
      ho visto, inserisce solo un rientro nella pri-
      ma riga della nota a margine.Per risponde-
      re a Enrico, volevo solo dirgli che non è
      che non vada a capo nelle note a margine,
      ma ci va come nel resto del documento
      cioè poco. Io vorrei che sillabasse le paro-
      le praticamente in ogni riga in modo da ave-
      re una colonna piena di testo.
      Adesso provo anche questa nuova stringa di comandi.

      Se usi \raggedright, è ovvio che la sillabazione sia meno frequente. È normale. Non usare \raggedright. Per il rientro, è vero; dipende dalle macro di LaTeX; usa \hskip0pt e non l’avrai.
      Ciao
      Enrico

    • #5509
      Up
      0
      Down
      ::


      Ciao
      Scusa ma non avevo visto che la mia \marginparwidth era di 65pt invece che di 56.9055pt=2cm. Se imposti a 65pt la profondità (se ti è possibile) credo che la formattazione sia migliore rispetto ai soli 2cm.

      Ciao
      Roberto

    • #5510
      Up
      0
      Down
      ::


      vi ringrazio a tutti, specialmente a rodex: con l’ultima codice il problema può essere considerato risolto.

    • #5511
      Up
      0
      Down
      ::


      Potresti scrivere sul forum il codice della soluzione in modo da renderlo disponibile a chi dovesse incontrare il tuo stesso problema in futuro.

    • #5512
      Up
      0
      Down
      ::


      Allora il problema è:
      gestire il modo in cui il \LaTeX sillaba le parole quando va a capo (brevemente: ci sono due modi in cui il LaTeX cambia riga: giustificando il testo oppure sillabando la parola).
      Nelle note a margine o in ogni caso nel quale si scriva in una colonna stretta può essere utile obbligare il LaTeX a sillabare di più di quanto non faccia usualmente. Ciò (se non ho capito male) è governato da un parametro di “badness” tramite il comando ` \tolerance=n ` dove n è un numero compreso tra 10000 (che è il massimo) e 200 che è il default.
      Si può quindi utilizzare il comando ` \marginpar{\tolerance=10000 Basso assorbimento…si annulla. \tolerance=200} %torna alla badness predefinita.
      ` quando sia necessario. Se si fanno più note a margine (o testi allineati in colonne sottili) è possibile e consigliabile definire un ambiente apposta nel seguente modo:
      `
      \newcommand{\mymarginpar}[2][5000]{\marginpar{\footnotesize
      \edef\oldtolerance{\the\tolerance}% \tolerance serve per regolare l'andata a capo il valore max è 10000
      \tolerance=#1\relax
      \hskip0pt
      #2\par\tolerance=\oldtolerance}}
      `
      che verrà poi richiamato all’occorrenza specificando il parametro di tolerance voluto:
      `
      \mymarginpar[10000]{testo}
      `

      Si vuole notare che per motivi estetici si è ridotta la dimensione del testo nella colonna sottile di interesse.
      Spero che così vada bene.

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

Go to top