changepage = classicthesis + geometry

  • Creatore
    Topic
  • #39444
    Up
    0
    Down
    ::


    Buona sera.
    Sto scrivendo un report con classicthesis

    `\documentclass[11pt,a4paper,twoside,openright,titlepage,fleqn,
    cleardoublepage=empty,abstracton,numbers=noenddot,%
    headinclude,footinclude,BCOR5mm,%
    captions=tableheading]{scrreprt}

    \usepackage{classicthesis-ldpkg}
    \usepackage[subfig,parts,eulermath,pdfspacing,beramono]{classicthesis}
    \usepackage[italian]{arsclassica}
    `

    In parallelo ho un article che contiene diverse pagine, tutte piene di (soli) diagrammi prodotti con la liberiria mindmap di tikz ed i margini sono stati (ampiamente) rivisti con il paccehtto geometry
    `\documentclass[a4paper]{article}

    \usepackage[a4paper,top=2,5cm,bottom=2,5cm,left=1cm,right=1cm]{geometry}
    \usepackage{tikz}
    \usetikzlibrary{mindmap}`

    Ora mi è stato chiesto di inserire le pagine dell’articolo così com’è in mezzo al report.

    Come faccio?
    Ho pensato al pacchetto changepage:
    `
    \begin{adjustwidth*}{-1cm}{-4cm}
    \centering
    \begin{tikzpicture}

    `
    ma ottengo qualcosa di simile all’effetto desiderato solo nelle pagine pari, mentre nelle dispari… no.
    E’ difficile spiegare senza postare tutto il codice con tutti i diagrammi, ma non penso sia il caso di riportarli qui.
    Inoltre, anche così, non riesco a settare i margini dx e sx a 1cm (+ eventuali 5mm di margine interno per la rilegatura), ma ho settato un generico -1, -4 ai margini di classicthesis, andando a occhio…

    Grazie
    GG

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #39445
      Up
      0
      Down
      ::

      Buona sera.
      Sto scrivendo un report con classicthesis

      `\documentclass[11pt,a4paper,twoside,openright,titlepage,fleqn,
      cleardoublepage=empty,abstracton,numbers=noenddot,%
      headinclude,footinclude,BCOR5mm,%
      captions=tableheading]{scrreprt}

      \usepackage{classicthesis-ldpkg}
      \usepackage[subfig,parts,eulermath,pdfspacing,beramono]{classicthesis}
      \usepackage[italian]{arsclassica}
      `

      In parallelo ho un article che contiene diverse pagine, tutte piene di (soli) diagrammi prodotti con la liberiria mindmap di tikz ed i margini sono stati (ampiamente) rivisti con il paccehtto geometry
      `\documentclass[a4paper]{article}

      \usepackage[a4paper,top=2,5cm,bottom=2,5cm,left=1cm,right=1cm]{geometry}
      \usepackage{tikz}
      \usetikzlibrary{mindmap}`

      Ora mi è stato chiesto di inserire le pagine dell’articolo così com’è in mezzo al report.

      Come faccio?
      Ho pensato al pacchetto changepage:
      `
      \begin{adjustwidth*}{-1cm}{-4cm}
      \centering
      \begin{tikzpicture}

      `
      ma ottengo qualcosa di simile all’effetto desiderato solo nelle pagine pari, mentre nelle dispari… no.
      E’ difficile spiegare senza postare tutto il codice con tutti i diagrammi, ma non penso sia il caso di riportarli qui.
      Inoltre, anche così, non riesco a settare i margini dx e sx a 1cm (+ eventuali 5mm di margine interno per la rilegatura), ma ho settato un generico -1, -4 ai margini di classicthesis, andando a occhio…

      Non si capisce molto, se devo dire la verità. Vuoi inserire pagine intere? Se sì, da’ un’occhiata al pacchetto pdfpages. Altrimenti cerca di spiegarti meglio.

      Ciao
      Enrico

    • #39446
      Up
      0
      Down
      ::

      Non si capisce molto, se devo dire la verità. Vuoi inserire pagine intere? Se sì, da’ un’occhiata al pacchetto pdfpages. Altrimenti cerca di spiegarti meglio.

      Ciao
      Enrico

      evidentemente non sono stato chiaro,
      nel report con classicthesis voglio inserire il codiche che produce i diagrammi tikz, i quali ci stanno su un altro documento i cui margini sono stati impostati con geometry ai valori di cui sotto.
      ciò che allora devo fare è impostare per una decina di pagine i margini del documento classicthesis ai valori top=bottom=2,5, laft=right=1+ eventuali 5mm per rilegatura sul margine interno.

      ho provato a fare ciò col pacchetto changepage ed il comando
      `\begin{adjustwidth*}{-1cm}{-4cm}
      \centering
      \begin{tikzpicture}
      …`
      ma le sole pagine dispari hanno le caratteristiche richieste, mentre quelle pari hanno le figure tutte schiacciate a destra.
      Inoltre, il comando che ho usato espande i margini interni ed esterni (credo) di 1 e 4 cm, mentre io vorrei che localemente i maringi laterali siano 1cm e 1,05cm (quello interno, con rilegatura).

      Grazie
      GG

    • #39447
      Up
      0
      Down
      ::

      Non si capisce molto, se devo dire la verità. Vuoi inserire pagine intere? Se sì, da’ un’occhiata al pacchetto pdfpages. Altrimenti cerca di spiegarti meglio.

      Ciao
      Enrico

      evidentemente non sono stato chiaro,
      nel report con classicthesis voglio inserire il codiche che produce i diagrammi tikz, i quali ci stanno su un altro documento i cui margini sono stati impostati con geometry ai valori di cui sotto.
      ciò che allora devo fare è impostare per una decina di pagine i margini del documento classicthesis ai valori top=bottom=2,5, laft=right=1+ eventuali 5mm per rilegatura sul margine interno.

      ho provato a fare ciò col pacchetto changepage ed il comando
      `\begin{adjustwidth*}{-1cm}{-4cm}
      \centering
      \begin{tikzpicture}
      …`
      ma le sole pagine dispari hanno le caratteristiche richieste, mentre quelle pari hanno le figure tutte schiacciate a destra.
      Inoltre, il comando che ho usato espande i margini interni ed esterni (credo) di 1 e 4 cm, mentre io vorrei che localemente i maringi laterali siano 1cm e 1,05cm (quello interno, con rilegatura).

      `\def\tikzboxplacement{r}
      \def\tikzboxalignment{flushright}
      \newsavebox{\placetikzbox}
      \newenvironment{placetikz}
      {\ifodd\value{page}%
      \def\tikzboxplacement{l}\def\tikzboxalignment{flushleft}%
      \fi
      \begin{\tikzboxalignment}
      \begin{lrbox}{\placetikzbox}\ignorespaces}
      {\end{lrbox}\makebox[0pt][\tikzboxplacement]{\usebox{\placetikzbox}}%
      \end{\tikzboxalignment}}`
      A questo punto puoi inserire i tuoi ambienti tikzpicture nell’ambiente “placetikz”. Puoi fare almeno un vero esempio?

      Ciao
      Enrico

    • #39448
      Up
      0
      Down
      ::

      `\def\tikzboxplacement{r}
      \def\tikzboxalignment{flushright}
      \newsavebox{\placetikzbox}
      \newenvironment{placetikz}
      {\ifodd\value{page}%
      \def\tikzboxplacement{l}\def\tikzboxalignment{flushleft}%
      \fi
      \begin{\tikzboxalignment}
      \begin{lrbox}{\placetikzbox}\ignorespaces}
      {\end{lrbox}\makebox[0pt][\tikzboxplacement]{\usebox{\placetikzbox}}%
      \end{\tikzboxalignment}}`
      A questo punto puoi inserire i tuoi ambienti tikzpicture nell’ambiente “placetikz”.

      Direi che così è perfetto…

      Puoi fare almeno un vero esempio?

      Ciao
      Enrico

      `\begin{tikzpicture}
      \path[mindmap,concept color=blue,text=black]
      node[concept] {}[clockwise from=90]
      child[concept]{ node[concept] {}[clockwise from=135]
      child[concept] { node[concept] {}
      }
      child[concept] { node[concept] {}[clockwise from=90]
      child[concept] { node[concept] {}}
      child[concept] { node[concept] {}}
      }
      }
      child[concept] { node[concept] {}
      child[concept] { node[concept] {}}
      child[concept] { node[concept] {}}
      }
      child[concept] { node[concept] {}[clockwise from=45]
      child[concept] { node[concept] {}[clockwise from=35]
      child[concept] { node[concept] {}}
      child[concept] { node[concept] {}}
      }
      child[concept] { node[concept] {}[clockwise from=0]
      child[concept] { node[concept] {}}
      child[concept] { node[concept] {}}
      child[concept] { node[concept] {}}
      child[concept] { node[concept] {}}
      }
      }
      child[concept] { node[concept] {}[counterclockwise from=-135]
      child[concept] { node[concept] {}
      child[concept] { node[concept] {}}
      child[concept] { node[concept] {}}
      }
      child[concept] { node[concept] {}[clockwise from=0]
      child[concept] { node[concept] {}}
      }
      };
      \end{tikzpicture}`
      Questo è uno degli esempi più ramificati e si ripete due o tre volte identico.

      Rimane aperta solo una questione.
      Nel codice tikz (che qui ho riportato omettendo il testo) dovrei “spegnere” la sillabazione, ovviamente.
      Ho usato:
      `\tolerance=1
      \emergencystretch=\maxdimen
      \hyphenpenalty=10000
      \hbadness=10000`
      e funziona.

      Ora il codice è in un documento in cui la sillabazione deve essere attiva: come fare a spegnerla solo in quella decina di pagine?

      Grazie
      GG

      [OT]
      L’approccio che usi è totalmente diverso da quello che avevo pensato: non cambi i margini del testo, ma inserisci un contenitore che non si spaventa dei margini.

      Qualche tempo fa ho avuto un problema simile e, rielaborando la soluzione che mi era stata suggerita, ho provato a creare un pacchetto personale: bigfig.sty.

      bigfig.sty si usa solo con classicthesis e mette a disposizione (per ora) un solo comando : \includelargegrapics.
      Tale comando va usato tipicamente all’interno di un ambiente figure e inserisce una figura la cui larghezza è obbligatoriamente la larghezza del testo + la larghezza dedicata alle note a margine, con la particolarità di far fluire la figura nel margine esterno della pagina, che in classicthesis è abbastanza ampio. Il pacchetto riconosce anche se l’opzione di classe twoside è attiva o meno e, in caso affermativo, identifica se la pagina in cui si inserisce la figura è pari o dispari, in modo da allineare la figura a sinistra o a destra con il testo, rispettivamente.
      In realtà, come ripeto, l’idea di utilizzare i margini nonché la soluzione texnica impiegata non hanno certo la mia paternità: io ho solo “iniziato” a mettere insieme i pezzi, raccogliendoli in un pacchetto.

      `
      \NeedsTeXFormat{LaTeX2e}
      \ProvidesPackage{bigfig}[2009/11/21 v0.1 Inserting Big Figure in classicthesis]
      \RequirePackage{classicthesis-ldpkg}
      \RequirePackage{classicthesis}
      \RequirePackage{calc}
      \RequirePackage{graphicx}

      \newlength\largepage

      \makeatletter
      \newcommand*{\includelargegraphics}[1]%
      {
      \if@twoside % se twoside attiva
      \PackageInfo{bigfig}{Class option “twoside” is active.
      This differentiante the behaviour of bigfig package for even and odd pages.}
      %
      \setlength{\largepage}{\columnwidth+\marginparsep+\marginparwidth}% reset dalla dimensione
      \refstepcounter{figure}\label{d@f\thefigure}
      \ifthenelse % inizio condizionale
      {\isodd{\pageref{d@f\thefigure}}} % condizione: questa cosa è dispari
      {\centering\makebox[\textwidth][l]{\includegraphics[width=\largepage]{#1}}} % se vero
      {\centering\makebox[\textwidth][r]{\includegraphics[width=\largepage]{#1}}} % se falso
      \else % altrimenti è oneside
      \PackageInfo{bigfig}{Class option “oneside” is active.
      Even and odd pages is the same for bigfig package.}
      %
      \setlength{\largepage}{\columnwidth+\marginparwidth}% reset dalla dimensione
      {\centering\makebox[\textwidth][l]{\includegraphics[width=\largepage]{#1}}}
      \fi %fine differenza oneside vs twoside
      } % end bigfig command
      \makeatother
      `

      Cosa ne pensate?

      Nel cassetto rimane da sistemare la compatibilità con subfig e chissà cos’altro. Prima o poi…
      grazie
      GG
      [/OT]

    • #39449
      Up
      0
      Down
      ::

      La soluzione che ti ho dato è del tutto simile alla precedente, in effetti si potrebbe rendere la faccenda automatica in modo analogo.

      Qualche piccola 🙂 modifica al tuo pacchettino:
      `\NeedsTeXFormat{LaTeX2e}
      \ProvidesPackage{bigfig}[2009/11/21 v0.2 Inserting Big Figure in classicthesis]
      \RequirePackage{calc,graphicx,ifthen}

      \newcounter{bigf@largegraphics}
      \newdimen\bigf@largepage
      \AtBeginDocument{\setlength{\bigf@largepage}{%
      \columnwidth+\marginparsep+\marginparwidth}}

      \newcommand*{\includelargegraphics}[2][]{%
      \if@twoside % se twoside attiva
      \refstepcounter{bigf@largegraphics}%
      \label{bigf@\thebigf@largegraphics}%
      \ifthenelse % inizio condizionale
      {\isodd{\pageref{bigf@\thebigf@largegraphics}}}% condizione: numero dispari
      {\def\bigf@placement{l}}% se vero
      {\def\bigf@placement{r}}% se falso
      \else % altrimenti oneside
      \def\bigf@placement{l}%
      \fi %fine differenza oneside vs twoside
      \centering\makebox[\textwidth][\bigf@placement]{%
      \includegraphics[#1,width=\bigf@largepage]{#2}}}%
      } % end bigfig command`
      Non si deve mai mettere \makeatletter e \makeatother in un .sty; non vedo nemmeno perché lasciar perdere \marginparsep in “oneside”. C’erano parecchi spazi spuri e non andava bene nemmeno l’uso del contatore figure, che farebbe sballare tutte le didascalie.

      Ho aggiunto anche un argomento opzionale a \includelargegraphics per metterci anche qualche altra opzione, occorrerebbe fare qualche prova per vedere se funzionano. Dimmi che succede, magari in un altro filone. Ah, non vedo perché limitarlo a ClassicThesis: non usi nulla che lo riguardi.

      Per la questione della sillabazione:
      `\newenvironment{placetikz*}
      {\language=255 \emergencystretch=10em \placetikz}
      {\endplacetikz}`
      e in questo ambiente la sillabazione sarà spenta. Rendere infinita \hbadness e roba varia mi pare piuttosto azzardato, ma senza un esempio come si fa a verificare? 👿 🙂

      Ciao
      Enrico

    • #39450
      Up
      0
      Down
      ::

      Per la questione della sillabazione:
      `\newenvironment{placetikz*}
      {\language=255 \emergencystretch=10em \placetikz}
      {\endplacetikz}`
      e in questo ambiente la sillabazione sarà spenta. Rendere infinita \hbadness e roba varia mi pare piuttosto azzardato, ma senza un esempio come si fa a verificare? 👿 🙂

      Ciao
      Enrico

      Anche questa indicazione funziona: gli overfull hbox aumentano, il che mi pare un buon segno.

      La soluzione che usavo per “spegnere” la sillabazione, al solito, non è farina del mio sacco:
      http://www.guit.sssup.it/phpbb/viewtopic.php?t=6243

      Per il pacchetto, per il quale il suo stato embrionale non giustifica la quantità di obbrobri che – a quanto pare – conteneva (e per fortuna che mi ero limitato al copia-incolla…), farò le debite prove e mi rifarò vivo, in altra sede. Giusto per la cronaca: anche quello che ho scritto io pareva funzionare… 😯

      Per ora, grazie

    • #39451
      Up
      0
      Down
      ::


      Ancora un dubbio:
      l’ambiente che a questo punto uso per è a sé stante, ovvero non va in un ambiente figure.
      Come fare a dare comunque una didascalia e soprattutto un riferimento nella LOF?

      Grazie.

    • #39452
      Up
      0
      Down
      ::


      In riferimento all’inserimento nella lista delle figure di un riferimento alle pagine che contengono i diagrammi. ho provato con qualcosa del tipo:
      `\addcontentsline{lof}{figure}{testo da inserire}`
      e una voce viene effettivamente generata nella lof, ma non riesco a controllare il “testo da inserire” (allineamento, forma, …).
      Sto percorrendo la strada giusta?

      Grazie

    • #39453
      Up
      0
      Down
      ::

      In riferimento all’inserimento nella lista delle figure di un riferimento alle pagine che contengono i diagrammi. ho provato con qualcosa del tipo:
      `\addcontentsline{lof}{figure}{testo da inserire}`
      e una voce viene effettivamente generata nella lof, ma non riesco a controllare il “testo da inserire” (allineamento, forma, …).
      Sto percorrendo la strada giusta?

      Pacchetto caption e comando \captionof

      Ciao
      Enrico

Visualizzazione 8 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top