LaTeX/Табеле

Извор: Викикњиге
Иди на навигацију Иди на претрагу

Табеле су заједничка карактеристика у академском писању. Често се користе за сумирање резултата истраживања. За овладавање уметности градња табела у LaTeX-у неопходно је да се произведу квалитетни радови и да се са довољном праксом могу штампати прелепе табеле, било које врсте.

Имајући у виду да LaTeX није табеларни, има смисла да се користи наменски алат за изградњу табела, а затим да се табеле иѕбацују у документ. Основне табеле нису превише опорезујуће, али све напредније захтевају мало конструкције; у овим случајевима, напреднији пакети могу бити веома корисни. Међутим, прво је важно да знате основе. Када сте задовољни са основним ЛаТеХ табелама, можда ћете морати погледати напредније пакете или извозне опције за вашу омиљену табелу. Захваљујући модуларном природи LaTeX-а, цео процес може да буде аутоматизован у прилично удобан начин.

Већ дуже време, LaTeX табеле су биле прилично хаотично тема, са десетинама пакета који су радили сличне ствари, док нису увек били компатибилни један са другим. Понекад сте морали да извршите компромис. Ситуација се недавно (2010. године) променила са објављивањем tabu пакета који комбинује снагу longtable, tabularx и још много тога. tabu окружење је далеко мање фрагилно и ограничено од старијих алтернатива. Ипак, пре него што покушате да користите овај пакет по први пут ће бити од користи да разумемо како класична животна средина ради, јер tabu функционише на исти начин. Имајте на уму, међутим, да је tabu аутор неће поправити грешке на тренутној верзији, а да је следећа верзија уводи нову синтаксу која ће вероватно разбити постојеће документе.

Садржај

Окружење табела[уреди]

tabular окружење може да се користи за typeset табеле са изборним хоризонталним и вертикалним линијама. LaTeX одређује ширину колона аутоматски.

Први ред окружења има следећу форму:

\begin{tabular}[pos]{table spec}

table spec аргумент говори LaTeX-у које ће поравњење да буде коришћено у свакој таелии које ће вертикалне линије убацити.

Број колона не мора да буде одређен јер се види гледањем броја датих аргумената. Такође, могуће је да се додају вертикалне линије иѕмеђу колона. Следећим симболима је могуће описати колоне табеле(неке од њих захтевају да пакет array буде учитан):

l лево-оправдана колона
c центрирана колона
r десно-оправдана колона
p{'width'} колона параграфа са текстом вертикално постављеним на врху
m{'width'} колона параграфа са текстом вертикално постављеним на средини (захтева array package)
b{'width'} колона параграфа са текстом вертикално постављеним на дну (захтева array package)
| вертикална линија
|| дупла вертикална линија

По дифолту(подразумевано), ако је текст у колони превише широк за страницу, LaTeX га неће аутоматски пребацити. Користећи p{'width'} можете дефинисати специјалан тип колоне који ће пребацити текст као у нормалном параграфу. Можете поставити ширину коришћењем било које јединице које подржава LaTeX, као што су 'pt' и 'cm', или command lengths као што су \textwidth. Можете пронаћи листу у поглављу Дужине.

Изборни параметар pos може да се користи за одређивање вертикалних позиција табела у односу на основну линију окружујућег текста. У већини случајева, неће вам требати ова опција. Постаје релевантана само ако ваша тебела није у посебном параграфу. Можете користити следећа слова:

b дно
c центар (default)
t врх

Да би се одредио формат фонта ( као што је bold, italic, итд. ) за целу колону можете додати >{\format} пре него то декларишете равнање. На пример \begin{tabular}{ >{\bfseries}l c >{\itshape}r } ће указивати на табелу са три колоне са првом колоном поравнаном лево и у bold фонту, са другом поравнаном у центру, у normal фонту и са трећом поравнаном десно, у italic фонту. "array" пакет мора прво бити активиран у уводу за наведено да би радило.

У првом реду указали сте на то колико колона желите, њихово поравнање и вертикалне линије које их одвајају. Када сте већ у окружењу, морате убацити текст који желите, одвајајући их по ћелијама и убацивајући нове редове. Комадне које морате користити су следеће:

& радвајач колона
\\ почети нови ред (додатни простор ће бити одређен након \\ коритећи велике заграде, као што су \\[6pt])
\hline хоризонтална линија
\newline почети нови ред у оквиру ћелије (у колони параграфа)
\cline{i-j} парцијална хоризонтална линија почиње у колони i и завршава се у колони j

Напомена: било који празан простор убачен између ових команди је опционалан. Ја лично додајем просторе између да би било читкије.

Основни примери[уреди]

Ови примери показују како направити просту табелу у LaTeX-у. То је 3x3 табела, али без линија.

\begin{tabular}{ l c r }
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
\end{tabular}

Надограђујући на то укључивањем неких вертикалних линија:

\begin{tabular}{ l | c || r }
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
\end{tabular}

Да би додали хоризонталне линије на сам врх и дно табеле:

\begin{tabular}{ l | c || r }
  \hline			
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
  \hline  
\end{tabular}

И коначно, да би додали линије између свих редова, као и да би центрирали (приметите употребу центра окружења - наравно, резултат овога није очигледан на прегледу на овој web страници):

\begin{center}
  \begin{tabular}{ l | c || r }
    \hline
    1 & 2 & 3 \\ \hline
    4 & 5 & 6 \\ \hline
    7 & 8 & 9 \\
    \hline
  \end{tabular}
\end{center}

\begin{center}
  \begin{tabular}{ | l || c ||| r }
    \hline
    1 & 2 & 3 \\ \hline
    4 & 5 & 6 \\ \hline \hline
    7 & 8 & 9 \\
    \hline
  \end{tabular}
\end{center}

\begin{tabular}{|r|l|}
  \hline
  7C0 & хексадецимални \\
  3700 & октални \\ \cline{2-2}
  11111000000 & бинарни \\
  \hline \hline
  1984 & децимални \\
  \hline
\end{tabular}

Latex example tabular cline.svg

Пребацивање текста у нови ред у табелама[уреди]

LaTeX-ови алгоритми за форматирање табела имају пар недостатака. Један је тај да неће аутоматски пребацити текст у ћелијама, чак и ако пређе ширину странице. За колоне које садрже текст чија дужина прелази ширину колоне, препоручује се да се користи p атрибут и да се одреди жељена ширина колоне (иако је можда потребно мало покушаја и погрешке да би постигли жељени резултат). За мало лакшу методу, погледајте Пакет tabularx или Пакет tabulary.

Уместо p, киристите m атрибут да бисте поравнали линије према средини кутије или b атрибут да бисте поравнали уз дно кутије.

Ево простог примера. Следећи код ствара две табеле са истим кодом; једина разлика је у томе што последња колона друге табеле има дефинисану ширину од 5cm, док у првој није одрешена ширина. Састављајући овај код:

\documentclass{article} 
\usepackage[english]{babel}

\begin{document}

Без одређивања ширине за последњу колону: 
\begin{center}
    \begin{tabular}{| l | l | l | l |}
    \hline
    Day & Min Temp & Max Temp & Summary \\ \hline
    Monday & 11C & 22C & A clear day with lots of sunshine.
    However, the strong breeze will bring down the temperatures. \\ \hline
    Tuesday & 9C & 19C & Cloudy with rain, across many northern regions. Clear spells 
    across most of Scotland and Northern Ireland, 
    but rain reaching the far northwest. \\ \hline
    Wednesday & 10C & 21C & Rain will still linger for the morning. 
    Conditions will improve by early afternoon and continue 
    throughout the evening. \\
    \hline
    \end{tabular}
\end{center}

Са одређеном ширином:
\begin{center}
    \begin{tabular}{ | l | l | l | p{5cm} |}
    \hline
    Day & Min Temp & Max Temp & Summary \\ \hline
    Monday & 11C & 22C & A clear day with lots of sunshine.  
    However, the strong breeze will bring down the temperatures. \\ \hline
    Tuesday & 9C & 19C & Cloudy with rain, across many northern regions. Clear spells 
    across most of Scotland and Northern Ireland, 
    but rain reaching the far northwest. \\ \hline
    Wednesday & 10C & 21C & Rain will still linger for the morning. 
    Conditions will improve by early afternoon and continue 
    throughout the evening. \\
    \hline
    \end{tabular}
\end{center}

\end{document}

Ви добијате следећи резултат:

Latex example wrapped table.svg

Приметите да је прва табела исечена, пошто је резултат шири од странице.

Размак између колона[уреди]

Да подесити размак између стубова (LaTeX ће подразумевано да изабере веома уске колоне), можете изменити поделу колоне: \setlength{\tabcolsep}{5pt}. Подразумевана вредност је 6pt.

Размак између редова[уреди]

Поново дефинисати \arraystretch команду да подесите размак између редова:

\renewcommand{\arraystretch}{1.5}

Подазумевана вреност је 1.0. Алтернативни начин да подесите правило размака је да додате \noalign{\smallskip} пре или после команде \hline и \cline{i-j}:

\begin{tabular}{ | l | l | r | }
  \hline\noalign{\smallskip}
  \multicolumn{2}{c}{Item} \\
  \cline{1-2}\noalign{\smallskip}
  Животиња & Објашњење & Цена (\$) \\
  \noalign{\smallskip}\hline\noalign{\smallskip}
  Gnat  & per gram & 13.65 \\
        & сваки    &  0.01 \\
  Gnu   & пуњено   & 92.50 \\
  Emu   & пуњено   & 33.33 \\
  Armadillo & замрзнуто & 8.99 \\
  \noalign{\smallskip}\hline
\end{tabular}

Можете такође одредити корак после линије експлицитно корисећи лепак после линије у терминатору

\begin{tabular}{ll}
\hline
Минерал & Боја \\[1cm]
Рубин & Црвено \\
Сафир & Плаво \\
\hline
\end{tabular}

Остала окружења унутар табеле[уреди]

Ако ористите нека LaTeX окружења унутар ћелија табеле, као што су verbatim или enumerate:

\begin{tabular}{c c}
	\hline
	\begin{verbatim}
	code
	\end{verbatim}
	& description
 	\\ \hline
\end{tabular}

Можда ћете наићу на грешке попут: ! LaTeX Error: Something's wrong--perhaps a missing \item. Да би решили овај проблем, промените спецификатор колоне у "параграф" (p, m или b).

\begin{tabular}{m{5cm} c}

Дефинисање више колона[уреди]

Могућеје да се дефинише много идентичних колона одједном користећи *{num}{str} синтаксу. Ово је практично корисно када ваша табела има много колона. Овде је табела са шест центрираних колона запоседнутих једном колоном на свакој страни:

\begin{tabular}{l*{6}{c}r}
Тимови              & P & W & D & L & F  & A & Pts \\
\hline
Manchester United & 6 & 4 & 0 & 2 & 10 & 5 & 12  \\
Celtic            & 6 & 3 & 0 & 3 &  8 & 9 &  9  \\
Benfica           & 6 & 2 & 1 & 3 &  7 & 8 &  7  \\
FC Copenhagen     & 6 & 2 & 1 & 3 &  5 & 8 &  7  \\
\end{tabular}

Latex example defining multiple columns.svg

Одређивање колонакорићењем >{\cmd} и <{\cmd}[уреди]

Одређивање колона може бити измењено користећи пакет array. Ово је одређено у аргумену окружења табела користећи >{\command} за команде извршене управо пре сваког елемента колоне и <{\command} за команде извршене управо после сваког елемента колоне На пример: да би добили низ у математичком моду унесите: \begin{tabular}{>{$}c<{$}}. Други пример мења фонт: \begin{tabular}{>{\small}c} да одштампате колону у малом фонту. Одређивање агрумент > и < мора бити исправно балансирано када дође до { и } карактера. Ово значи да је >{\bfseries} валидно, док >{\textbf} не ради и >{\textbf{} ниеј валидно. Ако постоји потреба да се користи текст табеле као аргумент (за инстанцу, користећи \textbf да даје продукт текста у стилу bold), може се користити \bgroup и \egroup команда: >{\textbf\bgroup}c<{\egroup} даје жељени резултат. Ово ради само за неке основне LaTeX команде. За остале команде, као што су \underline за подвлачење текста, неопходно је да привремено сместите текст колоне у кутију користећи lrbox. Прво,морате дефинисати кутију са \newsavebox{\boxname} и онда можете одредити:

>{\begin{lrbox}{\boxname} }%
l%
<{\end{lrbox}%
  \underline{\unhbox\boxname} }%
 }

Овај код складишти текст у кутију и потом узима текст из кутије са \unhbox (ово уништава кутију, а ако је кутија наново потребна може се користити \unhcopy) и пролази кроз \underline. (За LaTeX2e,можда ћете жеети да користите \usebox{\boxname} уместо \unhbox\boxname.) Ови исти трикови одрађени помоћу \raisebox уместо \underline могу присилити линије у табли да имају једнку висину, уместо природно различите висине која се може појавити када се e.g. математички термини или суперскрипте појаве у тексту. Овде је пример који показује оба p{...} и >{\centering} :

\begin{tabular}{>{\centering}p{3.5cm}<{\centering}p{3.5cm} }
Геометрија  & Алгебра
\tabularnewline
\hline
 Оцена & Додатак 
\tabularnewline
 Сфере & множење
\end{tabular}

Можете још и приметити коришћење \tabularnewline уместо \\ да би се избегла Misplaced \noalign грешка.

@-изрази[уреди]

Одређивање размака између колона може бити обављено користећи се @{...} конструкцијом. То типично узима неки тексткао аргумент и када се ојави у колони аутоматски ће да убаци тај текст у сваку ћелију у тој колову пре стварних података за ту ћелију. Конда убија размак унутар ћелије и замењује га са било чим што је између витичастх заграда. Да и се додао размак користите @{\hspace{''width''}}. Одмах потом, је ово није сасвим јасно, па захтева даља појашњења. Понекад, ово је пожељно у научним табелама да се имају децимални бројеви са правилно поређаним зарезима. Ово се може постићи на следећи начин:

\begin{tabular}{r@{.}l}
  3   & 14159 \\
  16  & 2     \\
  123 & 456   \\
\end{tabular}

Квалитети просторног сузбијања из @-expression заправо их чине сасвим корисних за манипулацију хоризонталног размака између колона. С обзиром на основну табелу и различите описе колона:

\begin{tabular}{ |l|l| }
  \hline
  stuff & stuff \\ \hline
  stuff & stuff \\
  \hline
\end{tabular}
{|l|l|}

Specifier1.svg

{|@{}l|l@{}|}

Specifier2.svg

{|@{}l@{}|l@{}|}

Specifier3.svg

{|@{}l@{}|@{}l@{}|}

Specifier4.svg

Усклађивање колоне у децималној тачки коритећи dcolumn[уреди]

Уместо коришћења @-expressions да би се изградиле колоне децимала изграђене на децималним зарезима (или еквивалнтни симболи), могуће је центрирање колоне по децималном раздвајању користећи dcolumn пакет, који даје нову колону оређену за највише покатке тачака. Погледајте dcolumn package documentation за више информација, али прост начин за коришћење dcolumn је следећи.

\usepackage{dcolumn}
\ldots
\newcolumntype{d}[1]{D{.}{\cdot}{#1} }
%аргумент d одеђује максимални број децималних места
\begin{tabular}{l r c d{1} }
Лево&Десно&Центар&\mathrm{Decimal}\\
1&2&3&4\\
11&22&33&44\\
1.1&2.2&3.3&4.4\\
\end{tabular}

LaTeX example dcolumn.png

Аргумент који предвиђа број децималних места у новом типу колоне омогућава неограничена децимална места, али може довести до веома широке колоне. Заокруживање се не примењује, тако да подаци буду уредни треба прилагодити наведеном броју децималних места. Имајте на уму да се децимално поравнате колоне слажу у режиму математике, отуда употреба \mathrm за колоне у горњем примеру. Такође, текст у децимално поравнатој колони (на пример заглавље ће бити десно поравнато пре децималног раздвајања (под претпоставком да нема децималног раздвајања у тексту). Иако ово може бити добро за врло кратак текст, или за бројеве нумеричких колона, изгледа гломазно у горњем примеру. Решење за ово је да користите \multicolumn команду описану у наставку, наводећи једну колону и њено усклађивање. На пример, до центра заглавља Децимални због њене колоне у претходном примеру, прва линија табеле би била Left&Right&Center&\multicolumn{1}{c}{Decimal}\\

Болдирани текст и dcolumn[уреди]

Да би се скренула пажња на одређене ставке у табели, може бити лепо да се користите болдираним текстом. Обично је ово лако, али dcolumn који треба да види децимални зарез прилично му је теже да уради. Поред тога, уобичајени болдирани карактери су шири од њихових нормалних облика, што значи да иако се децимала може ускладити лепо, бројке (за више од 2 до 3 цифре на једној страни децималног зареза) ће бити видно поравнате. Међутим, могуће је користити нормалну ширину смелих карактера и храбро дефинисати нови тип колоне, као што је приказано у наставку

\usepackage{dcolumn}
%овде ми подешавамо верзију математичких фонтова са нормалном x-ширином
\DeclareMathVersion{nxbold} 
\SetSymbolFont{operators}{nxbold}{OT1}{cmr} {b}{n}
\SetSymbolFont{letters}  {nxbold}{OML}{cmm} {b}{it}
\SetSymbolFont{symbols}  {nxbold}{OMS}{cmsy}{b}{n}
\begin{document}
\makeatletter
\newcolumntype{d}{D{.}{.}{-1} } %decimal column as before
%широка болдиране колоне децимала
\newcolumntype{B}[3]{>{\boldmath\DC@{#1}{#2}{#3} }c<{\DC@end} } 
%нормала ширина болдиране колоне децимала
\newcolumntype{Z}[3]{>{\mathversion{nxbold}\DC@{#1}{#2}{#3} }c<{\DC@end} } 
\makeatother
\begin{tabular}{l l d}
    Тип &M & \multicolumn{1}{c}{N} \\
    Нормано & 1 & 22222.222 \\
    Болдирано (standard)&10 & \multicolumn{1}{B{.}{.}{-1} }{22222.222}\\
    Болдирано (nxbold)&100 & \multicolumn{1}{Z{.}{.}{-1} }{22222.222}\\
\end{tabular}
\end{document}

LaTeX example dcolumn bold.png

Одређивање редова[уреди]

Можда би било згодно да се примени иста команда над свакој ћелији редом, као и за колоне. Нажалост tabular околина не може то да уради по дефолту. Ми ћемо морати да користимо tabu уместо, који даје \rowfont опција.

\begin{tabu}{XX}
\rowfont{\bfseries\itshape\large} Header1 & Header2 \\
\hline
Cell2 & Cell2
\end{tabu}

Обухватање[уреди]

Да бисте довршили овај туторијал, узећемо брзо да погледамо како да генеришемо сложеније табеле. Не изненађује, команде неопходне морају бити уграђене у подацима саме табеле.

Обухватање редова више колона[уреди]

Команда за то изгледа овако: \multicolumn{'num_cols'}{'alignment'}{'contents'}. num_cols је број накнадних колона за спајање; alignment је или l, c, r, или да има прелом текста који одређује ширину p{5.0cm} и contents су једноставно стварни подаци за које желите да се налазе унутар те ћелије. Једноставан пример:

\begin{tabular}{ |l|l| }
  \hline
  \multicolumn{2}{|c|}{Team sheet} \\
  \hline
  GK & Paul Robinson \\
  LB & Lucas Radebe \\
  DC & Michael Duberry \\
  DC & Dominic Matteo \\
  RB & Dider Domi \\
  MC & David Batty \\
  MC & Eirik Bakke \\
  MC & Jody Morris \\
  FW & Jamie McMaster \\
  ST & Alan Smith \\
  ST & Mark Viduka \\
  \hline
\end{tabular}

Multicolumn.svg

Редови који обухватају више колона[уреди]

Прва ствар коју треба да урадите је да додате \usepackage{multirow} у уводу [1]. Ово даје команду која је потребна за обухватање редова: \multirow{''num_rows''}{''width''}{''contents''}. Аргументи су прилично прости да се им се утврди порекло (* за ширину се мисли на физичку ширину садржаја).

...
\usepackage{multirow}
...
\begin{tabular}{ |l|l|l| }
\hline
\multicolumn{3}{ |c| }{Team sheet} \\
\hline
Goalkeeper & GK & Paul Robinson \\ \hline
\multirow{4}{*}{Defenders} & LB & Lucas Radebe \\
 & DC & Michael Duburry \\
 & DC & Dominic Matteo \\
 & RB & Didier Domi \\ \hline
\multirow{3}{*}{Midfielders} & MC & David Batty \\
 & MC & Eirik Bakke \\
 & MC & Jody Morris \\ \hline
Forward & FW & Jamie McMaster \\ \hline
\multirow{2}{*}{Strikers} & ST & Alan Smith \\
 & ST & Mark Viduka \\
\hline
\end{tabular}

Multirow.svg

Главна ствар на уму када користите\multirow је да празан унос мора бити убачен за сваку одговарајућу ћелију у сваком наредном реду да би се обухватила. Аконе постоји информација о ћелији, онданишта не пишите, али вам и даље треба "&" одвајајући га од следеће информацијео колони. If there is no data for a cell, just don't type anything, but you still need the "&" separating it from the next column's data. Мудар читалац ће већ закључили да за табелу колона, не мора увек бити амперсандс(енгл.) у сваком реду (осим ако је \multicolumn у употреби).

Обухватање истовремено у оба смера[уреди]

Овде је нетривијални пример како користити просторе у оба смера истовремено и како имати правилно извучене границе ћелија

\usepackage{multirow}
\begin{tabular}{cc|c|c|c|c|l}
\cline{3-6}
& & \multicolumn{4}{ c| }{Primes} \\ \cline{3-6}
& & 2 & 3 & 5 & 7 \\ \cline{1-6}
\multicolumn{1}{ |c  }{\multirow{2}{*}{Powers} } &
\multicolumn{1}{ |c| }{504} & 3 & 2 & 0 & 1 &     \\ \cline{2-6}
\multicolumn{1}{ |c  }{}                        &
\multicolumn{1}{ |c| }{540} & 2 & 3 & 1 & 0 &     \\ \cline{1-6}
\multicolumn{1}{ |c  }{\multirow{2}{*}{Powers} } &
\multicolumn{1}{ |c| }{gcd} & 2 & 2 & 0 & 0 & min \\ \cline{2-6}
\multicolumn{1}{ |c  }{}                        &
\multicolumn{1}{ |c| }{lcm} & 3 & 3 & 1 & 1 & max \\ \cline{1-6}
\end{tabular}

Multirowandcolumnexample.svg

Команда \multicolumn{1}{ се само користи за цртање вертикалне границе и на левој и на десној страни ћелије. Чак и када се комбинује са \multirow{2}{*}{...}, ипак исписује вертикалне границе које обухватају само први ред. Као надокнада за то додамо \multicolumn{1}{ у следећим редовима обухваћених у више редова. Имајте на уму да не можемо једноставно користити \hline за цртање хоризонталних линија, јер не желимо да се линија исцрта преко текста који се протеже на неколико редова. Уместо тога, користите наредбу \cline{2-6} и искључите прву колону која садржи текст "Силе". Ево још једног примера искоришћавања исте идеје да би се направила позната и популарна "2x2" или двострука дихотомија:

\begin{tabular}{ r|c|c| }
\multicolumn{1}{r}{}
 &  \multicolumn{1}{c}{noninteractive}
 & \multicolumn{1}{c}{interactive} \\
\cline{2-3}
massively multiple & Library & University \\
\cline{2-3}
one-to-one & Book & Tutor \\
\cline{2-3}
\end{tabular}

Latex-tables-double-dichotomy-example.svg

Контола величине табеле[уреди]

Променa величинe табела[уреди]

graphicx} пакет карактерише \resizebox{width}{height}{object} који се може користити са tabular да одредите висину и ширину табеле. Следећи пример показује како да промените величину табеле на 8cm ширине задржавајући оригинални однос ширина / висина.

\usepackage{graphicx}
% ...
\resizebox{8cm}{!} {
  \begin{tabular}...
  \end{tabular}
}

Промена табеле укључујући назив

\begin{table}[h]
\resizebox{1.4\textwidth}{!}{\begin{minipage}{\textwidth}
\begin{tabular}{r|c|c|}
& \multicolumn{1}{c}{noninteractive}
& \multicolumn{1}{c}{interactive} \\
\cline{2-3}
масовно вишетруко & Библиотека & Универзитет \\
\cline{2-3}
један-један & Књига & Учитељ \\
\cline{2-3}
\end{tabular}
\caption[Table caption text]{Table taken from \cite[p.10]{refid} }
\label{table:name}
\end{minipage} }
\end{table}

Алтернативно, можете користити \scalebox{ratio}{object} на исти начин, али са показатељима више него фиксне величине:

\usepackage{graphicx}
% ...
\scalebox{0.7}{
  \begin{tabular}...
  \end{tabular}
}

Промена величине фонта

Табела може да се глобално пребаци на другу величину фонта једноставним додавањем команде за жељену величину (овде: \footnotesize) у оквиру табеле, која може бити после \begin{table} саопштења ако користите foats(енгл.), иначе морате да додате граничник групе.

{\footnotesize
  \begin{tabular}{| r | r || c | c | c |}
      % ...
  \end{tabular}
}
\begin{table}[h]\footnotesize
  \caption{Performance at peak F-measure}
  \begin{tabular}{| r | r || c | c | c |}
      % ...
  \end{tabular}
\end{table}

Алтернативно, можете да промените подразумевани фонт за све табеле у документу постављањем следећег кода у уводу:

\let\oldtabular\tabular 
\renewcommand{\tabular}{\footnotesize\oldtabular}

Погледајте Фонтове да би именовали величине фонтова. Величине фонтова натписа табеле не утиче. За контролу величине фонта натписа, погледајте Фигуре и натписе.

Боје

Алтернативне боје колона у табелама

xcolor пакет пружа неопходне команде за производњу табеле са алтернативним бојама редом, када је убачено tableопција. Команда \rowcolors{<''starting row''>}{<''odd color''>}{<''even color''>} мора бити наведена у реду пре него што tabular окружење почне.

\documentclass{article}
\usepackage[table]{xcolor}
\begin{document}
\begin{center}
\rowcolors{1}{green}{pink}
\begin{tabular}{lll}
odd 	& odd 	& odd \\
even 	& even 	& even\\
odd 	& odd 	& odd \\
even 	& even 	& even\\
\end{tabular}
\end{center}
\end{document}
LaTeXAlternateRowTable.svg

Команда \hiderowcolors је на располагању да се деактивира наглашавајући је из одређеног реда до краја табеле. Истицање може да се активира у табели преко\showrowcolors команде. Ако при коришћењу ове команде са којом се суочавате са "загубљеним грешкама" ("misplaced \noalign errors", енгл.), онда користите команде на самом почетку или на крају редом у вашој табели.

\hiderowcolors odd & odd & odd \\

или

odd & odd & odd \\ \showrowcolors

Боја индивидуалних ћелија

Као што је горе коришћен xcolor пакет.

% Укључује ово негде у вашем документу
\usepackage[table]{xcolor}
% Убаците ово у ћелију коју желите да обојите нпр. у светло сиву.
% NB: реч "сива" овде означава сивим тоновима шему боја, а не боју сиву. '0.9' означава колико је тамна сива. 
\cellcolor[gray]{0.9}
% Следеће ће обојити ћелију у црвено.
\cellcolor{red}

Ширина и истезање

Ми стално обезбеђујемо документацију за tabular* и tabularx иако је потпуно засенила много моћаније и флексибилније tabu окружење. Заправо tabu је у великој мери инспирисано оним окружењима, тако да може бити вредно да имају идеју како она раде, посебно за tabularx.

Окружење табела*

Ово је у суштини незнатно проширење на оригиналној верзији табела, иако то захтева додатан аргумент (пре описе колона) који одређује жељену ширину табеле.

\begin{tabular*}{0.75\textwidth}{ | c | c | c | r | }
  \hline
  ознака 1 & ознака 2 & ознака 3 & ознака 4 \\
  \hline 
  предмет 1  & предмет 2  & предмет 3  & предмет 4  \\
  \hline
\end{tabular*}
LaTeX TabWidth1.svg

Међутим, то не може изгледати сасвим како треба. Колоне су још увек у њиховој природној ширини (довољно широка да стане њен садржај), док су редови широки по наведеној ширини. Ако ти се не свиђа по дифолту, морате експлицитно убацити додатни простор колоне. LaTeX је гумене дужине , које, за разлику од других, нису фиксне. LaTeX може динамички да одлучи колико дугачке дужине треба да буду. Дакле, један пример за то је следећи.

\begin{tabular*}{0.75\textwidth}{@{\extracolsep{\fill} } | c | c | c | r | }
  \hline
  ознака 1 & ознака 2 & ознака 3 & ознака 4 \\
  \hline 
  предмет 1  & предмет 2  & предмет 3  & предмет 4  \\
  \hline
\end{tabular*}
LaTeX TabWidth2.svg

Приметићете да је @{...} конструкција додата на почетку описа колоне. Унутар је \extracolsep команда, која захтева ширину. Фиксна ширина може користити. Међутим, користећи гумене дужине, као што су \fill, колоне су аутоматски распоређене равномерно.

Пакет tabularx

Овај пакет обезбеђује окружење табела под називом tabularx, који је сличан tabular* окружењу, осим што има нову колону спецификатора X (великим словима). Колона/е наведена у овом спецификатору ће бити протегнута да би табела била широка као што је наведено, у великој мери поједноставила креирање табела.

\usepackage{tabularx}
% ...
\begin{tabularx}{\textwidth}{ |X|X|X|X| }
  \hline
  ознака 1 & ознака 2 & ознака 3 & ознака 4 \\
  \hline 
  предмет 1  & предмет 2  & предмет 3  & предмет 4  \\
  \hline
\end{tabularx}
LaTeX TabXWidth1.svg

Садржај предвиђен за кутије се третира као за p колону, осим што ширина се аутоматски израчунава. Ако користите пакет array, можете применити било коју >{\cmd} или <{\cmd} команду да постигнете специфично понашање (као што је \centering или \raggedright\arraybackslash) како је претходно описано.

Друга могућност је да користите \newcolumntype да форматирате изабране колоне на другачији начин. Она дефинише нови спецификатор колоне, нпрR (великим словима). У овом примеру, друга и четврта колона се подешавају на другачији начин (\raggedleft):

\usepackage{tabularx}
% ...

\newcolumntype{R}{>{\raggedleft\arraybackslash}X}%
\begin{tabularx}{\textwidth}{ |l|R|l|R| }
  \hline
  ознака 1 & label 2 & label 3 & label 4 \\
  \hline 
  item 1  & item 2  & item 3  & item 4  \\
  \hline
\end{tabularx}
LaTeX TabXWidth2.svg

Tabularx са редовима обухватају више колона користећи\multicolumn. Две централне колоне се представљају као једна помоћу X@{} опције. Имајте на уму да\multicolumn ширина (што је у овом примеру 2) треба да буде једнака (у овом примеру 1 + 1) ширини обухваћене колоне:

\usepackage{tabularx}
% ...

\begin{tabularx}{1\textwidth}{ |>{\setlength\hsize{1\hsize}\centering}X|>{\setlength\hsize{1\hsize}\raggedleft}X@{} >{\setlength\hsize{1\hsize}\raggedright}X|>{\setlength\hsize{1\hsize}\centering}X| } 
  \hline
Oзнака 1 & \multicolumn{2}{>{\centering\setlength\hsize{2\hsize} }X|}{Ознака 2} & Ознака 3\tabularnewline
\hline 
  123  & 123  & 456  & 123  \tabularnewline
  \hline
  123  & 123  & 456  & 123  \tabularnewline
  \hline
\end{tabularx}
LaTeX tabularx multi.svg

На неки начин аналогно томе како нове команде са аргументима могу бити креиране са \newcommand,, нови типови колона са аргументима могу бити креирани са \newcolumntype на следећи начин:

\usepackage{tabularx}
\usepackage[table]{xcolor} %Used to color the last column
% ...

\newcolumntype{L}[1]{>{\hsize=#1\hsize\raggedright\arraybackslash}X}%
\newcolumntype{R}[1]{>{\hsize=#1\hsize\raggedleft\arraybackslash}X}%
\newcolumntype{C}[2]{>{\hsize=#1\hsize\columncolor{#2}\centering\arraybackslash}X}%

\begin{tabularx}{\textwidth}{ | L{1} | R{0.5} | R{0.5} | C{2}{gray} | }
  \hline
  label 1 & label 2 & label 3 & label 4 \\
  \hline
  item 1  & item 2  & item 3  & item 4  \\
  \hline
\end{tabularx}

јер постоје 4 колоне, сума од \hsize's (1 + 0.5 + 0.5 + 2) мора бити једнака 4. Стандардна вредност која користи tabularx за \hsize је 1.

Пакет tabulary

tabulary је модификована tabular* која омогућава постављање ширине колоне за једнаке висине.tabulary омогућава једноставно и лако писање и балансиране табеле.

Проблем са tabularx је да оставља много празног простора ако су ваше ћелије скоро празне. Осим тога, није лако имати различите величине колона.

tabulary покушава да балансира ширину колона тако да свака колона има најмање само своју природну ширину, без прекорачења максималне дужине.

\usepackage{tabulary}
...

\begin{center}
  \begin{tabulary}{0.7\textwidth}{LCL}
    Катке реченице      & \#  & Дуге реченице                                                \\
    \hline
    Ово је кратко.      & 173 & Ово је доста дууууже, зато што постоји много речи.  \\
    Ово није краће. & 317 & Ово је и даље дууууже, зато што постоји много речи. \\
  \end{tabulary}  
\end{center}

Први параметар је максимална ширина. tabulary ће покушати да га не прелази, али неће се протести до њега ако нема довољно садржаја, супротно од tabularx.

Други параметар је распоред колоне. Могуће вредности су оне из tabular окружења, плус

{ параметара може се имати опциони спан фактор.

Табела у неколико страница[уреди]

Дугачке табеле изворно су подржате од стране LaTeX-а захваљујући longtable окружењу. Нажалост, ово окружење не подржава истезања (X колоне).

tabu пакети дају longtabu окружења. Он има већину карактеристика од tabu са додатним могућностима да садржи више страница.

LaTeX може да ради добро са дугим табелама: можете да одредите заглавље, који ће поновити на свакој страници, заглавље за једино прву страну и исто за подножје.

\begin{longtabu} to \linewidth {lX[2]lXl}

\rowfont\bfseries H1 & H2 & H3 & H4 & H5 \\ \hline 
\endhead

\\ \hline
\multicolumn{5}{r}{There is more to come} \\
\endfoot

\\ \hline
\endlastfoot

% Садржај ...

Користи синтаксу сличној као longtable, стога можете погледати у његовој документацији, ако желите да сазнате више.

Алтернативно моћете да покушате са једним од следећих пакета supertabular или xtab, проширену и донекле побољшану верзију supertabular.

Парцијалне вртикалне линије[уреди]

Додавање парцијалне вертикалне линије у индивидуалне ћелије:

\begin{tabular}{ l c r }
  \hline
  1 & 2 & 3 \\ \hline
  4 & 5 & \multicolumn{1}{r|}{6}  \\ \hline
  7 & 8 & 9 \\ \hline
\end{tabular}

Partial-vertical-line-add.svg

Уклањање дела вертикалне линије у специјалној ћелији:

\begin{tabular}{ | l | c | r | }
  \hline
  1 & 2 & 3 \\ \hline
  4 & 5 & \multicolumn{1}{r}{6} \\ \hline
  7 & 8 & 9 \\ \hline
\end{tabular}

Partial-vertical-line-remove.svg

Вертикалне центриране слике[уреди]

Убацивање слике у низу табеле ће се ускладити на врху ћелије. Коришћењем array пакета овај проблем може бити решен. Дефинисањем нов тип колоне ће задржати слику вертикално центрирану.

\newcolumntype{V}{>{\centering\arraybackslash} m{.4\linewidth} }

Или користите parbox за центрирање слике.

\parbox[c]{1em}{\includegraphics{image.png} }

raisebox ради добро, такође омогућава да ручно, финим подешавањем, поравнате са својим првим параметаром.

\raisebox{-.5\height}{\includegraphics{image.png} }

Фусноте у табелама[уреди]

tabular околина не рукује правилно фуснотама. longtabular то поправља. Уместо коришћења longtabular препоручујемо tabu пакет која се бави фуснотама правилно, како у нормалним и дугим табелама.

Професионалне табеле[уреди]

Многе професионалне књиге и часописи имају једноставне табеле, које имају одговарајуће размак изнад и испод линије, и скоро никад не користе вертикална правила. Многи примери LaTeX табела (укључујући и овај Wikibook) излажу употребу вертикалних правила (користећи се "|") и дуплих правила (користећи се \hline\hline или "||"), која се сматрају непотребним и ометајућим у професионално објављеном облику. booktabs пакет је користан за лако пружање професионализма у LaTeX табелама, а documentation такође даје смернице о томе шта представља "добра" табела

Укратко, пакет користи \toprule за највише правило (или линију), \midrule за правила које се појављују у средини табеле (као што је место испод заглавља), и \bottomrule за најниже правило! Ово осигурава да правило и размак буду прихватљиви. Поред тога, \cmidrule може да се користи за средња правила, која би обухватала наведене колоне. Следећи пример је супротност између употребе booktabs и две еквивалентне нормалне LaTeX имплементације (други пример захтева \usepackage{array} или \usepackage{dcolumn}, а трећи пример захтева \usepackage{booktabs} у уводу).

Нормални LaTeX[уреди]

\begin{tabular}{llr}
\hline
\multicolumn{2}{c}{Item} \\
\cline{1-2}
Animal    & Description & Price (\$) \\
\hline
Gnat      & по граму    & 13.65      \\
          & сваки       & 0.01       \\
Gnu       & пуњен     & 92.50      \\
Emu       & пуњен     & 33.33      \\
Armadillo & залеђен     & 8.99       \\
\hline
\end{tabular}

LaTeX animal table.svg

Коришћењеarray[уреди]

\usepackage{array} 
%or \usepackage{dcolumn}
...
\begin{tabular}{llr}
\firsthline
\multicolumn{2}{c}{Item} \\
\cline{1-2}
Животиња    & Објашњење & Цена (\$) \\
\hline
Gnat      & по граму    & 13.65      \\
          & сваки       & 0.01       \\
Gnu       & пуњен     & 92.50      \\
Emu       & пуњен     & 33.33      \\
Armadillo & frozen      & 8.99       \\
\lasthline
\end{tabular}

Коришћење booktabs[уреди]

\usepackage{booktabs}\\
  \begin{tabular}{llr}  
    \toprule
    \multicolumn{2}{c}{Item} \\
    \cmidrule(r){1-2}
    Животиња    & Објашњење & Цена (\$) \\
\hline
Gnat      & по граму    & 13.65      \\
          & сваки       & 0.01       \\
Gnu       & пуњен     & 92.50      \\
Emu       & пуњен     & 33.33      \\
Armadillo & frozen      & 8.99       \\
    \bottomrule
  \end{tabular}

LaTeX animal table with booktabs.svg


Обично се укаже потреба за фуснотама испод табела (а не на дну странице), са насловом правилно распоређеним изнад табеле. Они су се обратили ctable пакету. Он пружа могућност кратког наслова који би се убацио у листу табела, уместо стварног натписа (који може бити прилично дуг и неприкладан за листу табела). ctable користи booktabs пакет.

Бочне табеле[уреди]

Табеле се могу ставити на другу страну у оквиру документа коришћењем {rotating или rotfloat пакета. Погледајте Rotations поглавље.

Табела са легендом[уреди]

Да бисте додали легенду у табели, caption пакет може да се искористи. Са пакетом за наслов \caption*{...} изјава може се додати осим нормалног \caption{...}. Пример:

\begin{table}
  \begin{tabular}{| r | r || c | c | c |}

      ...

  \end{tabular}
  \caption{A normal caption}
  \caption*{
    A legend, even a table can be used
    \begin{tabular}{l l}
      item 1 & explanation 1 \\
    \end{tabular}
  }
\end{table}

Нормалан наслов је потребан за ознаке и референце.

eqparbox пакет[уреди]

У ретким приликама, можда ће бити потребно да се протегне сваки ред у табели са природном ширином своје најдуже линије, на пример када неко има исти текст на два језика и жели да их представи један поред другог са хармонијски постављеним линијама,горе. Табеларно окружење помаже контроли где линије треба разбити, али не може да оправда текст, што доводи до неправилне десне ивице. eqparbox пакет даје команду \eqmakebox која је као \makebox али уместо width аргумета, потребна је ознака. Током компилације задрзава се коју \eqmakebox са одређеном ознаком садржи најшири текст и може да се протеже све \eqmakebox са истом ознаком на ту ширину. У комбинацији са array пакетом, може се дефинисати спецификатор колоне који оправдава текст у свим линијама:

\newsavebox{\tstretchbox}
\newcolumntype{S}[1]{%
  >{\begin{lrbox}{\tstretchbox} }%
  l%
  <{\end{lrbox}%
  \eqmakebox[#1][s]{\unhcopy\tstretchbox} }%
}

Види докомунетацију eqparbox пакета за више детаља.

Покретање са табелом[уреди]

У WYSIWYG документ процесорима, уобичајено је да се ставе табеле у средину текста. То је оно што смо радили до сада. Професионални документи, међутим, често чине да штампање табела буде на посебној страници тако да не ометају ток. Са тачке гледишта изворног кода, један нема појма на којој страни садашњи текст ће лагати, тако да је тешко али могуће да погодите која страна може бити прикладна за нашу табелу. LaTeX може аутоматизовати овај задатак апстраховањем објеката као што су табеле, слике, итд, и да одлучује за нас, где би је могли уклопити најбоље. Ова апстракција се зове float . Генерално, објекат који је float ће се појавити у близини његовог увођења у изворној датотеци, али могу да изаберу да контролишу своју позицију такође.

Како би рекли LaTeX-у да желимо да користимо нашу табелу као float, морамо да ставимо tabular окружење у table окружењу, које је у стању да да тим float и додали ознаку и наслов.

table окружење иницира тип float као окружење figure. У ствари, њих двојица носе доста сличности (позиционирања, натписи, итд). Више информација о float окружењу, насловима итд. могу се наћи у Фигурама и натписима.

Имена окружење сада може да изгледа прилично збуњујуће. Хајде да резимирамо:

  • tabular } је за саму (колоне, линије, итд) садржаја.
  • table је за мјесто у табели на документу, плус са насловом и етикетама подршке.
\begin{table}[position specifier]
  \centering
  \begin{tabular}{|l|}
    ... your table ...
  \end{tabular}
  \caption{This table shows some data}
  \label{tab:myfirsttable}
\end{table}

У табели, користили смо ознаку, тако да сада може да се односи на њега као и свака друга референца:

\ref{tab:myfirsttable}

table околина је такође корисна када желите да имате листу табела на почетку или на крају вашег документа са командом

\listoftables

Натписи се појављују сада на листу табела, ако су приказани.

Можете подесити изборни параметар position specifier за дефинисање пположаја табеле, где би требало да буде постављена. Следећи карактери су сви могући пласмани. Користећи секвенце тога дефинисати своју "листу жеља" на LaTeX.

h где је табела декларисана (овде)
t наврху стране
b на дну стране
p на наменској сстрани типа float
! надјачати подразумеванa флоат ограничења. Нпр, максимална дозвољена величина од b флоат је нормално прилично мала; ако желите једну велику, потребно вам је овај ! параметар.

Уобичајено је tbp, што значи да је по дефолту постављен на врху странице. Ако то није могуће, постављено је на дну ако је то могуће, или коначно са другим float срединама на додатној страници.

Можете натерати LaTeX да кориси једну дату позицију. На пример [!h] форсира LaTeX да га поставите тачно где сте га ставили (осим када је заиста немогуће, на пример, поставите табелу овде и ово место ће бити последњи ред на страници). Опет, да буде јасније: позива LaTeXс да стави табелу на одређено место, али она неће бити постављена тамо, ако LaTeX мисли да неће изгледати сјајно. Ако заиста желите да поставите табелу ручно, немојте да користите table окружење.

Центрирање табеле хоризонтално ради као и све друго, користећи \centering команду одмах након отварања table окружења, или га ограђујући са center окружењем.

Користећи табеле и алате за анализу података[уреди]

За сложене или динамичке табеле, можда ћете желети да користите табелу. Можда сачувате пуно времена градећи табеле коришћењем специјализованог софтвера и извозећи их у LaTeX формату. Следећи додаци и библиотеке су доступни за неке популарне софтвере:

  • calc2latex: за OpenOffice.org Calc табеларне приказе,
  • excel2latex: за Microsoft Office Excel,
  • matrix2latex: за MATLAB,
  • matrix2latex: за Python и MATLAB,
  • pandas: pandas DataFrame's има метод за претварање података, које садржи, на LaTeX
  • latex-tools: Ruby библиотека
  • xtable: библиотека за Р
  • org-mode: за Emacs кориснике, org-mode тебле могу бити коришћене редно у LaTeX документима, погледајте [1] туторијал
  • Emacs align commands: поређане команде могу очистити неуредну LATeX тебелу
  • Online Table generator for LATeX: Онлајн алатка за креирање једноставних табела у оквиру бровсера. LaTeX формат је директно генериса када укуцате.
  • Create LaTeX tables online : Онлајн алатка

Међутим, копирање изворног кода генерисаног на документ није згодно уопште. За максималну флексибилност, генерисати посебан фајс са изворни код који можете унети од свог главног досијеа документације са \input команде.

Ако ваша табела подржава командне линије, можете направити свој комплетан документ (табела је укључена) у једној команди, користећи Makefile на пример.

Погледајте Модуларне Документе за више детаља.

Да ли вам требају компликованије функције?[уреди]

Да погледамо један од следећих пакета:

  • hhline: ради шта год хоћеш са хоризонталним линијама
  • array: даје већу слободу о томе како дефинисати колоне
  • colortbl: прави вашу таблу више обојеном
  • threeparttable омогућава да се стави фуснота и унутар табели и њеног наслова
  • arydshln: ствара испрекидане хоризонталне и вертикалне линије
  • ctable: омогућава фусноте испод табеле и правилне размаке натписа изнад (укључује booktabs пакет)
  • slashbox: креирање 2D табеле са првим ћелијама које садрже опис за обе осе. Није доступно у Tex Live 2011 или касније.
  • diagbox: компатибилан са slashbox долазе са Tex Live 2011 или касније
  • dcolumn: Поравњење децималних тачака у нумеричким ћелијама
  • rccol: препоручено поравњење децималних тачака у нумеричким ћелијама са заокруживањем
  • numprint: print бројеви, у садашњем режиму (текст или математике) у циљу да користите исправнан фонт, са сепараторима, експонент и / или заокруживање на одређен број цифара, табеларни (*), array, tabularx и longtable окружења је подржано користећи све карактеристике од numprint-а
  • spreadtab: spread листови омогућавају коришћење формула
  • siunitx: усклађивање уноса табела
  • pgfplotstable: Оптерећења, обилажења, формати и пост обрада нумеричке табеле.

Референце[уреди]

Претходно: Ротација Индекс Следеће: Стварање наслова
  1. Пакет multirow on CTAN