Am un text într-un tabel și vreau să adăugați o linie forțată pauză. Vreau pentru a introduce forțat linia de pauză fără a fi nevoie să specificați lățimea coloanei, adică ceva de genul următor:
\begin{tabular}{|c|c|c|}
\hline
Foo bar & Foo <forced line break here> bar & Foo bar \\
\hline
\end{tabular}
Știu că \\
introduce un sfârșit de linie în cele mai multe cazuri, dar aici începe un nou rând de tabel în loc.
O întrebare similară a fost întrebat înainte: Cum de a sparge o linie într-un tabel
L's destul de vechi, dar am'll a adăuga răspunsul meu oricum, ca metoda sugerez n't apar în altele
\begin{tabular}{|c|c|c|}
\hline
Foo bar & \begin{tabular}[x]{@{}c@{}}Foo\\bar\end{tabular} & Foo bar \\
\hline
\end{tabular}
unde " x "este fie "t", " c " sau " b " pentru a forța dorită de aliniere verticală.
În cazul în care acest lucru este necesar mai mult de un cuplu de locuri, l's mai bine pentru a defini o comandă
\newcommand{\specialcell}[2][c]{%
\begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}
deci tabelul de linie înainte poate fi una dintre
Foo bar & \specialcell{Foo\\bar} & Foo bar \\ % vertically centered
Foo bar & \specialcell[t]{Foo\\bar} & Foo bar \\ % aligned with top rule
Foo bar & \specialcell[b]{Foo\\bar} & Foo bar \\ % aligned with bottom rule
Mai multe variante sunt posibile, de exemplu, specificând, de asemenea, alinierea orizontală în celulă specială.
Observa @{}
pentru a suprima adăugat spațiu înainte și după textul celulei.
Ciudat, nici un răspuns (dacă nu'am interpretat greșit le) menționează un pachet care este dedicat la această întrebare precisă: makecell
, care permite frecvente de formatare a anumitor celule, datorită sale \thead " și " \makecell
comenzi, și pentru pauze de linie în interiorul acestor celule. La alinieri orizontale și verticale pot alese independent de cele din tabel se're inclus în. Implicit este "cc", dar puteți schimba la nivel global în preambulul cu
\renewcommand{\cellalign/theadalign}{vh}
unde v este unul dintre t,c,b și h o de
l,c,r. Alternativ, pentru o singură celulă, puteți utiliza
\makecell " sau " \theadcomenzi cu argumentul opțional
[vh]`.
Deci, aici este un demo:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{fourier}
\usepackage{array}
\usepackage{makecell}
\renewcommand\theadalign{bc}
\renewcommand\theadfont{\bfseries}
\renewcommand\theadgape{\Gape[4pt]}
\renewcommand\cellgape{\Gape[4pt]}
\begin{document}
\begin{center}
\begin{tabular}{ | c | c | c |}
\hline
\thead{A Head} & \thead{A Second \\ Head} & \thead{A Third \\ Head} \\
\hline
Some text & \makecell{Some really \\ longer text} & Text text text \\
\hline
\end{tabular}
\end{center}
\end{document}
Chiar este de mirare de ce LaTeX este declarat a fi complicat! Doar uita-te la răspunsuri la o întrebare ușoară! Cât despre o soluție simplă la o în fiecare zi problemă?
\usepackage{pbox}
\begin{tabular}{|l|l|} \hline
\pbox{20cm}{This is the first \\ cell} & second \\ \hline
3rd & and the last cell \\ \hline
\end{tabular}
care arata ca:
Rețineți că lățimea furnizate \pbox
este o lățime maximă. În cazul în care conținutul este mai scurtă lungimea de cea mai lungă linie este luată.
Puteți schimba aspectul de celule de la punctul a utiliza \newline
comanda.
\begin{tabular}{|p{2cm}|p{2cm}|}
\hline
Test & foo \newline bar \\
...
Edit:
Utilizați următoarele comenzi în loc de " p " dacă doriți să specificați alinierea precum:
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
Folosi tabularx mediu în loc de
tabel, și de a folosi apoi
\newline` în cazul în care doriți pauze de linie într-o celulă.
\usepackage{tabularx}
\begin{tabularx}{\textwidth}{lX}
Section: & This is my \newline
long paragraph \\
\end{tabularx}
Anii `tabularx mediu are o coloană specială de tip "X", în plus față de cele obișnuite, și primul său argument este lățimea dorită de masă. "X" coloană va avea lățimea necesară în scopul de a face ca întreaga masă lățimea dorită.
Notă: \newline
nu vor avea efect în coloane de tip standard.
Detalii pe tabularx` poate fi găsit aici.
Aici's-un mod foarte simplu de a face, folosind Plain TeX comenzi în tabelare mediu:
\begin{tabular}{|c|c|c|}
\hline
here&\vtop{\hbox{\strut top line}\hbox{\strut botline}}&more\\
\hline
x&y&z\\
\hline
\end{tabular}
Prin utilizarea hboxes în vtop am'am stat în modul vertical
și, prin urmare, lățimea textului în hboxes determină
lățimea vtop. În acest fel ne-am don't nevoie să știu
lățimea textului în avans. \strut
și se va menține dreptul de
spațiul de deasupra și dedesubtul textului în hbox.
Aceasta este o întrebare veche, dar din moment ce acest lucru a fost legat de un recent întrebare pe separă conținutul și prezentarea, am'll a adăuga un ConTeXt răspunde pentru comparatie.
În ConTeXt, \crlf
adaugă o linie forțată-break, deci realizarea unui forțat line-break într-un tabel este la fel de simplu ca adăugarea de doar \crlf
în locul potrivit. Aici este completă exemplu:
% Setup for rules at the top and bottom
\startsetups table:rules
\setupTABLE[frame=off]
\setupTABLE[row][first][topframe=on]
\setupTABLE[row][last][bottomframe=on]
\stopsetups
% Setups for middle alignment
\startsetups table:middle
\setupTABLE[align=middle]
\stopsetups
\starttext
\startTABLE[setups={table:rules, table:middle}]
\NC Foo bar \NC Foo \crlf Bar \NC Foo bar \NC \NR
\NC Foo bar \NC Foo \crlf Bar \NC Foo bar \NC \NR
\stopTABLE
\stoptext
care vă oferă:
Aici am folosi stive să-l realizeze. Mai multe lucruri sunt de remarcat:
Am demonstra \Longstack
, \Longunderstack " și " \Centerstack
, care dau trei aliniamente.
Pentru a nu stoarce împotriva celei verticale, o \strutlongstacks{T}
declarația a fost emis. Alternativ, s-ar putea încheia o stivă în interiorul unui \addstackgap[<decalajul>]{content}
pentru a adăuga o verticală tampon de mai sus/mai jos stiva.
Nu indicat este posibilitatea de a seta alinierea orizontală a stivuite conținut cu un argument opțional, sau pentru a schimba EOL personaj (din \\
la alta specificată de utilizator token)
Aici este MWE.
\documentclass{article}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\strutlongstacks{T}
\begin{tabular}{|c|c|c|}
\hline
Foo bar & \Longstack{ Foo \\ bar \\ baz} & Foo bar \\
\hline
Foo bar & \Longunderstack{ Foo \\ bar \\ baz} & Foo bar \\
\hline
Foo bar & \Centerstack{ Foo \\ bar} & Foo bar \\
\hline
\end{tabular}
\end{document}
Cum despre utilizarea `\parbox într-o comandă personalizate
\documentclass{article}
\newsavebox\mybox
\newlength\mylength
\newcommand\boxup[2]{%
\savebox\mybox{#1}%
\setlength\mylength{\wd\mybox}%
\parbox{\mylength}{#1 \\ #2}%
}
\begin{document}
\begin{tabular}{|c|c|c|}
Foo bar & \boxup{Foo}{bar} & Foo bar \\
\end{tabular}
\end{document}
Acest lucru are două argumente în ipoteza în care prima linie este mai mare decât al doilea. Ar fi posibil pentru a rafina codul pentru a lucra printr-un număr arbitrar de linii și de a găsi cea mai lungă. Dacă asta's de interes I'll scrie ceva, probabil folosind expl3
pentru looping.
Cred că multirow` este un joc simplu, elegant soluție, cel puțin pentru mese simple.
De exemplu, am încercat câteva dintre sugestiile de mai sus, dar am găsit asta a functionat cel mai bine:
\usepackage{multirow}
\begin{table}[ht]
\caption{RESTful Resources}
\centering
\begin{tabular}{l l l}
\hline
Resource & Methods & Description \\
\hline
\multirow{2}{*}{Resource1} & \multirow{2}{*}{POST, PUT}
& This resource contains ...\\
& & \emph{Media types: text/plain, application/json}\\
\multirow{2}{*}{Resource2} & \multirow{2}{*}{POST, PUT}
& This resource contains ...\\
& & \emph{Media types: text/plain, application/json} \\
\hline
\end{tabular}
\label{table:resources}
\end{table}
Cred că am cel mai simplu raspuns aici:
Dacă utilizați un paragraf coloană într-un tabel, puteți pune textul într-o aliniere mediu și masa nu se ridica\\
, ca un nou rând de tabel, astfel încât să puteți utiliza în mod normal. De exemplu:
\begin{tabular}{p{2in}p{2in}}
\begin{flushleft}
Some text over here \\
newline! \\
\bigskip all the way down
\end{flushleft}
&
\begin{flushleft}
Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo\\ \bigskip
consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.\\
\bigskip \bigskip lorem ipsum\\
\end{flushleft}\\
\end{tabular}\
Vă va oferi o masă cu pauze de linie, folosind \\
de comandă.
Eu nu't direct ajutor cu privire la modul de a adăuga un linebreak, dar folosind multirow pachet poate oferi altă cale la aceeași final dorit. Puteți citi un tutorial aici:
Dar am un sentiment de \parbox răspunsul în întrebare similară-ai legat este ceea ce ai're în căutarea pentru. Cred că, folosind o cutie în celulă va fi mai simplu și cel mai bun mod, a fost ceva despre care nu't de lucru pentru tine?
Dacă doriți să utilizați parbox fără a fi nevoie să hardcode în lățime, aici's o metodă care funcționează pentru mine. Nu este perfect, deoarece este nevoie să știi în prealabil textul de mai lungă linie în multi-linie, coloana, dar aceasta nu funcționează:
% define new length and set to length of longest line
\newlength{\longline}
\settowidth{\longline}{longest line in table}\\
\begin{tabular}{lll}
one line & \parbox[t]{\longline}{longest line in table \\ and another line} & more text \\
second line here& and what & more text
\end{tabular}
Bună după-amiaza, când eram mai tânăr am fost culegere de un tabel de mediu în interiorul unui tabel mediu. Din moment ce avem TikZ eu folosesc tikzpicture mediu interior tabulars, sau chiar tikzpicture în interiorul tikzpicture. Prefer punerea simplu TikZ nodurile următoare și mai jos alte fiecare, dar depinde de sarcină reală. Anexez o MWE cu rapid înălțimea textului de corecție.
\documentclass{article}
\usepackage{tikz}\pagestyle{empty}
\begin{document}
\tikzset{inner sep=0pt}
\begin{tabular}{|l|l|} \hline
\begin{tikzpicture}
\node[align=left, text height=4.5ex]{This is the\\[3pt]first cell};
\end{tikzpicture}
& second \\ \hline
3rd & and the last cell \\ \hline
\end{tabular}
\end{document}
Personal, eu prefer să folosesc `\usepackage{multirow} \multirow{"numărul de rânduri"}{"lățime"}{"conținutul"} pentru orice altceva în afară de informații care ar trebui să fie pe rânduri diferite.
De exemplu:
\begin{tabular}{p{2.5cm}@{\hskip 0mm} p{5cm}@{\hskip 4mm} p{5cm} }
Parameter & Description & Used by\\
\hline
\\[-0.1cm]
\multirow{2}{*}{Accuracy}&1. The error rate or frequency of correctness of sensor readings. & \\[0.3cm]
& 2. The degree of correspondence of measured values to actual values.& \\[0.3cm]
\hline
\\[-0.1cm]
\end{tabular}
Se pare că există mai degrabă o soluție simplă. Doar wrap text în currly bretele și de a folosi \raggedright
astfel:
{\raggedright \bfseries WS 2016 \\(average)}
Aici este un exemplu simplu:
\begin{tabularx}{\textwidth}[ht]{|X|p{1.8cm}|}
\hline
Some Longer Column &
{\raggedright \bfseries Line \\Break} \\\hline
This is a wide line with some text & Small \\\hline
\end{tabularx}
Acest lucru vă oferă:
Această abordare este't atât de diferite de la alții deja dat, cu excepția faptului că este "externalises" toate deciziile de design din tabelul de definiție în sine (care este, lăsându-l curat pentru a scrie și a citi fiecare masă ar trebui să doriți să includeți mai multe mese de-a lungul doc sau google docs).
Preliminarii (probabil în preambul):
\usepackage{array} % needed if you're going to use \\ together with centering,
% raggedright, raggedleft in your column specifier (see
% manuals on \arraybackslash)
\newlength{\mywidestcolwidth}
\newcommand*\mycellformat{\protect\footnotesize}
\newcommand*\mytableparskip{\setlength\parskip{4pt}}
\newcommand*\setmywidestcolwidth[1]{
\settowidth{\mywidestcolwidth}{\mycellformat #1}
}
Utilizare:
\setmywidestcolwidth{foo baz bar}
\begin{tabular}{|>{\mycellformat}c
|>{\mytableparskip\mycellformat\centering\arraybackslash}p{\mywidestcolwidth}
|>{\mycellformat}c|}
\hline
foo bar baz&
foo
foo baz bar
baz&
foo
foo baz bar
baz\\ \hline
\end{tabular}
Sari peste \mycellformat " și " \parskip dacă aveți nevoie de ele (desi nu este necesar în cazul dumneavoastră, am inclus
\parskipde l's util pentru a distinge vizual punctele de una de alta din punctul de indentare este oprit automat în tabele, și a adăugat
\mycellformat` pentru a permite uniformă document nivel de masă setări de design).