Textpos e ambienti figure

  • Creatore
    Topic
  • #23406
    Up
    0
    Down
    ::


    Ciao a tutti,

    sto scrivendo una classe per i poster della mia università. I poster dovranno essere di due colonne, perciò ho scritto
    `\RequirePackage{textpos}`
    e ho definito un comando
    `\newcommand{\leftcolumn}[1]{ \begin{textblock*}{26.7cm}(0cm,12cm) #1 \end{textblock*} }`
    Quando inserisco un ambiente figure annidato dentro \leftcolumn, LaTeX sembra ignorare il comando \centering. Infatti
    `\begin{figure}
    \centering
    \includegraphics[width=.5\columnwidth]{foldsurfs}
    \caption{An invariant manifold in the upper flow hits the switching surface}
    \end{figure}`
    non centra la figura, mentre usando un ambiente center invece di \centering tutto fila per il verso giusto. Sulla guida di textpos, a pagina 4, l’autore ammette di aver modificato l’ambiente figure e table.

    Mi rassegno ad usare l’ambiente center?

    Ciao

    Daniele

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

      Ciao a tutti,

      sto scrivendo una classe per i poster della mia università. I poster dovranno essere di due colonne, perciò ho scritto
      `\RequirePackage{textpos}`
      e ho definito un comando
      `\newcommand{\leftcolumn}[1]{ \begin{textblock*}{26.7cm}(0cm,12cm) #1 \end{textblock*} }`
      Quando inserisco un ambiente figure annidato dentro \leftcolumn, LaTeX sembra ignorare il comando \centering. Infatti
      `\begin{figure}
      \centering
      \includegraphics[width=.5\columnwidth]{foldsurfs}
      \caption{An invariant manifold in the upper flow hits the switching surface}
      \end{figure}`
      non centra la figura, mentre usando un ambiente center invece di \centering tutto fila per il verso giusto. Sulla guida di textpos, a pagina 4, l’autore ammette di aver modificato l’ambiente figure e table.

      Mi rassegno ad usare l’ambiente center?

      La modifica rilevante agli ambienti è di aver annullato tutto ciò che LaTeX esegue alla fine. È possibile che con un semplice
      `\let\endfigure\par`
      nel preambolo la faccenda ti ritorni a posto. Analogo per \endtable, se usi l’ambiente table. Ma se gli oggetti non devono essere mobili e hai solo bisogno della didascalia, perché non consideri il pacchetto caption e il suo comando \captionof? (Cerca nel forum al riguardo.)

      Ciao
      Enrico

    • #23408
      Up
      0
      Down
      ::

      Ciao a tutti,

      sto scrivendo una classe per i poster della mia università. I poster dovranno essere di due colonne, perciò ho scritto
      `\RequirePackage{textpos}`
      e ho definito un comando
      `\newcommand{\leftcolumn}[1]{ \begin{textblock*}{26.7cm}(0cm,12cm) #1 \end{textblock*} }`
      Quando inserisco un ambiente figure annidato dentro \leftcolumn, LaTeX sembra ignorare il comando \centering. Infatti
      `\begin{figure}
      \centering
      \includegraphics[width=.5\columnwidth]{foldsurfs}
      \caption{An invariant manifold in the upper flow hits the switching surface}
      \end{figure}`
      non centra la figura, mentre usando un ambiente center invece di \centering tutto fila per il verso giusto. Sulla guida di textpos, a pagina 4, l’autore ammette di aver modificato l’ambiente figure e table.

      Mi rassegno ad usare l’ambiente center?

      La modifica rilevante agli ambienti è di aver annullato tutto ciò che LaTeX esegue alla fine. È possibile che con un semplice
      `\let\endfigure\par`
      nel preambolo la faccenda ti ritorni a posto. Analogo per \endtable, se usi l’ambiente table. Ma se gli oggetti non devono essere mobili e hai solo bisogno della didascalia, perché non consideri il pacchetto caption e il suo comando \captionof? (Cerca nel forum al riguardo.)

      Ciao
      Enrico

      Purtroppo \let\endfigure\par non sembra funzionare. Gli utenti di questa classe per i poster dovranno essere in grado di inserire una figura, centrarla e modificarne le dimensioni a piacimento, scrivere una didascalia e di riferisi alla figura nel testo. In generale vorrei fare in modo che gli studenti usino il più possibile i comandi di LaTeX standard. A quello che capisco, mi chiedi di fargli rinunciare all’ambiente figure e di usare un includegraphics seguito da captionof. Secondo te sarebbe ortodosso racchiudere tutto questo all’interno di un ambiente ad hoc?

      Grazie

      Daniele

    • #23409
      Up
      0
      Down
      ::

      [quote]Ciao a tutti,

      sto scrivendo una classe per i poster della mia università. I poster dovranno essere di due colonne, perciò ho scritto
      `\RequirePackage{textpos}`
      e ho definito un comando
      `\newcommand{\leftcolumn}[1]{ \begin{textblock*}{26.7cm}(0cm,12cm) #1 \end{textblock*} }`
      Quando inserisco un ambiente figure annidato dentro \leftcolumn, LaTeX sembra ignorare il comando \centering. Infatti
      `\begin{figure}
      \centering
      \includegraphics[width=.5\columnwidth]{foldsurfs}
      \caption{An invariant manifold in the upper flow hits the switching surface}
      \end{figure}`
      non centra la figura, mentre usando un ambiente center invece di \centering tutto fila per il verso giusto. Sulla guida di textpos, a pagina 4, l’autore ammette di aver modificato l’ambiente figure e table.

      Mi rassegno ad usare l’ambiente center?

      La modifica rilevante agli ambienti è di aver annullato tutto ciò che LaTeX esegue alla fine. È possibile che con un semplice
      `\let\endfigure\par`
      nel preambolo la faccenda ti ritorni a posto. Analogo per \endtable, se usi l’ambiente table. Ma se gli oggetti non devono essere mobili e hai solo bisogno della didascalia, perché non consideri il pacchetto caption e il suo comando \captionof? (Cerca nel forum al riguardo.)

      Ciao
      Enrico

      Purtroppo \let\endfigure\par non sembra funzionare. Gli utenti di questa classe per i poster dovranno essere in grado di inserire una figura, centrarla e modificarne le dimensioni a piacimento, scrivere una didascalia e di riferisi alla figura nel testo. In generale vorrei fare in modo che gli studenti usino il più possibile i comandi di LaTeX standard. A quello che capisco, mi chiedi di fargli rinunciare all’ambiente figure e di usare un includegraphics seguito da captionof. Secondo te sarebbe ortodosso racchiudere tutto questo all’interno di un ambiente ad hoc?[/quote]
      E noi sbattiamo via l’ambiente figure bacato di \textpos e ce lo ricreiamo in modo che faccia ciò che ci interessa (ci si può mettere \centering o no, è indifferente).
      `\usepackage{textpos}
      \usepackage{caption}
      \renewenvironment[1][]{figure}
      {\def\caption{\captionof{figure}}\center}
      {\endcenter}`
      Naturalmente così la figura non “galleggia”, ma in un poster non è importante, le cose vanno disposte a mano.

      Ciao
      Enrico

    • #23410
      Up
      0
      Down
      ::


      Enrico, grazie mille, funziona. A beneficio dei posteri, metto i miei due nuovi ambienti: il tuo mi dava un errore, credo tu abbia invertito (per fretta) la posizione di figure

      `\renewenvironment{figure}[1][]
      {\def\caption{\captionof{figure}}\center}
      {\endcenter}

      \renewenvironment{table}[1][]
      {\def\caption{\captionof{table}}\center}
      {\endcenter}`

      Grazie mille

      Daniele

    • #23411
      Up
      0
      Down
      ::


      Sto usando gli ambienti definiti sopra (diciamo figure, per esempio). Ho notato che se li uso con

      `\begin{figure}
      \centering
      \includegraphics[width=.7\columnwidth]{nomeFigura}
      \caption{Una didascalia}
      \label{Una label}
      \end{figure}`
      tutto funziona bene. Se però voglio mettere una didascalia prima della figura (come si farebbe in una tabella, per esempio), uso
      `\begin{figure}
      \centering
      \caption{Una didascalia}
      \includegraphics[width=.7\columnwidth]{nomeFigura}
      \label{Una label}
      \end{figure}
      `
      e la figura non viene più centrata. Sbaglio qualcosa di fondamentale o sono i comandi che non funzionano?

    • #23412
      Up
      0
      Down
      ::

      Sto usando gli ambienti definiti sopra (diciamo figure, per esempio). Ho notato che se li uso con

      `\begin{figure}
      \centering
      \includegraphics[width=.7\columnwidth]{nomeFigura}
      \caption{Una didascalia}
      \label{Una label}
      \end{figure}`
      tutto funziona bene. Se però voglio mettere una didascalia prima della figura (come si farebbe in una tabella, per esempio), uso
      `\begin{figure}
      \centering
      \caption{Una didascalia}
      \includegraphics[width=.7\columnwidth]{nomeFigura}
      \label{Una label}
      \end{figure}
      `
      e la figura non viene più centrata. Sbaglio qualcosa di fondamentale o sono i comandi che non funzionano?

      È strano che funzioni, perché a me non funziona affatto. 👿
      `\usepackage{caption}
      \makeatletter
      \let\@@@caption\caption
      \caption@AtBeginDocument{%
      \def\captionof{\caption@teststar\caption@of{\@@@caption*}\@@@caption}}
      \makeatother

      \renewenvironment{figure}[1][]
      {\def\caption{\captionof{figure}}\center}
      {\endcenter}`
      Altrimenti si definisce \caption in termini di sé stessa. Aggiorna il pacchetto caption, ci sono state parecchie modifiche.

      Ciao
      Enrico

    • #23413
      Up
      0
      Down
      ::


      Enrico, questa è la mia classe (sono pronto ad essere fustigato…). Quando inserisco il tuo codice, di cui ovviamente non capisco un accidente, la compilazione non va a buon fine: Undefined control sequence. \caption@AtBeginDocument

      `\NeedsTeXFormat{LaTeX2e}[1994/12/01]
      \ProvidesClass{bcanmposter}
      [2008/03/14 A Poster Class for BACNM, University of Bristol]

      % DECLARING OPTIONS —————————————————————-
      \DeclareOption{nobanners}{}
      \ProcessOptions\relax

      % LOADING A0POSTER CLASS ———————————————————–
      \LoadClass[a1,portrait]{a0poster}

      % LOAD PACKAGES —————————————————————-
      \RequirePackage{graphicx}
      \RequirePackage{ifthen}
      \RequirePackage{textpos}
      \RequirePackage{color}
      \RequirePackage{caption}

      % COLORS —————————————————————————
      \definecolor{bcanmDarkGrey}{rgb}{0.1568,0.1568,0.1568}
      \definecolor{bcanmPervinca}{rgb}{0.1290,0.3533,0.3333}

      % PAGE LAYOUT ———————————————————————-
      \pagestyle{empty}
      \color{bcanmDarkGrey}
      \setlength{\parindent}{0pt}
      \setlength{\tabcolsep}{0pt}
      \setlength{\oddsidemargin}{0pt}
      \setlength{\evensidemargin}{0pt}

      \newcommand{\leftcolumn}[1]{%
      \begin{textblock*}{26.7cm}(0cm,12cm) #1 \end{textblock*}}

      \newcommand{\rightcolumn}[1]{%
      \begin{textblock*}{26.7cm}(27.9cm,12cm) #1 \end{textblock*}}

      % TITLE, AUTHORS ETC.—————————————————————
      \newcommand{\defaulttitle} {}
      %\newcommand{\defaultauthor} {}
      %\newcommand{\defaultaddress}{}
      %\newcommand{\defaultemail} {}

      \providecommand{\title} [1]{#1}
      %\providecommand{\author} [1]{#1}
      %\providecommand{\address}[1]{#1}
      %\providecommand{\email} [1]{#1}

      \renewcommand{\title} [1]{\renewcommand{\defaulttitle} {#1}}
      %\renewcommand{\author} [1]{\renewcommand{\defaultauthor} {#1}}
      %\renewcommand{\address}[1]{\renewcommand{\defaultaddress}{#1}}
      %\renewcommand{\email} [1]{\renewcommand{\defaultemail} {#1}}

      % MAKE TITLE, HEADER AND FOOTER —————————————————-
      \newcommand\makeheader{%
      \begin{textblock*}{\paperwidth}(-2.55cm,-3.0cm)
      \includegraphics[width=\paperwidth]{poster-skel-top}
      \end{textblock*}}

      \newcommand\makefooter{%
      \begin{textblock*}{\paperwidth}(-2.55cm,77.25cm)
      \includegraphics[width=\paperwidth]{poster-skel-bottom}
      \end{textblock*}}

      \renewcommand{\maketitle}{%
      \begin{textblock*}{\paperwidth}(-2.55cm,-2.88cm)
      \includegraphics[width=\paperwidth]{title-image}
      \end{textblock*}
      \begin{textblock*}{\textwidth}(2cm,4.5cm)
      \ifthenelse{\equal{\defaulttitle} {}} {} {{\Large \color{bcanmPervinca} \textbf{\defaulttitle}}}
      \end{textblock*}
      }

      % SECTIONING ———————————————————————–
      \makeatletter
      \renewcommand\section{\@startsection{section}{2}{\z@}%
      {-3.25ex\@plus -1ex \@minus -.2ex}%
      {1.5ex \@plus .2ex}%
      {\raisebox{-.3cm}{\includegraphics[scale=0.8]{enm-logo}\hspace{.5em}}\normalfont\large\bfseries}}
      \makeatother

      % FIGURES AND TABLES—————————————————————
      \makeatletter
      \let\@@@caption\caption
      \caption@AtBeginDocument{%
      \def\captionof{\caption@teststar\caption@of{\@@@caption*}\@@@caption}}
      \makeatother

      \renewenvironment{figure}[1][]
      {\def\caption{\captionof{figure}}\center}
      {\endcenter}

      \renewenvironment{table}[1][]
      {\def\caption{\captionof{table}}\center}
      {\endcenter}`

      I punti in cui riconosco persino da solo di aver fatto porcate sono nel ridefinire il comando di sezione (per aggiungere il logo del dipartimento) e gli ifthenelse. Avevo già provato a sollecitare commenti sul forum a riguardo della classe ma non avevo ricevuto risposta.

      Seconda osservazione: uso MacTeX e i pacchetti caption e capition3 sembrano abbastanza recenti, come puoi vedere dal mio .log. Gli altri utenti della classe saranno vincolati ad usare la stessa versione di caption? Nel mio dipartimento utilizzano ancora tetex.

      `(/usr/local/texlive/2007/texmf-dist/tex/latex/caption/caption.sty
      Package: caption 2007/01/07 v3.0k Customising captions (AR)

      (/usr/local/texlive/2007/texmf-dist/tex/latex/caption/caption3.sty
      Package: caption3 2007/01/07 v3.0k caption3 kernel (AR)`

      Grazie ancora.

    • #23414
      Up
      0
      Down
      ::

      Enrico, questa è la mia classe (sono pronto ad essere fustigato…). Quando inserisco il tuo codice, di cui ovviamente non capisco un accidente, la compilazione non va a buon fine: Undefined control sequence. \caption@AtBeginDocument

      Aggiungi, subito prima
      `\@ifundefined{caption@AtBeginDocument}
      {\let\caption@AtBeginDocument\AtBeginDocument}{}`
      Ciao
      Enrico

    • #23415
      Up
      0
      Down
      ::


      Grazie mille, ora funziona.

      Daniele

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

Go to top