Risposte nei forum create
-
AutoreRisposte
-
::
OldClaudio” post=116587Bè’ fra le guide nella sezione Documentazione di questo forum c’è un fascicoletto intitolato “Appunti di programmazione in TeX e LaTeX”. Non è aggiornatissimo agli ultimi sviluppi del linguaggio LaTeX3 (L3), ma è certamente un buon punto da cui cominciare. Mi pare di ricordare che contenga un intero paragrafo sull’uso si \expandafter. Quando uno conosce bene/benino TeX e LaTeX è il manualetto da consultare.
Infatti, ti sorprenderà, ma usando due \expandafter due volte, così:`\expandafter\includegraphics\expandafter[\macroFig]{Immagini/a}` la cosa funziona perfettamente.
Tuttavia qui ti metto un codice che ho collaudato e funziona come previsto con un’avvertenza.
Ovviamente non dispongo delle tue figure, quindi ho caricato il pacchetto mwe (minmum working example) che mette a disposizione un certo numero di figure fasulle; tu ovviamente usa le tue figure vere. L’avvertenza è dopo il codice.
`\documentclass[a4paper]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{graphicx}
\usepackage{caption}
\captionsetup{tableposition=top,figureposition=bottom,font=small}
\usepackage{subfig}
\usepackage{mwe}\let\originalincludegraphics\includegraphics
\renewcommand\includegraphics[2][0.45]{%
\originalincludegraphics [width=#1\linewidth]{#2}}\begin{document}
\begin{figure}\centering
\subfloat[Prima]{\includegraphics{example-image-a}\label{a}} \quad
\subfloat[Seconda]{\includegraphics{example-image-b}\label{b}}\\
\subfloat[Terza]{\includegraphics{example-image-a}\label{c}} \quad
\subfloat[Quarta]{\includegraphics{example-image-b}\label{d}}
\caption{Primo esempio di 4 figure senza specificare il coefficiente}
\label{fig:subfig1}
\end{figure}\begin{figure}\centering
\subfloat[Prima]{\includegraphics[0.40]{example-image-a}\label{a}} \quad
\subfloat[Seconda]{\includegraphics[0.40]{example-image-b}\label{b}}\\
\subfloat[Terza]{\includegraphics[0.40]{example-image-a}\label{c}} \quad
\subfloat[Quarta]{\includegraphics[0.40]{example-image-b}\label{d}}
\caption{Primo esempio di 4 figure specificando il fattore opzionale}
\label{fig:subfig3}
\end{figure}\end{document}`
L’avvertenza consiste nell’usare o nell’evitare di usare il comando \let.
Facendo come dice il codice sopra riportato, il comando \let attribuisce alla macro \originalincludegraphics, il significato originale di \includegraphics; subito dopo con \renewcommand ridefinisce la macro iniziale in modo che accetti un solo argomento facoltativo, con il valore di default pari al coefficiente 0.45. Poi lo usa all’interno delle figure come se fosse il buon vecchio \includegraphics, solo che imposta già la larghezza al 45% della giustezza corrente (\linewidth è il valore della giustezza corrente, mentre \textwidth è il valore della larghezza dello specchio di stampa — quasi sempre hanno lo stesso valore, ma è quel quasi che fa la differenza).Ora vedi la trappola: avendo ridefinito \includegraphics, non lo puoi usare più alla vecchia maniera; puoi usare però \originalincludegraphics al posto del vecchio comando.
Alternativamente non assegnare l’alias \originalincludegraphics e non usarlo nella ridefinizione; definisci invece un altro comando, per esempio \myincludegraphics, e usa questo comando solo quando vuoi inserire le tue quaterne, usando, invece, il comando originale \includegraphics in ogni altro caso.
A te la scelta.
Grazie per il tempo che hai dedicato al mio problema e per il codice. Funziona alla perfezione! Ora analizzerò con calma la questione del comando \let.
::OldClaudio” post=116585Già, forse ci vorrebbe qualche \expandafter per alterare l’ordine di sviluppo delle varie macro; mi scuso per non avere io stesso collaudato quello che ti consigliavo di fare.
Ho cercato l’utilizzo del comando \expandafter e provato in vari modi, ma ottengo lo stesso risultato. Sai dirmi come usarlo nel modo corretto?
::
Innanzi tutto grazie per avermi risposto ed essere stato così esaustivo.Dunque vuoi usare TOPtesi; non specifichi se hai letto la documentazione inglese o italiana[\quote]
Ho letto quella italiana anche se come dici tu le informazioni che ho raccolto dopo la lettura sono ben poche.
Nell’esempio ho usato report perchè so che TOPtesi si basa sulla classe report e quindi pensavo valessero quasi gli stessi comandi per il problema che ho esposto.Ho testato entrambe le tue soluzioni. Le mie immagini sono all’incirca uguali quindi mi sono concentrata sui suggerimenti del punto uno.
La prima funziona alla perfezione quindi grazie mille!
Ho poi provato a implementare la macro perchè mi sembrava una soluzione ancora più comoda ma ho ottenuto il seguente errore: Missing \endcsname insertedIl codice usato è il seguente
`\newcommand{\macroFig}{width=0,45\textwidth}\begin{document}
\includegraphics[\macroFig]{Immagini/a}
\end{document}`Stesso errore anche con la seconda macro che mi hai consigliato
-
AutoreRisposte