2009-04-06 19 views
29

Includo una tabella nel mio documento LaTeX e la centratura funziona bene se la tabella non è più larga della colonna di testo sopra di essa, ma quando il tavolo è più largo, il lato sinistro del tavolo si attacca al lato sinistro della colonna di testo e la larghezza aggiuntiva del tavolo si trova sul lato destro della pagina, come posso centrare il tavolo?Centrare un tavolo più largo della colonna di testo

risposta

1

Si sta utilizzando un documento a più colonne? Quindi, considero l'ambiente variante table*.

In un unico ambiente di colonna le opzioni gestita a:

  • Aumentare la textwidth. Ma il margine predefinito è stato scelto per motivi ergonomici, quindi questo deve essere scoraggiato al di là di un minimo aggiustamento.
  • Ridurre le dimensioni del testo nella tabella (ad esempio \small o anche \footnotesize all'interno dell'ambiente tabular). Di nuovo, questo non è ottimale.
  • Utilizzare rotating package come suggerito in the link Stephan202 gave. Ho usato questo per un paio di tavoli molto grandi nella mia tesi (con solo le opzioni di posizionamento p) e ne è venuto fuori molto bene.
31

Si consiglia di provare il pacchetto chngpage.

\documentclass{article} 

% allows for temporary adjustment of side margins 
\usepackage{chngpage} 

% provides filler text 
\usepackage{lipsum} 

% just makes the table prettier (see \toprule, \bottomrule, etc. commands below) 
\usepackage{booktabs} 

\begin{document} 

\lipsum[1]% just a paragraph of filler text 

\medskip% adds some space before the table 
\begin{adjustwidth}{-1in}{-1in}% adjust the L and R margins by 1 inch 
    \begin{tabular}{ll} 
    \toprule 
    Sequence & Wide column \\ 
    \midrule 
    First & Vestibulum porta ultricies felis. In nec mi. \\ 
    Second & Nam vestibulum auctor nibh. In eleifend, 
    lacus id tristique ullamcorper, mauris urna convallis elit. \\ 
    Third & Ut luctus nisi quam lobortis magna. Aenean sit amet odio 
    et sapien rutrum lobortis. \\ 
    Fourth & Integer dictum accumsan purus. Nullam erat ligula, 
    dictum sed, feugiat nec, faucibus id, ipsum. \\ 
    \bottomrule 
    \end{tabular} 
\end{adjustwidth} 
\medskip% adds some space after the table 

\noindent\lipsum[2]% just a paragraph of filler text 

\end{document} 

La documentazione per il pacchetto chngpage si trova nella parte inferiore del file chngpage.sty. Ho tirato fuori i documenti per l'ambiente adjustwidth:

In un contesto adjustwidth l'margini sinistro e destro possono essere regolati . L'ambiente ha un argomento opzionale e due richieste argomenti lunghezza:

\begin{adjustwidth}[]{leftmargin}{rightmargin}

A positive length value will increase the relevant margin 

(accorciando le linee di testo), mentre un valore di lunghezza negativo diminuirà margine (allungamento righe di testo). Un argomento di lunghezza vuoto significa che nessuna modifica al margine. Alla fine di l'ambiente i margini tornano a i loro valori originali.

Ad esempio, per estendere il testo nel margine destro:

\begin{adjustwidth}{}{-8em}

Qualsiasi aspetto del argomento facoltativo (anche solo []) causerà i valori dei margini per passare tra pagine dispari e pari.

Se il documento viene impostato due facciate potrebbe essere vantaggioso avere qualsiasi testo ampio estende verso il margine esterno .Ciò può essere fatto tramite l'argomento opzionale, come:

\begin{adjustwidth}[]{}{-8em}

Per avere il testo adjusted orizzontalmente centrata rispetto qualsiasi testo circostante, i margini devono essere regolate in modo uniforme:

\begin{adjustwidth}{-4em}{-4em}

+2

Ottima risposta. Un avvertimento: è meglio usare il nuovo pacchetto "changepage", che è quasi identico ma utilizza la stessa interfaccia della classe di memorie. Tutto dallo stesso autore. –

+0

Will, è vero. Ma dal momento che il pacchetto 'changepage' è così nuovo, ho usato il pacchetto' chngpage' qui, dato che viene fornito con tutte le distribuzioni LaTeX. Per Zequj, la sintassi per l'ambiente 'adjustwidth' varia leggermente tra i pacchetti' chngpage' e 'changepage'. – godbyk

+1

Questo dovrebbe funzionare anche per i tavoli lunghi? – Johnus

13

Se si utilizza un \ table float, è necessario contenere \ begin {adjustwidth} ... \ end {adjustwidth} dentro.

2

importante aggiungere, nelle figure, l'ambiente figure deve contenere l'env adjustwidth .. Inoltre, caption dovrebbe essere lasciato al di fuori di questo ambiente per allinearsi con la larghezza complessiva della figura:

latex \begin{figure}[h] \begin{adjustwidth}{-1in}{-1in}% adjust the L and R margins by 1 inch \centering \includegraphics[scale=0.44]{res/sth.png} \end{adjustwidth} \caption{sth} \label{fig:sth} \end{figure}

6

Latex: tabella di centraggio più grande della larghezza di testo

In genere, è possibile centrare le tabelle con \ center. Ma quando la tabella è più lunga di \ textwidth, sarà allineata con il margine sinistro. È possibile regolare temporaneamente la larghezza del testo.

% allows for temporary adjustment of side margins 
\usepackage{chngpage} 

\begin{table} 
    \begin{adjustwidth}{-.5in}{-.5in} 
     \begin{center} 
     \begin{tabular}{|c|} 
      \hline 
And here comes a very long line. And here comes a very long line. And here comes a very long line. \\ 
      \hline 
     \end{tabular} 

     \caption{This Table is longer than the text width. And its caption is really long, too. This Table is longer than the text width. And its caption is really long, too. This Table is longer than the text width. And its caption is really long, too. This Table is longer than the text width. } 
     \label{myTable} 
     \end{center} 
    \end{adjustwidth} 
\end{table} 
+2

Includere un riferimento esterno a un'origine ben documentata è apprezzato qui su Stack Overflow ma è importante includere nella risposta i frammenti più importanti/rilevanti dalla fonte esterna e dare un contesto su come rispondere alla domanda perché se quel collegamento va morto (il server va giù, ecc.), la tua risposta diventa inutile. – mbinette

Problemi correlati