- Questo topic ha 18 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 7 anni, 8 mesi fa da
OldClaudio.
-
CreatoreTopic
-
6 Gennaio 2019 alle 2:11 #115065::
ciao a tutti
dopo un po’ di anni mi sono rimesso a usare latex
sto scrivendo un canzoniereho un ritornello da 4 righe, le ultime due si devono cantare 2 volte
per far capire che si devono ripetere solo le ultime due righe, vorrei scrivere così:prima riga
seconda riga
| terza riga, che rientra un po’ e con una linea verticale che occupa la terza e la
| quarta riga (x2)avevo provato con un \rule ma il risultato è stato tipo:
prima riga
seconda riga
terza riga
|
| quarta riga (x2)avete suggerimenti?
-
CreatoreTopic
-
AutoreRisposte
-
-
6 Gennaio 2019 alle 8:14 #115066::
Se ti va bene il \rule, il primo devi indicarlo PRIMA della terza riga, qualcosa come`prima riga\\
seconda riga\\
\rule{…}{…} terza riga\\
\rule{…}{…} quarta riga (X 2)`Ci sono anche altri modi, volendo anche epr avere una sola riga verticale che abbracci le due ultime righe. MA lè bisogna giocare con comandi più o meno “primitivi” di TeX.
-
8 Gennaio 2019 alle 17:49 #115067
-
8 Gennaio 2019 alle 18:04 #115068::
avevo già messo il RISOLTO al topic, ma in realtà la soluzione con i due \rule non funziona benequesto perchè non riesco a fare in modo che le due linee generate da \rule si tocchino in modo da sembrare una linea unica (ho giocato sulle varie altezze e su un sollevamento negativo del \rule della riga superiore, ma resta sempre uno spazio bianco tra le due linee)
-
8 Gennaio 2019 alle 20:20 #115069
-
8 Gennaio 2019 alle 23:17 #115070::
Devi nascondere l’altezzad el rule, per esempio con \smash. Forse c’è scritto qualcosa su questo \smash nella guida Il LaTeX Reference Manual commentato nella sezione Documentazione di questo forum. Io uso spesso smash, che non ricordo più se l’ho inseriro anche nella guida.Incidentalmente sai che puoi usare la versione di \makebox creata per l’ambiente picture, anche fuori dell’ambiente picture. Nel tuo caso un semplice \makebox(0,0){\rule{…}{…}} si comporta come \smash{\rule{…}{…}}. inoltre probabilmente ti conviien usare anche l’argomento facoltativo per ribassare il rule sottola linea di base, qualcosa come \rule[-1ex]{0.4pt}{3.25ex} potrebbe andare bene. Aggiusta tu i valori numerici.
-
9 Gennaio 2019 alle 2:30 #115071
-
9 Gennaio 2019 alle 8:36 #115072
-
9 Gennaio 2019 alle 13:29 #115073
-
10 Gennaio 2019 alle 7:28 #115074::
Visto il tuo messaggio ho pensato di aggiornare la guida tematica {l LaTeX Reference Manual commentato con una figura e qualche riga di testo, dove si spiega, spero bene, che cosa siano e come si chiamino le varie parti degli elementi che compongono le righe di testo. Puoi scrivare la nuova versione e cercare la figura 1.1. Vicino alla figura non si parla di come si determinimo certe grandezze, ma più avanti, cerca nell’indice analitico, si parla si \settoheight, \setto depth e \settowidth, che sono molto utili per comporre macro particolari o per fare cose del tipo di quella che stai facendo tu.
-
10 Gennaio 2019 alle 10:35 #115075
-
10 Gennaio 2019 alle 11:26 #115076::
stavo usando un comando del tipo:\makebox(0,0){\rule[3ex]{1.2pt}{4ex}}
provo a cambiare il “4ex” con una misura in funzione dell’altezza della riga
ho provato a fare questo:
\setlength{\spaziouno}{\baselineskip-\lineskip}
ho messo questo comando in un file .cls che sto usando per una classe canzoniere
compilo e non ho nessun problema.
adesso voglio usare la lunghezza creata e aggiungo nel file .tex:
\makebox(0,0){\rule[3ex]{1.2pt}{\spaziouno}}
ma mi dà 3 errori:
Undefined control sequence…
Missing number, treated as zero…
Illegal unit of measure (pt inserted) …
-
10 Gennaio 2019 alle 11:29 #115077
-
10 Gennaio 2019 alle 11:50 #115078::
diegotex” post=115490stavo usando un comando del tipo:
\makebox(0,0){\rule[3ex]{1.2pt}{4ex}}
provo a cambiare il “4ex” con una misura in funzione dell’altezza della riga
ho provato a fare questo:
\setlength{\spaziouno}{\baselineskip-\lineskip}
ho messo questo comando in un file .cls che sto usando per una classe canzoniere
compilo e non ho nessun problema.
adesso voglio usare la lunghezza creata e aggiungo nel file .tex:
\makebox(0,0){\rule[3ex]{1.2pt}{\spaziouno}}
ma mi dà 3 errori:
Undefined control sequence…
Missing number, treated as zero…
Illegal unit of measure (pt inserted) …Naturalmente hai deifnito \spaziouno come nuova grandezza e hai usato il pacchetto calc per eseguire operazioni sui valori dei registri, non è vero?
Se non l’hai fatto, ehm, ti mancano ancora nozioni importanti.Intanto \nelength{\spaziouno} vi vuole, altrimenti \spaziouno diventa na macro qualsiasi e non viene definita da \setlength, ma usata impropriamente come se fosse na lunghezza senza esserlo per davvero.
Il pacchetto calc permette di fare certi calcoli sulle grandezze di vario genere da numeri interi a operazioni sulle lunghezze, ma richiede una specifica sintassi.
Invece i vari motori di composizione possono fare calcoli molto bene fatti, purché siano preceduti da \numexpr o \dimexpr e conclusi con qualcosa che non ha senso in una expression, non sapendo che cosa non abbia senso, o avendo dei dubbi basta usare \relax, comando del tutto innocuo che non fa assolutamante nulla, ma è pur sempre un comando.
Quindi dopo aver definito \spaziouno come lunghezza, io scriverei `\setlength{\spaziouno}{\dimexpr \baselineskip-\lineskip\relax}`anche se in questo particolare caso \relax è superfluo.
Il vantaggio di usare calc è che forse ci sono meno problemi di sintassi, ma i calcoli sono svolti in modo complesso. Invece con i comandi nativi \dimexpr e \numexpr i calcoli sono fatti in modo più ruspante, ma sono eseguiti nel processore che sta elabornado il file, quindi in modo praticamente istantaneo, senza sfruttare la memoria allocata per la compilazione e senza continuamente elaborare i dati per aggiungergli unità di misura per poi toglierle e facendo perciò lavorare l’interprete su stringe alfanumeriche come fa calc. Per l’utente finale forse calc è più facile da usare, ma io preferisco sempre i comandi nativi.
Ne paro anche nella guida che ti ho indicato. Quando Lamport ha scritto la seconda edizione els suo manuale di LaTeX nel 1994, i ocmandi nativi che ti ho descritto non esistevano ancora; sono stati introdotti circe 15 anni dopo. Ora,poi, con la sintassi L3 si possono fare anche calcoli in floating point, anche se in un caso semplice come iltuo non occorre ricorrere a questi grandi mezzi.
-
10 Gennaio 2019 alle 13:24 #115079
-
10 Gennaio 2019 alle 16:20 #115080::
Nella pagina 20 non c’erano solo i due errori che hai segnalato e delle cui segnalazioni ti ringrazio moltissimo; rileggendo ciò che ho scritto questa notte, evidentemente obnubilato dalla stanchezza della giornata era pieno di altri errori. Eppure il mio eitor mi marca gli errori ortografici con una bella riga rossa.
Forse domattina ci sarà la versione spero con meno errori. 🙁Grazie ancora
-
14 Gennaio 2019 alle 16:12 #115081::
diegotex” post=115460ciao a tutti
dopo un po’ di anni mi sono rimesso a usare latex
sto scrivendo un canzoniereho un ritornello da 4 righe, le ultime due si devono cantare 2 volte
per far capire che si devono ripetere solo le ultime due righe, vorrei scrivere così:prima riga
seconda riga
| terza riga, che rientra un po’ e con una linea verticale che occupa la terza e la
| quarta riga (x2)avevo provato con un \rule ma il risultato è stato tipo:
prima riga
seconda riga
terza riga
|
| quarta riga (x2)avete suggerimenti?
Forse è un consiglio stupido, ma secondo me la soluzione più semplice e banale è quella di mettere il testo del ritornello in un ambiente tabella come tabular.
`
\begin{tabular}{|l}
Ritornello\\
Ritornello\\
\end{tabular}
`
-
14 Gennaio 2019 alle 16:35 #115082::
diegotex” post=115460ciao a tutti
dopo un po’ di anni mi sono rimesso a usare latex
sto scrivendo un canzoniereho un ritornello da 4 righe, le ultime due si devono cantare 2 volte
per far capire che si devono ripetere solo le ultime due righe, vorrei scrivere così:prima riga
seconda riga
| terza riga, che rientra un po’ e con una linea verticale che occupa la terza e la
| quarta riga (x2)avevo provato con un \rule ma il risultato è stato tipo:
prima riga
seconda riga
terza riga
|
| quarta riga (x2)avete suggerimenti?
Ho letto la discussione, però io utilizzerei un approccio diverso, forse più facile e banale per chi si trova alle prime armi: inserirei le righe del ritornello in un ambiente che crea una tabella, del tipo:
`
\begin{tebular}{|l}
ritornello \\
ritornello \\
\end{tabular}
`Per il rientro puoi inserire manualmente dello spazio orizzontale.
-
15 Gennaio 2019 alle 6:51 #115083::
Si, anche questa è una buona soluzione, ma se vuoi regolare il rientro o agisci a mano in ogni riga o nell’ambiente tabular devi usare una @-espressione.
Oppure definisci un nuovo ambiente; oppure usi la barra verticale scrivendo una macro con uno o più argomenti facoltativi, oppure…
Come ho dotto ci sono molti modi per risolvere il problema.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.