Come numero di galleggianti in LaTeX in modo coerente?
Domanda
Ho un documento LaTeX dove vorrei la numerazione dei carri (tabelle e figure) di essere in una sequenza numerica da 1 a x piuttosto che due sequenze in base alla loro tipologia. Non sto usando liste di figure o tabelle sia e non ho bisogno di.
Il mio documentclass è relazione e in genere i miei carri hanno didascalie in questo modo:
\caption{Breakdown of visualisations created.}
\label{tab:Visualisation_By_Types}
Soluzione
Le differenze tra gli ambienti figure e table sono molto minore - poco più di loro utilizzando diversi contatori, e il mantenimento di sequenze separate
. Cioè, non c'è nulla ti impedisce di mettere i vostri ambienti {tabular}
in un {figure}
, o la grafica in un {table}
, il che significherebbe che avevano finiscono nella stessa sequenza. Il problema con questo caso (come note Joseph Wright) è che avresti dovuto regolare il \caption
, in modo che non funziona perfettamente.
Prova quanto segue, nel preambolo:
\makeatletter
\newcounter{unisequence}
\def\ucaption{%
\ifx\@captype\@undefined
\@latex@error{\noexpand\ucaption outside float}\@ehd
\expandafter\@gobble
\else
\refstepcounter{unisequence}% <-- the only change from default \caption
\expandafter\@firstofone
\fi
{\@dblarg{\@caption\@captype}}%
}
\def\thetable{\@arabic\c@unisequence}
\def\thefigure{\@arabic\c@unisequence}
\makeatother
uso \ucaption
Poi nelle tabelle e figure, invece di \caption
(cambiare il nome ad lib). Se si desidera utilizzare questa stessa sequenza in altri ambienti (ad esempio, elenchi?), Quindi definire \the<foo>
allo stesso modo.
Il mio precedente tentativo di questo è in realtà del tutto spezzato, come l'OP individuato: il sempre-the-LOF-male è, invece di essere banali e soltanto poco pratici di correzione, assolutamente fondamentale (ho, hum)
(Per gli aficionados, che avviene perché i comandi \advance
vengono elaborati in budello di TeX, ma il contenuto del .lof, .lot, e .aux file è fissato in bocca di TeX, in espansione tempo, così quello che è stato scritto per i file era qualsiasi valore casuale \@tempcnta
aveva al punto \caption
è stato chiamato, ignorando i calcoli \advance
, che sono stati poi doverosamente scritti nel file, e quindi ignorato Doh:. per quanto tempo hanno lo so, ma questo non è mai interiorizzato esso!?)
ritenzione doveroso della precedente tentativo (per il fatto che può essere istruttivo sbagliato):
Nessun problema: Prova a mettere le seguenti nel preambolo:
\makeatletter
\def\tableandfigurenum{\@tempcnta=0
\advance\@tempcnta\c@figure
\advance\@tempcnta\c@table
\@arabic\@tempcnta}
\let\thetable\tableandfigurenum
\let\thefigure\tableandfigurenum
\makeatother
... e quindi utilizzare il {table}
e ambienti {figure}
come normale. Le didascalie avranno la corretta testo 'Tabella / figura', ma faranno condividere una singola sequenza di numerazione.
Si noti che questo esempio ottiene i numeri sbagliati nelle listoffigures / listoftables, ma (a) si dice che non si cura di questo, (b) è risolvibile, anche se probabilmente leggermente poco pratici, e (c) la vita è dura!
Altri suggerimenti
Un modo rapido per farlo è quello di mettere \addtocounter{table}{1}
dopo ogni figura, e \addtocounter{figure}{1}
dopo ogni tavolo.
Non è bella, e su un documento più lungo che vorreste probabilmente a uno includere che nel vostro foglio di stile o un modello, o andare con la soluzione di cristobalito di collegare i contatori.
Non riesco a ricordare la sintassi, ma stai essenzialmente alla ricerca di contatori. Dai un'occhiata qui , sotto il costume galleggia sezione . Assegnare i contatori per entrambe le tabelle e cifre per la stessa cosa e dovrebbe funzionare.
mi basta usare un tipo di galleggiante (diciamo 'figura'), quindi utilizzare il pacchetto didascalia per rimuovere il testo aggiunto automaticamente "Figure" dalla voce e trattare con esso a mano.