लाटेक्स टेबल में टेक्स्ट कैसे लपेटें?


454

मैं LaTeX में एक रिपोर्ट बना रहा हूं जिसमें कुछ टेबल शामिल हैं। मैं उस पर अटका हुआ हूं क्योंकि तालिका में मेरा सेल डेटा पृष्ठ की चौड़ाई से अधिक है। क्या मैं किसी तरह पाठ को लपेट सकता हूं ताकि यह तालिका के उसी कक्ष में अगली पंक्ति में आ जाए?

क्या यह किसी तरह तालिका की चौड़ाई से संबंधित है? लेकिन जैसा कि यह पृष्ठ की चौड़ाई का निरीक्षण कर रहा है, क्या इससे कोई फर्क पड़ेगा?


मैं एक तरह से लंबे समय तक शब्द लपेटो करने के लिए देख रहा था, अन्य समाधान बेहतर सूट मेरी जरूरतों tex.stackexchange.com/questions/198325/wrap-word-in-table-cell
मिरांडा

जवाबों:


514

L / r / c के बजाय अपने कॉलम स्पेसर के लिए p {चौड़ाई} का उपयोग करें।

\begin{tabular}{|p{1cm}|p{3cm}|}
  This text will be wrapped & Some more text \\
\end{tabular}

37
अच्छा समाधान है, लेकिन 'खो' यदि आप तालिका के चारों ओर एक सीमा नहीं चाहते हैं। यह तब बन जाएगा\begin{tabular}{p{1cm}p{3cm}}
9

83
क्या प्रत्येक सेल में संरेखण को निर्दिष्ट करते हुए ऐसा करने का कोई तरीका है?
डायलन नोल्स

7
मुझे प्रत्येक सेल में संरेखण निर्दिष्ट करने का एक तरीका मिला! एक मैक्रो बनाएँ! \ newcolumntype {L} {> {\ centering \ arraybackslash} m {.8cm}}} \ start {टेबल *} [t]% \ small \ कैप्शन {तुलना} \ centering% \ start {tabble} {शुरुआत | L | L | L | L | L | L | L | L | L | L | L | L | L |}
Veridian

8
क्या होगा यदि मेरे पास दो कॉलम हैं जहां पहले फिट होना चाहिए जब तक कि यह सामग्री के रूप में फिट न हो जाए और दूसरे को लपेटते समय लाइन की चौड़ाई को भरना चाहिए? इसलिए मूल रूप से, मुझे जरूरत हैbegin{tabular}{lp{<whatever is left to fill the line width>}}
सैंडर

118
महान समाधान। हालाँकि, मैं मनमानी आयाम के बजाय सापेक्ष मूल्यों का उपयोग करने की सलाह p{0.2\linewidth}p{0.6\linewidth}}
दूंगा

139

नियमित tabularवातावरण के साथ, आप p{width}कॉलम प्रकार का उपयोग करना चाहते हैं , जैसा कि मार्गोग इंगित करता है। लेकिन यह आपको स्पष्ट चौड़ाई देने के लिए मजबूर करता है।

एक और समाधान tabularxपर्यावरण है:

\usepackage{tabularx}
...
\begin{tabularx}{\linewidth}{ r X }
    right-aligned foo & long long line of blah blah that will wrap when the table fills the column width\\
\end{tabularx}

सभी X स्तंभों को समान चौड़ाई मिलती है। आप इसे \hsizeप्रारूप घोषणा में सेट करके प्रभावित कर सकते हैं :

>{\setlength\hsize{.5\hsize}} X >{\setlength\hsize{1.5\hsize}} X

लेकिन फिर सभी कारकों को 1 तक समेटना पड़ता है, मुझे लगता है (मैंने इसे लाटेएक्स साथी से लिया था)। पैकेज भी है tabularyजो पंक्ति की ऊंचाई को संतुलित करने के लिए स्तंभ की चौड़ाई को समायोजित करेगा। विवरण के लिए, आप texdoc tabulary(TeXlive में) प्रत्येक पैकेज के लिए दस्तावेज प्राप्त कर सकते हैं ।


3
दिलचस्प है, जो वास्तव में उपयोगी लगता है। कॉलम चौड़ाई का चयन करने के लिए यह कितना बुद्धिमान है? उदाहरण के लिए, यदि आपके पास दो कॉलम हैं, जिन्हें लपेटने की आवश्यकता है, लेकिन एक दूसरे की तुलना में अधिक लंबे पाठ के साथ, क्या यह अभी भी उन्हें समान चौड़ाई प्रदान करता है?
मोइनुद्दीन

2
मैंने अपना उत्तर संपादित किया। लेकिन वास्तव में व्यवहार में मैं अपनी तालिकाओं को सरल बनाने की कोशिश करता हूं ताकि मुझे केवल एक कॉलम के लिए एक्स की आवश्यकता हो। मैंने बस सारणी की खोज की :) :)
डेमियन

50

एक अन्य विकल्प है कि प्रत्येक सेल में एक मिनिपेज डालें जहाँ टेक्स्ट रैपिंग वांछित है, जैसे:

\begin{table}[H]
\begin{tabular}{l}
\begin{minipage}[t]{0.8\columnwidth}%
a very long line a very long line a very long line a very long line
a very long line a very long line a very long line a very long line
a very long line a very long line a very long line %
\end{minipage}\tabularnewline
\end{tabular}
\end{table}

8
धन्यवाद, इसने मुझे itemizeअपनी कोशिकाओं में सूचियाँ रखने की अनुमति दी ।
क्वेंटिन प्रदीप

मुझे लगता है कि उत्तर का अर्थ स्पष्ट करना चाहिए \columnwidth: जब मैंने इसकी कोशिश की, तो यह कॉलम-चौड़ाई के बजाय अधिक तालिका-चौड़ाई वाला प्रतीत हुआ, इसलिए मुझे 0.2\columnwidthएक उचित अनुपात प्राप्त करने के लिए मैन्युअल अनुपात सेट करना पड़ा ।
यू विंडल

37

मुझे tabularyपैकेज की सादगी पसंद है :

\usepackage{tabulary}
...
\begin{tabulary}{\linewidth}{LCL}
    \hline
    Short sentences      & \#  & Long sentences                                                 \\
    \hline
    This is short.       & 173 & This is much loooooooonger, because there are many more words.  \\
    This is not shorter. & 317 & This is still loooooooonger, because there are many more words. \\
    \hline
\end{tabulary} 

उदाहरण में, आप तालिका की संपूर्ण चौड़ाई को \ textwidth के संबंध में व्यवस्थित करते हैं। जैसे इसका 0.4। फिर बाकी पैकेज के द्वारा स्वचालित रूप से किया जाता है।

अधिकांश उदाहरण http://en.wikibooks.org/wiki/LaTeX/Tables से लिए गए हैं ।


20

केक के टुकड़े की तरह सरल!

आप वर्तमान संरेखण ( , या ) Lको बनाए रखते हुए एक नया कॉलम प्रकार ( इस मामले में) को परिभाषित कर सकते हैं :crl

\documentclass{article}
\usepackage{array}
\newcolumntype{L}{>{\centering\arraybackslash}m{3cm}}

\begin{document}

\begin{table}
    \begin{tabular}{|c|L|L|}
        \hline
        Title 1 & Title 2 & Title 3 \\
        \hline 
        one-liner & multi-line and centered & \multicolumn{1}{m{3cm}|}{multi-line piece of text to show case a multi-line and justified cell}   \\
        \hline
        apple & orange & banana \\
        \hline
        apple & orange & banana \\
        \hline
    \end{tabular}
\end{table}
\end{document}

यहां छवि विवरण दर्ज करें


5

यदि आप अपने पाठ को लपेटना चाहते हैं, लेकिन संरेखण बनाए रखते हैं, तो आप उस कक्ष को एक minipageया varwidthवातावरण में लपेट सकते हैं (संस्करण पैकेज से आता है)। "यह एक्सटेंसिव जितना चौड़ा है लेकिन एक्स की तुलना में चौड़ा नहीं है" जैसा होगा। आप एक कस्टम कॉलम प्रकार बना सकते हैं जो "p {xx}" की तरह काम करता है, लेकिन उपयोग करके फिट होने के लिए सिकुड़ता है

\newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}}

जिसे arrayपैकेज की आवश्यकता हो सकती है । फिर जब आप \begin{tabular}{llM{2in}}पहले दो स्तंभों की तरह कुछ का उपयोग करते हैं तो हम सामान्य बाएँ-संरेखित होते हैं और तीसरा कॉलम सामान्य बाएँ संरेखित होगा लेकिन यदि यह 2in से अधिक चौड़ा हो जाता है तो पाठ लपेटा जाएगा।


1

टेक्स्ट ABको A \r Bटेबल सेल में बदलने के लिए , इसे सेल की स्थिति में रखें \makecell{A \\ B}:।

ऐसा करने से पहले, आपको पैकेज को भी शामिल करना होगा makecell


-12
\begin{table}
 \caption{ Example of force text wrap}
 \begin{center}
  \begin{tabular}{|c|c|}
   \hline
   cell 1       &   cell 2 \\   \hline
   cell 3                &       cell 4 & & very big line that needs to be wrap. \\ \hline
   cell 5       &   cell 6 \\   \hline
  \end{tabular}
  \label{table:example}
 \end{center}
\end{table}

Downvote। यह एक कोड-ओनली उत्तर है, जिसमें कोई स्पष्टीकरण नहीं है।
Starbeamrainbowlabs

1
इसके अलावा, यह वैसे भी गलत है क्योंकि दूसरी पंक्ति में 4 सेल हैं जहां तालिका केवल दो स्तंभों को समायोजित करने के लिए डिज़ाइन की गई है। और यह किसी भी तरह से सेल सामग्री को लपेटने से संबंधित नहीं है।
अहमद सलाह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.