Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Creare box con immagini allineate al testo

6 views
Skip to first unread message

Carmine Noviello

unread,
Sep 22, 2008, 5:41:34 PM9/22/08
to
Salve a tutti,
premetto che non sono un esperto di Latex. Sto provando a creare dei box nel testo, con
sfondo grigio, e che contengano un testo informativo corredato di un'immagine affianco. Al
momento sono riuscito a creare quello che è visibile a questo indirizzo:

http://img174.imageshack.us/img174/3050/immagine1fi7.png

Quello che vorrei è che l'immagine fosse allineata alla parte alta del testo, e non
sfalsata. Veniamo a come ho implementato il tutto. Si tratta di una minipage che contiene
una tabella di 2 colonne ed una riga. Ora il fatto è che lui mi piazza sempre
quell'immagine in alto, almeno che non specifico la seconda colonna come
"m{0.8\textwidth}", però in quel caso l'immagine è centrata in verticale e non allineata
in alto come vorrei.
Probabilmente l'approccio è sbagliato. Idee???
Vi allego il codice:


\makeatletter\newenvironment{impbox2}{%
\setlength{\pya}{\textwidth}
\addtolength{\pya}{-2.3\parindent}
\vspace{5mm}\hspace*{0mm}\begin{lrbox}{\@tempboxa}\begin{minipage}[r]{\pya}\begin{tabular}{p{0.12\textwidth}
p{0.8\textwidth}}\includegraphics[height=10mm, width=20mm]{images/img1.jpg} &
\textbf{Importante:}}{\\ \end{tabular}\end{minipage}\end{lrbox}%
\fcolorbox{innergray}{outgray}{\usebox{\@tempboxa}}\vspace{5mm}
}\makeatother

Grazie a chi mi risponderà
--
Sito: http://www.carminenoviello.name
http://www.carminenoviello.name/wpg2

Giacomo Boffi

unread,
Sep 22, 2008, 7:22:30 PM9/22/08
to
Carmine Noviello <cnov...@hotmail.com> writes:

il nesting del codice mi lascia stupito, ma credo di aver capito che
nel tabular ci sono due celle di tipo 'p', il cui allineamento
verticale e' associato alla prima baseline di ciascuna cella

se in ciascuna cella tu mettessi una linea di altezza e profondita' nulla
dovresti ottenere quello che desideri

credo che ci potresti arrivare con qualche variazione sul tema
\vspace{0pt}
--
Hai capito benissimo quello che intendevi. -- AirCraft, in ISC

Giacomo Boffi

unread,
Sep 22, 2008, 7:24:16 PM9/22/08
to
Giacomo Boffi <giacom...@polimi.it> writes:

> se in ciascuna cella tu mettessi

prima di ogni altra cosa

Carmine Noviello

unread,
Sep 23, 2008, 2:07:11 AM9/23/08
to
Giacomo Boffi ha scritto:

>
> il nesting del codice mi lascia stupito

Ammetto di essere il peggior programmatore Latex del mondo :-PPPPPPP

> se in ciascuna cella tu mettessi una linea di altezza e profondita' nulla
> dovresti ottenere quello che desideri
>
> credo che ci potresti arrivare con qualche variazione sul tema
> \vspace{0pt}

Funge alla grande. SMACK :-)

Carmine

Stefano David

unread,
Sep 23, 2008, 3:28:10 AM9/23/08
to
On Sep 22, 11:41 pm, Carmine Noviello <cnovie...@hotmail.com> wrote:
> Quello che vorrei è che l'immagine fosse allineata alla parte alta del testo, e non
> sfalsata. Veniamo a come ho implementato il tutto. Si tratta di una minipage che contiene
> una tabella di 2 colonne ed una riga. Ora il fatto è che lui mi piazza sempre
Anceh se hai già risolto il problema, volevo aggiungere che io mi sono
sempre trovato bene, per quanto riguarda la costruzione di tabelle et
similia, con la guida pubblicata da sarovar (vedi [1]), che contiene
il codice di svariati tipi di tabelle, con diversi allineamenti delle
celle: magari ti potranno essere utili in futuro. Tutto questo,
ovviamente, senza nulla togliere alle varie persone che frequentano
questo forum e che hanno prodotto varie guide!

Ciao,
Stefano

[1] http://sarovar.org/projects/ltxprimer/

Carmine Noviello

unread,
Sep 23, 2008, 3:47:20 AM9/23/08
to
Stefano David ha scritto:

> Anceh se hai già risolto il problema, volevo aggiungere che io mi sono
> sempre trovato bene, per quanto riguarda la costruzione di tabelle et
> similia, con la guida pubblicata da sarovar (vedi [1]), che contiene
> il codice di svariati tipi di tabelle, con diversi allineamenti delle
> celle: magari ti potranno essere utili in futuro. Tutto questo,
> ovviamente, senza nulla togliere alle varie persone che frequentano
> questo forum e che hanno prodotto varie guide!
>
> Ciao,
> Stefano
>
> [1] http://sarovar.org/projects/ltxprimer/

Grazie mille, sembra fatta proprio bene.

Enrico Gregorio

unread,
Sep 23, 2008, 5:02:11 AM9/23/08
to
Carmine Noviello <cnov...@hotmail.com> scrive:

Qualcosa come questo?

\documentclass[a4paper]{article}
\usepackage{graphicx,color,lipsum}
\usepackage{calc}
\makeatletter
\newenvironment{impbox2}
{\par\addvspace{\medskipamount}
\begin{lrbox}{\@tempboxa}
\begin{minipage}[t]{.1\textwidth}
\vspace{\fboxsep}
\includegraphics[width=.1\textwidth]{try}
\end{minipage}\hspace{2pt}%
\begin{minipage}[t]{.9\textwidth-2\fboxsep-2\fboxrule-2pt}
\vspace{\fboxsep}
\textbf{Importante: }\ignorespaces
}
{%
\par\vspace{\fboxsep}
\end{minipage}%
\end{lrbox}%
\noindent\fcolorbox{black}{red}{\usebox{\@tempboxa}}%
\par\addvspace{\medskipamount}
}
\makeatother

\begin{document}
\lipsum[1]
\begin{impbox2}
\lipsum[2]
\end{impbox2}
\lipsum[3]
\end{document}

Ciao
Enrico

Carmine Noviello

unread,
Sep 23, 2008, 1:44:01 PM9/23/08
to
Enrico Gregorio ha scritto:
> Carmine Noviello <cnov...@hotmail.com> scrive:
>

Ciao, grazie per aver dedicato il tuo tempo. La soluzione funziona, ma me la devo studiare
un po' per capire come funziona esattamente ;-P

Carmine

Enrico Gregorio

unread,
Sep 23, 2008, 1:57:09 PM9/23/08
to
Carmine Noviello <cnov...@hotmail.com> scrive:

> Ciao, grazie per aver dedicato il tuo tempo. La soluzione funziona, ma
> me la devo studiare un po' per capire come funziona esattamente ;-P

Ecco la spiegazione.

> > \newenvironment{impbox2}
> > {\par\addvspace{\medskipamount}

Cominciamo mettendoci in modo verticale (\par) e aggiungiamo una
spaziatura media, per staccare la scatola colorata dal contesto.
Con \addvspace si evita l'accumulo e, in presenza di due spaziature
consecutive di questo tipo, viene usata solo la maggiore.

> > \begin{lrbox}{\@tempboxa}

Questo è come il tuo: apriamo una box per poi metterla sopra uno
sfondo.

> > \begin{minipage}[t]{.1\textwidth}
> > \vspace{\fboxsep}
> > \includegraphics[width=.1\textwidth]{try}
> > \end{minipage}\hspace{2pt}%
> > \begin{minipage}[t]{.9\textwidth-2\fboxsep-2\fboxrule-2pt}
> > \vspace{\fboxsep}
> > \textbf{Importante: }\ignorespaces
> > }

Invece di un tabular, meglio usare due minipage allineate al bordo
superiore. Ci aggiungo anche una spaziatura verticale per spaziare
di più dal bordo della box colorata.

Alla prima ho assegnato un decimo della giustezza, vedi tu quanto
ti serve. La spaziatura fra le due è di 2pt, vedi tu. La seconda
minipage è larga esattamente quanto serve per riempire la giustezza:
tolgo l'ampiezza della prima minipage, due volte il margine che
sarà lasciato dalla \fcolorbox e due volte l'ampiezza delle righe
della \fcolorbox stessa. Con il pacchetto calc si può usare questa
semplice sintassi.

> > {%
> > \par\vspace{\fboxsep}
> > \end{minipage}%
> > \end{lrbox}%

Finiamo la seconda minipage, sempre lasciando un po' di spazio verticale
in più e la lrbox.

> > \noindent\fcolorbox{black}{red}{\usebox{\@tempboxa}}%
> > \par\addvspace{\medskipamount}
> > }

Adesso componiamo il tutto: \noindent per non avere rientro, la
\fcolorbox (aggiusta tu i colori) e un'altra spaziatura media.

Ciao
Enrico

0 new messages