Saya memiliki beberapa teks di atas meja dan saya ingin menambahkan dipaksa line break. Saya ingin memasukkan paksa baris tanpa harus menentukan lebar kolom, yaitu sesuatu seperti berikut:
\begin{tabular}{|c|c|c|}
\hline
Foo bar & Foo <forced line break here> bar & Foo bar \\
\hline
\end{tabular}
Saya tahu bahwa \\
menyisipkan line break dalam kebanyakan kasus, tapi di sini hal itu dimulai dari sebuah tabel baru-turut sebagai gantinya.
Pertanyaan serupa diajukan sebelumnya: Bagaimana untuk menghancurkan baris dalam sebuah tabel
It's cukup lama, tapi aku'll menambahkan jawaban saya sih, sebagai metode yang saya sarankan didn't muncul di lain-lain
\begin{tabular}{|c|c|c|}
\hline
Foo bar & \begin{tabular}[x]{@{}c@{}}Foo\\bar\end{tabular} & Foo bar \\
\hline
\end{tabular}
dimana x
berupa t
, c
, atau b
untuk memaksa yang diinginkan vertikal keselarasan.
Dalam hal ini diperlukan lebih dari beberapa tempat, it's baik untuk mendefinisikan perintah
\newcommand{\specialcell}[2][c]{%
\begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}
sehingga meja line sebelum dapat menjadi salah satu
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
Lebih banyak variasi yang mungkin, misalnya menentukan juga horizontal alignment di sel khusus.
Melihat @{}
untuk menekan menambahkan spasi sebelum dan setelah sel teks.
Anehnya, tidak ada jawaban (kecuali saya've salah membaca mereka) menyebutkan paket yang didedikasikan untuk ini tepat pertanyaan: makecell
, yang memungkinkan untuk format umum dari sel-sel tertentu, berkat \thead
dan \makecell
perintah, dan untuk garis istirahat di dalam sel-sel ini. Alinyemen horisontal dan vertikal dapat dipilih secara independen dari orang-orang dari meja mereka're termasuk dalam. Default adalah cc
, tetapi anda dapat mengubahnya secara global dalam pembukaan dengan
\renewcommand{\cellalign/theadalign}{vh}
di mana v adalah salah satu t,c,b
dan h salah satu l,c,r
. Secara alternatif, untuk sebuah sel tunggal, anda dapat menggunakan \makecell
atau \thead
perintah dengan argumen opsional [vh]
.
Jadi di sini adalah 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}
Itu benar-benar tidak heran mengapa Lateks dikatakan rumit! Lihat saja jawaban anda seperti pertanyaan yang mudah! Bagaimana solusi mudah untuk masalah sehari-hari?
\usepackage{pbox}
\begin{tabular}{|l|l|} \hline
\pbox{20cm}{This is the first \\ cell} & second \\ \hline
3rd & and the last cell \\ \hline
\end{tabular}
yang terlihat seperti:
Perhatikan bahwa lebar yang disediakan untuk \pbox
adalah lebar maksimum. Jika konten adalah pendek panjang garis terpanjang yang diambil.
Anda dapat beralih tata letak sel ayat untuk menggunakan \newline
perintah.
\begin{tabular}{|p{2cm}|p{2cm}|}
\hline
Test & foo \newline bar \\
...
Edit:
Gunakan perintah berikut bukan p
jika anda ingin menentukan keselarasan serta:
\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}}
Gunakan tabularx lingkungan
bukan tabel
, dan kemudian menggunakan \newline
di mana anda ingin jeda baris dalam sel.
\usepackage{tabularx}
\begin{tabularx}{\textwidth}{lX}
Section: & This is my \newline
long paragraph \\
\end{tabularx}
The tabularx
lingkungan memiliki kolom khusus jenis, X
, selain orang-orang biasa, dan argumen pertama adalah lebar yang diinginkan dari meja. X
kolom akan memiliki lebar yang diperlukan dalam rangka untuk membuat seluruh meja lebar yang diinginkan.
Catatan: \newline
tidak akan berpengaruh dalam kolom tipe standar.
Rincian pada tabularx
dapat ditemukan di sini.
Berikut ini's cara yang sangat sederhana untuk melakukan hal ini, menggunakan Plain TeX perintah dalam tabel lingkungan:
\begin{tabular}{|c|c|c|}
\hline
here&\vtop{\hbox{\strut top line}\hbox{\strut botline}}&more\\
\hline
x&y&z\\
\hline
\end{tabular}
Dengan menggunakan hboxes dalam vtop kita've tinggal dalam mode vertikal
dan oleh karena itu lebar dari teks dalam menentukan hboxes
lebar vtop. Dengan cara ini kita don't perlu tahu
lebar dari teks di muka. \strut
akan mempertahankan hak
ruang di atas dan di bawah teks di hbox.
Ini adalah benar-benar pertanyaan lama, tapi karena ini terkait dari pertanyaan terakhir di memisahkan content dan presentasi, I'll menambahkan Konteks jawaban untuk perbandingan.
Dalam Konteks ini, \crlf
menambahkan dipaksa line-break, sehingga mencapai paksa baris dalam sebuah tabel sederhana seperti hanya menambahkan \crlf
di tempat yang tepat. Berikut adalah contoh lengkap:
% 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
yang memberikan:
Di sini saya menggunakan tumpukan untuk mencapainya. Beberapa hal yang perlu diperhatikan:
Aku menunjukkan \Longstack
, \Longunderstack
dan \Centerstack
, yang memberikan tiga keberpihakan yang berbeda.
Dalam rangka tidak untuk memeras terhadap vertikal margin, \strutlongstacks{T}
deklarasi yang dikeluarkan. Secara bergantian, bisa bungkus tumpukan di dalam sebuah \addstackgap[<gap>]{content}
untuk menambahkan vertikal penyangga di atas/di bawah tumpukan.
Tidak ditampilkan adalah kemampuan untuk mengatur alignment horizontal ditumpuk konten dengan argumen opsional, atau untuk mengubah EOL karakter (dari \\
lain yang ditentukan pengguna token)
Berikut ini adalah 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}
Bagaimana menggunakan \parbox
dalam perintah kustom
\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}
Ini membutuhkan dua argumen dengan asumsi bahwa baris pertama lebih panjang dari yang kedua. Ini akan menjadi mungkin untuk memperbaiki kode untuk bekerja melalui sewenang-wenang jumlah baris dan menemukan terpanjang. Jika itu's bunga I'll menulis sesuatu, mungkin menggunakan expl3
untuk perulangan.
Saya pikir multirow
adalah sederhana elegan solusi, setidaknya untuk tabel sederhana.
Misalnya, saya mencoba beberapa saran di atas tapi saya menemukan ini bekerja terbaik:
\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}
Saya percaya saya memiliki jawaban sederhana berikut ini:
Jika anda menggunakan ayat kolom dalam sebuah tabel, anda dapat menempatkan teks dalam sebuah keselarasan lingkungan dan meja tidak mengambil \\
sebagai sebuah tabel baru-turut, sehingga anda dapat menggunakannya secara normal. Misalnya:
\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}\
Akan memberikan anda sebuah tabel dengan baris menggunakan \\
perintah.
Saya don't memiliki bantuan langsung tentang cara untuk menambahkan linebreak, tetapi menggunakan multirow paket dapat memberikan rute yang berbeda untuk akhir yang diinginkan. Anda bisa baca tutorial berikut ini:
Tapi aku punya perasaan \parbox jawaban dalam pertanyaan serupa menghubungkan anda adalah apa yang anda're looking for. Saya pikir menggunakan sebuah kotak di dalam sel akan menjadi yang paling sederhana dan cara terbaik, ada sesuatu tentang yang itu't bekerja untuk anda?
Jika anda ingin menggunakan parbox tanpa harus hardcode dalam lebar, berikut ini's salah satu cara yang bekerja untuk saya. Tidak sempurna, karena hal ini membutuhkan anda untuk mengetahui terlebih dahulu teks garis terpanjang di multi-baris kolom, tetapi tidak bekerja:
% 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}
Selamat sore, ketika saya masih muda saya typesetting tabular lingkungan dalam tabel lingkungan. Karena kita memiliki TikZ saya menggunakan tikzpicture lingkungan dalam tabulars, atau bahkan tikzpicture dalam tikzpicture. Saya lebih suka menempatkan sederhana TikZ node berikutnya dan di bawah satu sama lain, tapi itu tergantung pada yang sebenarnya tugas. Saya lampirkan sebuah MWE dengan cepat tinggi teks koreksi.
\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}
Secara pribadi, saya lebih memilih untuk menggunakan \usepackage{multirow} \multirow{"jumlah baris"}{"lebar"}{"isi"}
untuk segala sesuatu yang lain kecuali informasi yang seharusnya ada pada baris yang berbeda.
Misalnya:
\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}
Tampaknya ada yang agak solusi sederhana. Hanya membungkus teks ke currly kawat gigi, dan menggunakan \raggedright
seperti ini:
{\raggedright \bfseries WS 2016 \\(average)}
Berikut ini adalah contoh sederhana:
\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}
Hal ini memberikan:
Pendekatan ini isn't begitu berbeda dari beberapa yang lain sudah diberikan, kecuali bahwa itu "externalises" semua keputusan desain dari meja definisi itu sendiri (yaitu, meninggalkan debu untuk menulis dan membaca setiap tabel harus anda ingin memasukkan beberapa tabel seperti ini sepanjang doc atau dokumen).
Pendahuluan (mungkin dalam pembukaan):
\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}
}
Penggunaan:
\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}
Loncat \mycellformat
dan \parskip
jika anda tidak membutuhkan mereka (meskipun tidak diperlukan dalam kasus anda, saya termasuk \parskip
karena itu's berguna untuk secara visual membedakan paragraf yang satu dengan yang lain karena ayat indentasi otomatis dimatikan dalam tabel, dan menambahkan \mycellformat
untuk memungkinkan untuk seragam dokumen-macam desain meja pengaturan).