![文本输出长表](https://linux22.com/image/341956/%E6%96%87%E6%9C%AC%E8%BE%93%E5%87%BA%E9%95%BF%E8%A1%A8.png)
下午好
我有一个问题。我有一个长表,并且我设置了该表的参数。我的意思是,我设置了列的大小。该表有三列。在每个第三列中,我都有两行。但只有在第三列中。当我将文本写入此列时,一切都正确。但当我写入较长的文本时,文本不会被剪切,而是超出列。
我的问题是:为什么会这样?我设置了列大小参数。哪里出了问题?
感谢您的解释和帮助。
\documentclass[10pt,a5paper]{book}
%46paper
\usepackage[utf8]{inputenc}
\usepackage[main=english,slovak]{babel}
\usepackage[cm]{fullpage}
\usepackage[a5paper, top=15mm, left=10mm, right=10mm,
bottom=10mm,foot=5mm,marginparsep=0mm]{geometry}
%showframe
\usepackage{tipa}
\usepackage{tabularx,booktabs}
\usepackage{multirow}
\usepackage{rotating}
\usepackage{graphicx}
\usepackage{array}
\usepackage{color}
\usepackage[dvipsnames]{xcolor}
\usepackage{longtable}
\usepackage{lscape}
\usepackage{enumitem}
\usepackage{tabularx,booktabs}
\usepackage{enumitem}
\usepackage{mathtools}
%\pagenumbering{alph}
%\pagenumbering{Roman}
\usepackage{ textcomp }
\usepackage{ marvosym }
\usepackage{fontawesome}
\usepackage{tfrupee}
\usepackage{stackengine}
\def\yenrule{\rule{1.3ex}{.1ex}}
\def\textyen{\renewcommand\stacktype{L}\stackon[.4ex]{\stackon[.65ex]{Y}
{\yenrule}}{\yenrule}}
\usepackage{textcomp}
\usepackage{marvosym}
\begin{document}
\catcode`\-=12
\sloppy
\large
\begin{longtable}{|p{5cm}p{6cm}|}
\hline
\textbf{come on} & \multirow{2}{*}{No tak!, Poď!, Pohni!}\\
\textsl{[\textipa{k2m 6n}]} & \\
\hline
\textbf{be keen on} & \multirow{2}{*}{mať rád \textit{čo}, byť zapápený \textit{pre čo (doing)}}\\
\textsl{[\textipa{ki:n 6n}]} & \\
\hline
\end{longtable}
\end{document}
答案1
我提出另一种解决方案,没有multirow:使用\makecell
同名包中的命令,允许在单元格中换行:
\documentclass[10pt,a5paper]{book}
%46paper
\usepackage[utf8]{inputenc}
\usepackage[main=english,slovak]{babel}
\usepackage[cm]{fullpage}
\usepackage[a5paper, top=15mm, left=10mm, right=10mm,
bottom=10mm,foot=5mm,marginparsep=0mm]{geometry}
%showframe
\usepackage{tipa}
\usepackage{tabularx,booktabs}
\usepackage{multirow, makecell}
\usepackage{rotating}
\usepackage{graphicx}
\usepackage{array}
\usepackage[dvipsnames]{xcolor}
\usepackage{longtable}
\usepackage{lscape}
\usepackage{enumitem}
\usepackage{mathtools}
%\pagenumbering{alph}
%\pagenumbering{Roman}
\usepackage{ textcomp }
\usepackage{ marvosym }
\usepackage{fontawesome}
\usepackage{textcomp}
\usepackage{marvosym}%
\begin{document}
\catcode`\-=12
\sloppy
\large\setlength\extrarowheight{3pt}
\begin{longtable}{|m{5cm}m{6cm}|}
\hline
\makecell{\textbf{come on}\\
\textsl{[\textipa{k2m 6n}]}} & No tak!, Poď!, Pohni! \\
\hline
\makecell{\textbf{be keen on}\\ \textsl{[\textipa{ki:n 6n}]}}
& mať rád \textit{čo}, byť zapápený \textit{pre čo (doing)} \\
\hline
\end{longtable}
\end{document}
请注意,您不需要定义\textyen
命令,也不需要加载tfrupee
包,如fontawesome
定义\faYen
和\faRupee
。
答案2
答案3
使用最新版本的 多行可以替换*
为=
更新文档,第 3 页:
< 文本 >是构造的实际文本。如果明确设置了宽度,则文本将设置
\parbox
为该宽度;您可以使用\\
在所需的位置强制换行。如果宽度已指定,则
*
文本将以 LR 模式设置。如果在这种情况下想要多行输入,您可以在文本参数中使用表格或数组环境。例如,请参阅下面的 minitab。
=
当\multirow
条目位于具有定义宽度的列中时,也可以指定宽度,例如在p{}
列中、tabularx 中的 X 列或 tabulary 环境中的 L、C、R 或 J 列中。文本将设置\parbox
为该宽度。如果在其他情况下给出“=”,则会得到奇怪的结果(通常是列太宽)。
\documentclass[10pt,a5paper]{book}
\usepackage[utf8]{inputenc}
\usepackage{multirow}
\begin{document}
\begin{tabular}{|p{5cm}p{6cm}|}
\hline
\textbf{come on} & \multirow{2}{=}{No tak!, Poď!, Pohni!}\\
\textsl{[{k2m 6n}]} & \\
\hline
\textbf{be keen on} & \multirow{2}{=}{mať rád \textit{čo}, byť zapápený \textit{pre čo (doing)}}\\
\textsl{[{ki:n 6n}]} & \\
\hline
\end{tabular}
\end{document}