- Questo topic ha 8 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 5 mesi fa da
OldClaudio.
-
CreatoreTopic
-
18 Marzo 2013 alle 14:52 #83936::
Salve a tutti,
sto stilando un documento di classe scrreport in cui ogni capitolo è dedicato ad una particolare nazione.
Come da oggetto vorrei sapere, se possibile, come inserire un’immagine nel titolo di ciascun capitolo, chiaramente con altezza massima pari a quella del titolo stesso. L’immagine in questione non sarebbe nient’altro che la bandiera della relativa nazione, volevo vedere che effetto facesse.Grazie in anticipo dell’aiuto e della disponibilità,
Davide
EDIT: la descrizione di prima forse è un po’ ambigua, rileggendola. In realtà non è necessario che l’immagine sia all’interno del titolo, è sufficiente che gli stia accanto, sulla destra. Spero sia più chiaro ora, altrimenti provo a spiegarmi meglio.
-
CreatoreTopic
-
AutoreRisposte
-
-
18 Marzo 2013 alle 21:56 #83937::
Puoi vedere l’effetto che fa con questo:
`
\chapter{\protect\includegraphics[height=1ex]{fig3}\hskip.5em Titolo}
`
Ho messo l’immagine prima del titolo perché i titoli, verosimilmente,
avranno na lunghezza diversa. In questo modo, invece, la bandiera è praticamente sempre nella stessa posizione (almeno fino a quando il numero del capitolo ha una cifra).Un’alternativa secondo me migliore è questa:
`\documentclass{scrreprt}\usepackage{graphicx}
\newcommand{\specialchapter}[2]{%
\chapter{\rlap{\hskip.7\textwidth
\protect\parbox[c]{1cm}{%
\protect\includegraphics[height=1cm]{#2}}}#1}}\begin{document}
\specialchapter{Titolo}{
} \end{document} `
Ciao
Ivan
-
19 Marzo 2013 alle 7:38 #83938::
Grazie mille, la seconda soluzione sarebbe perfetta, ma ho due piccoli inconvenienti:1) A questo punto vorrei allineare tutte le bandiere sul bordo destro della pagina. Ho provato ad aumentare l’ampiezza del comando \hskip, ma un numero fisso non va bene perchè in generale le proporzioni delle immagini sono le stesse. Servirebbe qualcosa tipo \hfill, ho provato a metterlo al posto di \hskip ma è come se venisse ignorato (per intendersi, l’immagine viene posta esattamente sotto l’inizio del titolo).
2) Le immagini mi appaiono anche nell’indice e questo vorrei evitarlo, ma non so se sia possibile.
Grazie ancora per l’aiuto e scusate l’ulteriore disturbo.
Davide
-
19 Marzo 2013 alle 8:02 #83939::
Infatti: in entrambe le soluzioni di Ivan dovresti usare l’argomento facoltativo; esemplifico solo sulla prima soluzione, ma l’estensione alla seconda dovrebbe essere evidente:`
\chapter[Titolo]{Titolo\hfill\includegraphics[width=1cm]{flag}}
`
Con \hfill dopo il titolo la scatolina con l’immagine della bandierina{flag} dovrebbe essere spinta sul margine destro; certo se il titolo è lungo, la bandierina potrebbe andare a finire nella riga di sotto, oppure restare attaccata al titolo, oppure andare nella seconda riga del titolo.Si potrebbe fare in modo ancora più elaborato con scatole a mo’ di matriosche per mettere la bandierina allineata con la prima riga del titolo, ma situata dove abitualmente stano le note marginali. Chiedi se ti interessa una soluzione del genere., che però richiede un po’ di sperimentazione prima di funzionare a dovere.
-
19 Marzo 2013 alle 9:39 #83940::
Allora, andiamo con ordine.
Innanzitutto grazie mille, inserendo il titolo come argomento facoltativo ho risolto il secondo problema: le immagini non si vedono più nell’indice. Poi, per risponderti a questo:OldClaudio” post=83169 Con \hfill dopo il titolo la scatolina con l’immagine della bandierina{flag} dovrebbe essere spinta sul margine destro; certo se il titolo è lungo, la bandierina potrebbe andare a finire nella riga di sotto, oppure restare attaccata al titolo, oppure andare nella seconda riga del titolo.
il problema che tu evidenzi non dovrei averlo perché i titoli sono tutti piuttosto brevi e spazio sulla destra ce n’è in abbondanza.
Rimane però il primo problema che ho esposto, quello dell’allineamento: \hfill all’interno del titolo non sembra comportarsi come all’interno del normale testo, cioè non allinea ciò che segue sul margine destro della pagina, ma a prima occhiata lascia uno spazio di larghezza fissata. Ho fatto varie prove, tra cui una semplice:`
\chapter[Titolo]{Titolo\hfill Testo}
`e si è verificata nuovamente la situazione di cui sopra, quindi a questo punto credo che il problema sia dovuto ad un uso scorretto di \hfill. Un effetto simile a quello che voglio l’ho ottenuto con questo:
`
\newcommand{\specialchapter}[2]{%
\chapter[#1]{\rlap{
\protect\parbox[c]{.878\linewidth}{%
\protect\raggedleft\includegraphics[height=1cm]{#2}}}#1}}
`Le immagini in questo modo sono tutte allineate sulla destra, ma il problema che rimane è la larghezza della box, che dovrebbe essere quella trovata magicamente e indicata nel codice per capitoli a due cifre, mentre .905\linewidth (sempre trovata magicamente) per capitoli ad una cifra sola.
A questo punto il problema si ridurrebbe a trovare la larghezza tra la posizione corrente e il fine riga: c’è un modo per farlo?Grazie mille a tutti.
Davide
-
20 Marzo 2013 alle 11:02 #83941::
Ok, credo di aver risolto adottando una soluzione molto brutta, ma il risultato è quello che volevo:`
\newlength{\flagwidth}\newcommand{\specialchapter}[2]{%
\chapter[#1]{
\ifnum\thechapter<10\setlength{\flagwidth}{.885\textwidth}\else\setlength{\flagwidth}{.858\textwidth}\fi
\rlap{
\protect\parbox[c]{\flagwidth}{%
\protect\raggedleft\includegraphics[height=1cm]{#2}}}#1}}
`dove i due numeri magici (.885 e .858) li ho trovati con alcune prove.
Non sono stato in grado di fare di meglio, se qualcuno avesse delle soluzioni più eleganti (soprattutto senza numeri magici) ben vengano.Davide
-
20 Marzo 2013 alle 17:05 #83942::
Che ne diresti di mettere la bandierina allineata fuori del margine destro?, sarebbe in posizione fissa e indipendente dal fatto che il numero del capitolo sia di una o due cifre; oppure la vuoi dentro il margine, ma a file del margine? Latex ti offre tanti giochetti da fare con le scatole, per esempio:`
\newcommand*\specialchapter[2]{% Il primo argomento è il titolo, il secondo la bandierina
\chapter[#1]{\makebox[0pt][l]{\makebox[\textwidth][r]{\includegraphics[width=1cm]{#2}}}#1}
}
`
Secondo te con uquelle due makebox dove mette la bandierina?PS: ho scritto il codice di getto, e non l’ho collaudato; potrebbe mancare qualche graffa…:sad:
-
20 Marzo 2013 alle 20:37 #83943::
Il risultato che ho ottenuto con questo codice è una box vuota accanto al numero del capitolo, una box con la bandierina fuori dal margine della pagina e il titolo del capitolo a destra della bandierina (che sfora quindi dalla pagina).
Togliendo la \makebox più esterna sparisce la box vuota accanto al numero del capitolo, ma rimangono gli altri due problemi; spostando l’argomento #1 prima della \makebox rimanente, il titolo viene spostato correttamente accanto al numero del capitolo, ma la box seguente non rispetta più l’allineamento perché creata a partire dalla fine del titolo.
Perdona la mia ignoranza, ma non sono affatto pratico delle box in Latex quindi non saprei proprio dove altro mettere le mani…Come ho scritto precedentemente, l’ideale sarebbe creare una box larga lo spazio che rimane tra la “posizione corrente” del cursore e la fine della larghezza disponibile, un qualcosa del tipo \textwidth –
, ma cercando in giro non ho trovato il modo di fare tutto ciò. Anche nella soluzione che hai proposto tua alla fine si tratterebbe soltanto di trovare una dimensione idonea per la box.
Ho quindi abbozzato la soluzione che ho postato prima, basandomi sui vostri consigli: molto magica e altrettanto poco elegante :D, ma in mancanza di meglio utile ai miei scopi.
-
20 Marzo 2013 alle 22:00 #83944::
Te l’ho detto; l’ho buttata giù di getto e non l’ho collaudata; ora che l’ho collaudata ho corretto un paio di errori di battitura (ma le graffe c’erano tutte, e funziona correttamente:`\documentclass{book}
\usepackage[italian]{babel}
\usepackage{graphicx}\newcommand*\specialchapter[2]{% Il primo argomento è il titolo, il secondo la bandierina
\chapter[#1]{\makebox[0pt][l]{\makebox[\textwidth][r]{\includegraphics[width=1cm]{#2}}}#1}
}\begin{document}
\specialchapter{Titolo}{logopolito}
\end{document}`
Ovvimante al posto di logopolito che scrivi il nome del file che contiene la bandierina giusta.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.