- Questo topic ha 12 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 8 mesi fa da
Marco87.
-
CreatoreTopic
-
15 Gennaio 2014 alle 14:09 #91547::
Ciao a tutti,mi piacerebbe sapere se è possibile, in qualche modo, far misurare la lunghezza di una certa stringa e farsi restituire il suo valore. Se questo è possibile, sarebbe anche possibile calcolare qualcosa come quello che segue?
lunghezzaTotale mod lunghezzaColonna
Grazie mille e buona giornata,
Marco.P.S. Quello che desidero è una misura della lunghezza, non quanti caratteri compongono la stringa.
-
CreatoreTopic
-
AutoreRisposte
-
-
15 Gennaio 2014 alle 14:25 #91548::
Marco87″ post=91091Ciao a tutti,
mi piacerebbe sapere se è possibile, in qualche modo, far misurare la lunghezza di una certa stringa e farsi restituire il suo valore. Se questo è possibile, sarebbe anche possibile calcolare qualcosa come quello che segue?
lunghezzaTotale mod lunghezzaColonna
Grazie mille e buona giornata,
Marco.P.S. Quello che desidero è una misura della lunghezza, non quanti caratteri compongono la stringa.
Se non si va a capo: http://tex.stackexchange.com/q/58283/13304
Ciao
Claudio
-
15 Gennaio 2014 alle 14:33 #91549::
Su TeX.SE avevo trovato questa soluzioneegregUse the calc package:
`\parbox{\widthof{my text}}{…}`ma in realtà io nel PDF vedo [tt]my text[/tt] al posto di [tt]\widthof{my text}[/tt], non la larghezza della stringa 😕
-
15 Gennaio 2014 alle 15:53 #91550::
Elrond” post=91093Su TeX.SE avevo trovato questa soluzione
Use the calc package:
`\parbox{\widthof{my text}}{…}`ma in realtà io nel PDF vedo [tt]my text[/tt] al posto di [tt]\widthof{my text}[/tt], non la larghezza della stringa 😕
Hai caricato il pacchetto [tt]calc[/tt] nel preambolo? [tt]\widthof[/tt] viene definito da quel pacchetto ed è equivalente a
`
\setbox0=\hbox{my text} \wd0
`
-
15 Gennaio 2014 alle 16:02 #91551::
Ciao,ringrazio molto tutti. Per il momento propendo per la soluzione che m’ha indicato cfiandra (la soluzione che usa [tt]\parbox{\widthof{my text}}{…}[/tt] non mi è affatto chiara. Ho provato a usarla ma in fase di compilazione mi viene segnalato un errore). La soluzione da cui ho tratto spunto è questa:
`\documentclass{article}
\usepackage{tikz}\begin{document}
\newsavebox{\ftbox}
\savebox{\ftbox}{\Huge QWERTY}
\pgfmathparse{width(“\usebox\ftbox”)} \pgfmathresult\end{document} `
A questo punto si può usare [tt]\pgfmathresult[/tt] (che fornisce la lunghezza in pt) ad esempio così:
`\hspace{\pgfmathresult pt}`
L’unico limite che vedo è quello che ha detto cfiandra, ossia che funziona fino a quando la stringa sta in una singola riga. Se c’è una soluzione meno limitata che conoscete, sono molto interessato a conoscerla.Intanto grazie mille e buona serata,
Marco.
-
15 Gennaio 2014 alle 17:20 #91552::
skevin93″ post=91100
Su TeX.SE avevo trovato questa soluzione
[quote=egreg]Use the calc package:
`\parbox{\widthof{my text}}{…}`ma in realtà io nel PDF vedo [tt]my text[/tt] al posto di [tt]\widthof{my text}[/tt], non la larghezza della stringa 😕
Hai caricato il pacchetto [tt]calc[/tt] nel preambolo? [tt]\widthof[/tt] viene definito da quel pacchetto ed è equivalente a
`
\setbox0=\hbox{my text} \wd0
`[/quote]
Se non l’avessi fatto avrei ricevuto un errore di comando inesistente, non credi? A te funziona?Edit: in compenso mi funzionano le soluzioni suggerite da Martin Scharrer:
Martin Scharrer
`\settowidth{\somelength}{}
\settodepth{\somelength}{}
\settoheight{\somelength}{}` e funziona anche per stringhe multiriga
-
15 Gennaio 2014 alle 17:28 #91553
-
15 Gennaio 2014 alle 17:32 #91554::
skevin93″ post=91103 @Elrond Si mi funziona. Se do il comando
`
\parbox{\withof{my text}}{testo di prova}
`
la stringa “testo di prova” viene spezzata proprio alla lunghezza di “my text”.PS: Ovviamente ho caricato il pacchetto [tt]calc[/tt] nel premabolo :D.
Ok, allora ho frainteso l’uso di [tt]\widthof[/tt]: mi aspettavo che stampasse a schermo il valore della lunghezza, invece la memorizza e basta
-
15 Gennaio 2014 alle 23:10 #91555::
Ragazzi, c’è bisogno di andare a vedere che cosa dicono su stackexchange, quando basta usare i comandi nativi di LaTeX che Martin Scharrer ha solamente ricordato?Non c’era bisogno di ricorrere alla sua autorità in merito, anche se fa bene a ricordare che esistono quei comandi; Il mi limito a dira che qui nella sezione Documentazione del forum ciè una guidina tematica, piccola piccola, ma dotata di un indice analitico con tutti i comandi del LaTeX nativo, intitolata Il LaTeX Reference Manual commentato, dove quei comandi sono descritti.
Non sono il primo a lamentarsi che le guide non vengono lette. In questo caso dovrebbe lamentarsi in prima persona Leslie Lamport, il papà di LaTeX.
-
16 Gennaio 2014 alle 6:42 #91556::
Ciao a tutti,vi ringrazio davvero molto per il vostro contributo alla risposta. Mi sembra che la cosa migliore sia usare un comando nativo di LaTeX. Però, se compilo questo codice:
`\documentclass{memoir}\begin{document}
\settowidth{\misura}{Testo}
\end{document}`
ottengo questo errore:! Undefined control sequence.
\misura l.5 \settowidth{\misura}{Testo}
The control sequence at the end of the top line
of your error message was never \def’ed. If you have
misspelled it (e.g., `\hobx’), type `I’ and the correct
spelling (e.g., `I\hbox’). Otherwise just continue,
and I’ll forget about whatever was undefined.! Missing number, treated as zero.
\setbox
l.5 \settowidth{\misura}{Testo}A number should have been here; I inserted `0′.
(If you can’t figure out why I needed to see a number,
look up `weird error’ in the index to The TeXbook.)! Illegal unit of measure (pt inserted).
\setbox
l.5 \settowidth{\misura}{Testo}Dimensions can be in units of em, ex, in, pt, pc,
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
I’ll assume that you meant to say pt, for printer’s points.
To recover gracefully from this error, it’s best to
delete the erroneous units; e.g., type `2′ to delete
two letters. (See Chapter 27 of The TeXbook.)Perché succede questo? Succede anche a voi?
Grazie mille e buona giornata,
Marco.
-
16 Gennaio 2014 alle 7:02 #91557::
Marco87″ post=91120Ciao a tutti,
vi ringrazio davvero molto per il vostro contributo alla risposta. Mi sembra che la cosa migliore sia usare un comando nativo di LaTeX. Però, se compilo questo codice:
`\documentclass{memoir}\begin{document}
\settowidth{\misura}{Testo}
\end{document}`
ottengo questo errore:! Undefined control sequence.
\misura l.5 \settowidth{\misura}{Testo}
The control sequence at the end of the top line
of your error message was never \def’ed. If you have
misspelled it (e.g., `\hobx’), type `I’ and the correct
spelling (e.g., `I\hbox’). Otherwise just continue,
and I’ll forget about whatever was undefined.! Missing number, treated as zero.
\setbox
l.5 \settowidth{\misura}{Testo}A number should have been here; I inserted `0′.
(If you can’t figure out why I needed to see a number,
look up `weird error’ in the index to The TeXbook.)! Illegal unit of measure (pt inserted).
\setbox
l.5 \settowidth{\misura}{Testo}Dimensions can be in units of em, ex, in, pt, pc,
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
I’ll assume that you meant to say pt, for printer’s points.
To recover gracefully from this error, it’s best to
delete the erroneous units; e.g., type `2′ to delete
two letters. (See Chapter 27 of The TeXbook.)Perché succede questo? Succede anche a voi?
Grazie mille e buona giornata,
Marco.Diciamo che servono 3 passaggi: definizione, calcolo e stampa. Nel tuo codice c’è solo il calcolo. Prova con:
`
\documentclass{memoir}
\usepackage{calc}
\newlength{\misura}% definizione
\begin{document}\settowidth{\misura}{Testo}% calcolo
\the\misura% stampa\end{document}
`
Ciao
Claudio
-
16 Gennaio 2014 alle 7:08 #91558::
Certo che succede a tutti; se leggi il messaggio d’errore c’è scritto! Undefined control sequence.
\misura l.5 \settowidth{\misura}{Testo}
e che cosa vuol dire? che \misura non è definita; quindi devi specificare nel preambolo [tt]\newlength{\misura}[/tt].
Fa sempre parte delle serie leggere la documentazione; nella guida tematica Il LaTeX Reference Manual commentato c’è scritto testualmente
\newlength{⟨comando⟩} definisce una nuova lunghezza identificata con ⟨comando⟩;
[…]
\settowidth, \settoheight e \settodepth seguono la sintassi seguente:
\settowidth{⟨comando⟩}{⟨testo⟩}
\settoheight{⟨comando⟩}{⟨testo⟩}
\settodepth{⟨comando⟩}{⟨testo⟩}
Ognuna di queste istruzioni assegna al registro-lunghezza ⟨comando⟩ rispettivamente la larghezza, l’altezza o la profondità della stringa che costituisce il ⟨testo⟩.alle pagine 67 e 68.
-
16 Gennaio 2014 alle 7:34 #91559
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.