Newsgroup: it.comp.software.tex
Titolo: \parbox o come?

Ciao a tutti, vorrei fare in modo che alcuni parti del mio testo siano
indentate di un tot di cm, come se si usasse una sorta di \indent ma
venisse usato per tutta la lunghezza del testo specificato, senza che
il testo venga riposizionato una volta che si va a capo, vorrei fare
in modo che il comando sia flessibile, ad esempio impostando il
parametro 3cm, venisse usato \textwidth-3cm, se non e' ancora chiaro
cosa vorrei ottenere, ecco un esempio:
  Kcm
<------>Questo testo e' rientrato di 1cm e per tutta la durata del
comando, che potrebbe essere della forma <------>\myindent[/lungh/]{/
il testo che voglio/}. La mia ipotesi iniziale era quella di usare
\parbox, ma non
<------>riesco ad ottenere l'effetto desiderato.
Grazie per qualsiasi consiglio.

 Grazie per qualsiasi consiglio.
Cerchi qualcosa tipo:
\newcommand{\exa}[1] {\vspace{0.5em}
  \parbox[c]{320pt}{
        \textsc{Example:} #1
  }
        \vspace{0.8em}
}
dove la larghezza del parbox, centrato (cfr [c]) è di 320 punti. Per
rientrare di 3 tre cm devi fare due conti. Inoltre, se non ti serve
un'intestazione (\textsc{Example:} #1), togli anche [1] dopo
\newcommand. Volendo, il \parbox si può anche allineare a destra, ma
devi sempre specificare la sua larghezza.
hth,
Stefano

 scrive:

Ci sono vari modi per farlo, ma molto dipende dal tipo di testo che
ti serve. Per esempio definendo
\newenvironment{rientro}[1]
  {\begin{list}{}{\leftmargin=#1\relax\item[]}
  {\end{list}}
il testo fra \begin{rientro}{3cm} e \end{rientro} sarà appunto rientrato
della dimensione specificata (e anche staccato verticalmente dal resto, 
ma è possibile evitarlo).
Con una \parbox hai il problema che non puoi avere cambi di pagina.
Ciao
Enrico

 Enrico
Bene, quest'ultima soluzione funziona perfettamente (aggiungendo una
graffa per chiudere begin), nella mia scarsa conoscenza di
programmazione in latex (ovvero 10 min di navigazione in internet),
dopo aver letto la prima risposta, avevo abbozzato da una soluzione
del tipo (che può essere raffinata aggiungendo la dimensione come
parametro):
\newskip\pippo
\pippo=\textwidth minus 3pt
\newcommand{\exa}[1]{
	\hspace{3pt}
	\parbox{\pippo}{#1}
}
Anche se sfugge come quali metriche latex accetti e perchè un semplice
meno '-' non funzioni, Tra l'altro con la mia soluzione il testo
"sfora" un poco lateralmente, forse e' dovuto al fatto che parbox
aggiunge lui stesso qualche spazio, ma non saprei..

 aggiunge lui stesso qualche spazio, ma non saprei..
Prova a leggere "The Not So Short Introduction to LATEX 2ε", pagina 118
dove  (page layout). La trovi con "texdoc lshort" oppure su ctan
http://www.ctan.org/tex-archive/info/lshort/
 (dove trovi anche una
versione italiana, in questo caso però a pag. 93)
Stefano
PS: grazie ad Enrico che mi ha fatto scoprire che \parbox non "wrappa"
le pagine :-)

 aggiunge lui stesso qualche spazio, ma non saprei..
Puoi usare il pacchetto calc che permette cose come quelle che
desideri:
\usepackage{calc}
\newcommand{\exa}[1]{%
  \noindent\hspace*{3pt}%
  \parbox{\textwidth-3pt}{#1}%
}
Nota i caratteri % che servono a evitare spazi indesiderati
nell'output (un fine riga conta come spazio). Anche il \noindent
è importante (ci torno dopo), così come l'asterisco dopo \hspace
(per indicare uno spazio che non può essere eliminato in alcun caso).
A dire il vero, una definizione del genere si può dare in modo
più efficiente:
\newcommand{\exa}{%
  \noindent\hspace*{3pt}%
  \parbox{\textwidth-3pt}}
Come, dirai, io voglio un argomento al mio \exa! Non serve: in realtà
tu vuoi un argomento a \parbox. Se scrivi \exa{Ciao ciao} è come se
scrivessi
\noindent\hspace*{3pt}\parbox{\textwidth-3pt}{Ciao ciao}
e TeX è contentissimo. Anzi, lavora di meno perché non deve leggere
due volte {Ciao ciao}, una come argomento di \exa e l'altra come
argomento di \parbox.
NON USARE MAI(*) \\ per andare a capo se non negli ambienti dove si
deve indicare esplicitamente la fine di una riga (center, flushright,
tabular e altri simili). Il fatto che tu non sentissi il bisogno di
\noindent mi fa pensare che avessi intenzione di scrivere
  testo testo testo\\
  \exa{testo dell'esercizio}
Evita. Ma a che ti serve un rientrino di 3 punti? Boh. :-)
(*) MAI è forse troppo, ci sono rare occasioni in cui \\ può tornare
utile. Però è meglio sapere che, in generale, non si deve usare.
Ciao
Enrico

 Enrico
Bene, grazie per i consigli. In realta' non usavo \noindent
semplicemente perche' avevo definito \setlength{\parindent}{0pt}. I
3pt erano solo un esempio, in realta' le dimensioni sono maggiori.
Ciao
Mattia

 semplicemente perche' avevo definito \setlength{\parindent}{0pt}.
Pessima pratica, in generale.
Ciao
Enrico


Lo so, ma in questo caso nel mio docuemento non necessito di alcuna
indentazione, in realita' il tutto e' nato dal fato che sto stilando
uno pesudo curriculum, del tipo:
\documentclass[10pt,a4paper]{article}
\usepackage[italian]{babel}
\usepackage{color,hyperref}
\usepackage{enumitem}
\usepackage[plain]{fullpage}
\usepackage{titlesec}
\titleformat{\section}{\large\scshape\raggedright}{}{0em}{}[]
\begin{document}
\begin{center}
{\LARGE \sc{Nome Cognome - Curriculum Vitae}}\\[0.55in]
\end{center}
\section*{Informazioni personali}
bla bla bla
\section*{Istruzione e formazione}
\begin{description}[font=
\normalfont,labelindent=3mm,leftmargin=1.5cm,style=multiline,noitemsep]
\item[2008] \textit{Laurea Specialistica in Ingegneria Informatica}
conseguita presso il
\href{
http://www.polimi.it
}{Politecnico di Milano} ecc.
\item[2005] \textit{Laurea in Ingegneria Informatica} conseguita
presso il \href{
http://www.polimi.it
}{Politecnico di Milano} ecc
\item[2002] \textit{Diploma di maturit\`a scientifica} conseguito
presso ecc
\end{description}
\end{document}
La stessa indentazione la applico poi a del testo piu' lungo, con i
metodi visti prima. Sono al corrente dei vari template in rete per
redigere il curriculum ma preferisco la mia impostazione, che poi il
rientro del testo dopo il titolo della sezione possa non paicere e'
discutibile cmq il mio scopo era anche quello di fare un po' di
sperimentazioni con latex.
Ciao
Mattia

 \usepackage[italian]{babel}
[...]
Vediamo di migliorare un po', almeno dal punto di vista TeXnico
====
\documentclass[10pt,a4paper]{article}
\usepackage[italian]{babel}
\usepackage{color}
\usepackage{enumitem}
\usepackage[plain]{fullpage}
\usepackage{titlesec}
\usepackage{hyperref} % meglio per ultimo
\titleformat{\section}{\large\scshape\raggedright}{}{0em}{}[]
\newlist{data}{description}{1}
\setlist[data]{font=\normalfont,labelindent=3mm,
  leftmargin=1.5cm,style=multiline,noitemsep}
\setcounter{secnumdepth}{-2}
\begin{document}
\begin{center}
\LARGE\scshape Nome Cognome - Curriculum Vitae
\end{center}
\vspace{1cm} % o quello che preferisci
\section{Informazioni personali}
bla bla bla
\section{Istruzione e formazione}
\begin{data}
\item[2008] \textit{Laurea Specialistica in Ingegneria Informatica}
conseguita presso il
\href{
http://www.polimi.it
}{Politecnico di Milano} ecc.
\item[2005] \textit{Laurea in Ingegneria Informatica} conseguita
presso il \href{
http://www.polimi.it
}{Politecnico di Milano} ecc
\item[2002] \textit{Diploma di maturit\`a scientifica} conseguito
presso ecc
\end{description}
\end{document}
====
La dichiarazione \LARGE è confinata dentro center, quindi non
occorre mettere graffe; \sc è un comando obsoleto che non va usato
e, per di più, non ha argomenti.
Meglio definirsi un nuovo ambiente (data) e dare lì le specifiche
invece che esplicitarle come argomento opzionale di description.
In un testo di questo tipo è ammissibile azzerare il rientro.
Con \setcounter{secnumdepth}{-2} vieti la numerazione delle sezioni, 
così non ti occorre \section*.
Ciao
Enrico

 Enrico
Beh, che dire, grazie ancora!


Questo comando mi da problemi:


    leftmargin=1.5cm,style=multiline,noitemsep}
No, se hai una versione aggiornata della distribuzione TeX.
Ciao
Enrico


Sotto win tutto ok, mentre con debian non funziona, cerchero'
pacchetti aggiornati (enumitem).

 scrive:

Con debian dovrebbe essere possibile avere la TeX Live 2008.
Ciao
Enrico

 Con debian dovrebbe essere possibile avere la TeX Live 2008.
Eh no, purtroppo anche in Unstable c'è ancora
Tex Live 2007. E infatti anch'io ho dovuto installare
a mano enumitem dall'ultime versione...
M.

 scrive:

Protestate vivacemente. :-)
Ciao
Enrico

 Protestate vivacemente. :-)
Ma gli sviluppatori hanno i loro tempi...
Certo, ormai è un po' che la versione 2008 è uscita.
Va cmq meglio che con Slackware, in cui Volkerding
si ostina a mettere ancora Tetex...
M.


Poco male, basta fare:
# wget 
http://tug.ctan.org/get/macros/latex/contrib/enumitem/enumitem.sty
# su
# mv enumitem.sty /usr/share/texmf-texlive/tex/latex/enumitem/
Ciao
Mattia

 # mv enumitem.sty /usr/share/texmf-texlive/tex/latex/enumitem/
Meglio ancora, sostituisci l'ultima riga con
$ mv enumitem.sty $(dirname $(kpsewhich enumitem.sty))
In questo modo non ti occorre nemmeno interrogare "locate" per
sapere dove stia enumitem.sty e, nel caso ci sia più di un'istanza,
andare a naso per capire quale sia la versione usata da TeX:
$ kpsewhich <nome>
dice quale file viene letto da TeX se si dà \input{<nome>} o analoghi
comandi. Spesso un pacchetto ha anche altri file che lo accompagnano;
con 
$ ls -l $(dirname $(kpsewhich enumitem.sty))
li scopri tutti (in questo caso c'è solo quel file).
Ciao
Enrico

 Enrico
Ottimo, il comando che dici e' ls -d (credo), ciao e grazie ancora.

 Ottimo, il comando che dici e' ls -d (credo), ciao e grazie ancora.
Con "-d" individui la directory, con "-l" elenchi i file e così sai 
quali di sicuro devi scaricare. Ma se cerchi un pacchetto su CTAN
trovi anche un file .zip che contiene tutto l'occorrente e le
istruzioni su dove e come spacchettare.
Ciao
Enrico

 istruzioni su dove e come spacchettare.
Io mi sono fatto un banalissimo install.sh.
Scarico la versione aggiornata del pacchetto
e lancio lo script. Lui spacchetta, installa i file
e aggiorna il sistema. Pochissimi secondi
e tutto è a posto...
M.

 e tutto è a posto...
...potresti condividerlo con un pigrone come me? ;)
Ciao,
Stefano