- Questo topic ha 8 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 11 mesi fa da
Andrea.
-
CreatoreTopic
-
24 Settembre 2012 alle 6:38 #79057::
Ciao a tutti,
ho la necessità di inserire molti oggetti flottanti (grafici di [tt]pgfplots[/tt]) ruotati in formato landscape. Inizialmente ho utilizzato il pacchetto [tt]rotating[/tt] con l’opzione [tt]figuresright[/tt], includendo quindi il grafico con l’ambiente [tt]sidewaysfigure[/tt].Mi è stato poi fatto notare che per facilitare la lettura a schermo sarebbe meglio ruotare la visualizzazione di queste pagine. Sono quindi passato al pacchetto [tt]pdflscape[/tt] e l’ambiente [tt]landscape[/tt]:
`
\begin{landscape}
\begin{figure}
\input{my_file}
\caption{Consumi elettrici dell'impianto di condizionamento}
\label{fig:label}
\end{figure}
\end{landscape}
`
in questo modo però l’ambiente [tt]landscape[/tt] inserisce un [tt]\clearpage[/tt] per cui interrompe il flusso del testo.La soluzione è stata quindi usare [tt]\afterpage[/tt]:
`
\afterpage{\begin{landscape}
\begin{figure}
\input{my_file}
\caption{Consumi elettrici dell'impianto di condizionamento}
\label{fig:label}
\end{figure}
\end{landscape}}
`Il risultato è quello voluto. Ora vorrei creare un ambiente (e non un comando) che mi permettesse si ottenere l’effetto de codice precedente; qualcosa del tipo:
`
\begin{mylscape}
\input{my_file}
\caption{Consumi elettrici dell'impianto di condizionamento}
\label{fig:label}
\end{mylscape}
`
solo che non capisco come inserire [tt]\afterpage[/tt] all’interno di [tt]\newenvironment[/tt].C’è qualcuno che può aiutarmi?
Grazie in anticipo
Andrea
-
CreatoreTopic
-
AutoreRisposte
-
-
24 Settembre 2012 alle 7:11 #79058::
Iovem” post=78191Ciao a tutti,
ho la necessità di inserire molti oggetti flottanti (grafici di [tt]pgfplots[/tt]) ruotati in formato landscape. Inizialmente ho utilizzato il pacchetto [tt]rotating[/tt] con l’opzione [tt]figuresright[/tt], includendo quindi il grafico con l’ambiente [tt]sidewaysfigure[/tt].Mi è stato poi fatto notare che per facilitare la lettura a schermo sarebbe meglio ruotare la visualizzazione di queste pagine. Sono quindi passato al pacchetto [tt]pdflscape[/tt] e l’ambiente [tt]landscape[/tt]:
`
\begin{landscape}
\begin{figure}
\input{my_file}
\caption{Consumi elettrici dell'impianto di condizionamento}
\label{fig:label}
\end{figure}
\end{landscape}
`
in questo modo però l’ambiente [tt]landscape[/tt] inserisce un [tt]\clearpage[/tt] per cui interrompe il flusso del testo.La soluzione è stata quindi usare [tt]\afterpage[/tt]:
`
\afterpage{\begin{landscape}
\begin{figure}
\input{my_file}
\caption{Consumi elettrici dell'impianto di condizionamento}
\label{fig:label}
\end{figure}
\end{landscape}}
`Il risultato è quello voluto. Ora vorrei creare un ambiente (e non un comando) che mi permettesse si ottenere l’effetto de codice precedente; qualcosa del tipo:
`
\begin{mylscape}
\input{my_file}
\caption{Consumi elettrici dell'impianto di condizionamento}
\label{fig:label}
\end{mylscape}
`
solo che non capisco come inserire [tt]\afterpage[/tt] all’interno di [tt]\newenvironment[/tt].C’è qualcuno che può aiutarmi?
Grazie in anticipo
Andrea
Proverei così:
`\usepackage{environ}
\NewEnviron{mylscape}{%
\def\tempmylscape{\begin{landscape}\begin{figure}}%
\expandafter\expandafter\expandafter\afterpage
\expandafter\expandafter\expandafter{\expandafter\tempmylscape\BODY\end{figure}\end{landscape}}%
}`
Con environ e [tt]\NewEnviron[/tt] l’ambiente [tt]mylscape[/tt] mette in [tt]\BODY[/tt] il contenuto dell’ambiente stesso. Ma prima di passarlo a [tt]\afterpage[/tt] dobbiamo espanderlo, perché un semplice
`\afterpage{\begin{landscape}\begin{figure}\BODY\end{figure}\end{landscape}}`
non funzionerebbe: il significato di [tt]\BODY[/tt] sparisce quando l’ambiente è terminato. Con un giudizioso uso di qualche [tt]\expandafter[/tt] (solo sette :)) si otterrà il risultato desiderato.Ciao
Enrico
-
24 Settembre 2012 alle 7:33 #79059
-
25 Settembre 2012 alle 6:29 #79060::
egreg9″ post=78193
Ciao a tutti,
ho la necessità di inserire molti oggetti flottanti (grafici di [tt]pgfplots[/tt]) ruotati in formato landscape. Inizialmente ho utilizzato il pacchetto [tt]rotating[/tt] con l’opzione [tt]figuresright[/tt], includendo quindi il grafico con l’ambiente [tt]sidewaysfigure[/tt].Mi è stato poi fatto notare che per facilitare la lettura a schermo sarebbe meglio ruotare la visualizzazione di queste pagine. Sono quindi passato al pacchetto [tt]pdflscape[/tt] e l’ambiente [tt]landscape[/tt]:
`
\begin{landscape}
\begin{figure}
\input{my_file}
\caption{Consumi elettrici dell'impianto di condizionamento}
\label{fig:label}
\end{figure}
\end{landscape}
`
in questo modo però l’ambiente [tt]landscape[/tt] inserisce un [tt]\clearpage[/tt] per cui interrompe il flusso del testo.La soluzione è stata quindi usare [tt]\afterpage[/tt]:
`
\afterpage{\begin{landscape}
\begin{figure}
\input{my_file}
\caption{Consumi elettrici dell'impianto di condizionamento}
\label{fig:label}
\end{figure}
\end{landscape}}
`Il risultato è quello voluto. Ora vorrei creare un ambiente (e non un comando) che mi permettesse si ottenere l’effetto de codice precedente; qualcosa del tipo:
`
\begin{mylscape}
\input{my_file}
\caption{Consumi elettrici dell'impianto di condizionamento}
\label{fig:label}
\end{mylscape}
`
solo che non capisco come inserire [tt]\afterpage[/tt] all’interno di [tt]\newenvironment[/tt].C’è qualcuno che può aiutarmi?
Grazie in anticipo
Andrea
Proverei così:
`\usepackage{environ}
\NewEnviron{mylscape}{%
\def\tempmylscape{\begin{landscape}\begin{figure}}%
\expandafter\expandafter\expandafter\afterpage
\expandafter\expandafter\expandafter{\expandafter\tempmylscape\BODY\end{figure}\end{landscape}}%
}`
Con environ e [tt]\NewEnviron[/tt] l’ambiente [tt]mylscape[/tt] mette in [tt]\BODY[/tt] il contenuto dell’ambiente stesso. Ma prima di passarlo a [tt]\afterpage[/tt] dobbiamo espanderlo, perché un semplice
`\afterpage{\begin{landscape}\begin{figure}\BODY\end{figure}\end{landscape}}`
non funzionerebbe: il significato di [tt]\BODY[/tt] sparisce quando l’ambiente è terminato. Con un giudizioso uso di qualche [tt]\expandafter[/tt] (solo sette :)) si otterrà il risultato desiderato.Ciao
EnricoHo cantato vittoria troppo presto. Se abilito l’esternalizzazione di [tt]tikz[/tt], il nuovo ambiente ruota solo la pagina, ma non la figura esternalizzata.
Un esempio minimale:
`
\documentclass[a4paper]{book}\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{textcomp} %Gradi e altri simboli
\usepackage[utf8]{inputenc}\usepackage{afterpage} %Svuota coda figura \afterpage{\clearpage}
\usepackage{environ} %Nuovi ambienti
\usepackage{lipsum} %Testo casuale
\usepackage{pdflscape} %Rotazione visualizz pagine
\usepackage[figuresright]{rotating} %Rotazione figure
\usepackage{tikz,pgfplots} %Disegno e grafici in LaTeX\usetikzlibrary{external}
%Definisce nuovo comando per input tile tikz
\makeatletter
\newcommand{\useexternalfile}[1]{%
\tikzsetnextfilename{#1-output}%
\input{\tikzexternal@filenameprefix#1.tex}}
\makeatother%Figure ruotate
\NewEnviron{mylscape}{%
\def\tempmylscape{\begin{landscape}\begin{figure}\centering}%
\expandafter\expandafter\expandafter\afterpage
\expandafter\expandafter\expandafter %
{\expandafter\tempmylscape\BODY\end{figure}\end{landscape}}%
}\tikzexternalize %Esternalizzazione
% INIZIO DOCUMENTO
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}\tikzsetexternalprefix{./Immagini/cap1/}
\chapter{Primo}
\lipsum\begin{mylscape}
\useexternalfile{prova}
\caption{Una figura di prova}
\label{fig:my_fig}
\end{mylscape}\lipsum
\end{document}
`Dove il file [tt]prova.tex[/tt] è:
`
\begin{tikzpicture}[]
\draw[ultra thick,red] (0,0) rectangle (19,11);
\end{tikzpicture}
`La figura in [tt]tikz[/tt] viene inserita con [tt]\useexternalfile[/tt] definito in modo da tenere in conto il fatto che il file da inserire è annidato all’interno di sottocartelle nella directory principale ([tt]./Immagini/cap1/[/tt]). Lo stesso comando gestisce anche il prefissi in modo che quando viene attivata la libreria [tt]external[/tt] il file generato venga posizionato nella stessa sotto-cartella del file iniziale.
E’ quindi possibile adattare il nuovo ambiente in modo che posizioni in landscape anche il file esternalizzato?
Grazie in anticipo
Andrea
-
25 Settembre 2012 alle 11:48 #79061
-
25 Settembre 2012 alle 11:58 #79062::
egreg9″ post=78252Per favore, modifica il tuo esempio in modo che non faccia alcun riferimento ad altre directory.
Ciao
EnricoEcco qui:
`
\documentclass[a4paper]{book}\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{textcomp} %Gradi e altri simboli
\usepackage[utf8]{inputenc}%In ordine alfabetico
\usepackage{afterpage} %Svuota coda figura \afterpage{\clearpage}
\usepackage{environ} %Nuovi ambienti
\usepackage{lipsum} %Testo casuale
\usepackage{pdflscape} %Rotazione visualizz pagine
\usepackage[figuresright]{rotating} %Rotazione figure
\usepackage{tikz,pgfplots} %Disegno e grafici in LaTeX\usetikzlibrary{external}
%Definisce nuovo comando per input tile tikz
\makeatletter
\newcommand{\useexternalfile}[1]{%
\tikzsetnextfilename{#1-output}%
\input{\tikzexternal@filenameprefix#1.tex}}
\makeatother%Figure ruotate
\NewEnviron{mylscape}{%
\def\tempmylscape{\begin{landscape}\begin{figure}\centering}%
\expandafter\expandafter\expandafter\afterpage
\expandafter\expandafter\expandafter %
{\expandafter\tempmylscape\BODY\end{figure}\end{landscape}}%
}\tikzexternalize %Esternalizzazione
% INIZIO DOCUMENTO
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}\tikzsetexternalprefix{}
\chapter{Primo}
\lipsum\begin{mylscape}
% \useexternalfile{prova}
\begin{tikzpicture}[]
\draw[ultra thick,red] (0,0) rectangle (19,11);
\end{tikzpicture}
\caption{Una figura di prova}
\label{fig:my_fig}
\end{mylscape}\lipsum
\end{document}
`eliminando il commento da [tt]\useexternalfile{prova}[/tt], si può metter il contenuto di [tt]tikzpicture[/tt] in un file [tt]prova.tex[/tt] nella directory principale.
-
25 Settembre 2012 alle 12:43 #79063::
Iovem” post=78253
Per favore, modifica il tuo esempio in modo che non faccia alcun riferimento ad altre directory.
Ciao
EnricoEcco qui:
`
\documentclass[a4paper]{book}\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{textcomp} %Gradi e altri simboli
\usepackage[utf8]{inputenc}%In ordine alfabetico
\usepackage{afterpage} %Svuota coda figura \afterpage{\clearpage}
\usepackage{environ} %Nuovi ambienti
\usepackage{lipsum} %Testo casuale
\usepackage{pdflscape} %Rotazione visualizz pagine
\usepackage[figuresright]{rotating} %Rotazione figure
\usepackage{tikz,pgfplots} %Disegno e grafici in LaTeX\usetikzlibrary{external}
%Definisce nuovo comando per input tile tikz
\makeatletter
\newcommand{\useexternalfile}[1]{%
\tikzsetnextfilename{#1-output}%
\input{\tikzexternal@filenameprefix#1.tex}}
\makeatother%Figure ruotate
\NewEnviron{mylscape}{%
\def\tempmylscape{\begin{landscape}\begin{figure}\centering}%
\expandafter\expandafter\expandafter\afterpage
\expandafter\expandafter\expandafter %
{\expandafter\tempmylscape\BODY\end{figure}\end{landscape}}%
}\tikzexternalize %Esternalizzazione
% INIZIO DOCUMENTO
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}\tikzsetexternalprefix{}
\chapter{Primo}
\lipsum\begin{mylscape}
% \useexternalfile{prova}
\begin{tikzpicture}[]
\draw[ultra thick,red] (0,0) rectangle (19,11);
\end{tikzpicture}
\caption{Una figura di prova}
\label{fig:my_fig}
\end{mylscape}\lipsum
\end{document}
`eliminando il commento da [tt]\useexternalfile{prova}[/tt], si può metter il contenuto di [tt]tikzpicture[/tt] in un file [tt]prova.tex[/tt] nella directory principale.
Il problema non dipende dall’ambiente [tt]mylscape[/tt] né da [tt]\afterpage[/tt]; immagino che occorra aggiungere un’impostazione a TikZ perché ruoti la figura.
Se infatti provi con
`\begin{landscape}
\begin{figure}
\centering
% \useexternalfile{prova}
\begin{tikzpicture}[]
\draw[ultra thick,red] (0,0) rectangle (19,11);
\end{tikzpicture}
\caption{Una figura di prova}
\label{fig:my_fig}
\end{figure}
\end{landscape}`
ottieni lo stesso risultato.Ciao
Enrico
-
25 Settembre 2012 alle 12:55 #79064::
Magari ho capito male io, ma una cosa del tipo:
`
\begin{landscape}
\begin{figure}
\centering
% \useexternalfile{prova}
\begin{tikzpicture}[rotate=90]
\draw[ultra thick,red] (0,0) rectangle (19,11);
\end{tikzpicture}
\caption{Una figura di prova}
\label{fig:my_fig}
\end{figure}
\end{landscape}
`
risolve il problema solo quando [tt]\tikzexternalize[/tt] è attivo, mentre quando è disattivo ho lo stesso problema di prima… In pratica inverto solo la situazione.intendevi qualcosa di diverso con “aggiungere un’impostazione a TikZ perché ruoti la figura”?
-
26 Settembre 2012 alle 10:48 #79065::
egreg9″ post=78257
Il problema non dipende dall’ambiente [tt]mylscape[/tt] né da [tt]\afterpage[/tt]; immagino che occorra aggiungere un’impostazione a TikZ perché ruoti la figura.Avevi ragione, sembra essere un baco di [tt]tikz[/tt], a quanto pere ben documentato. Ho risolto caricando
`
\usepackage[pdftex]{lscape}
`
invece di [tt]pdflscape[/tt], insieme dall’ambiente che hai suggerito, e tutto pare funzionare.Grazie di tutto
Andrea
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.