文本输出长表

文本输出长表

下午好

我有一个问题。我有一个长表,并且我设置了该表的参数。我的意思是,我设置了列的大小。该表有三列。在每个第三列中,我都有两行。但只有在第三列中。当我将文本写入此列时,一切都正确。但当我写入较长的文本时,文本不会被剪切,而是超出列。

我的问题是:为什么会这样?我设置了列大小参​​数。哪里出了问题?

感谢您的解释和帮助。

\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

中的内容\multirow被放入一个不可破坏的 中\hbox。可以使用 inner tabular,也可以不使用 来设置第二个条目\multirow

\textbf{be keen on} \newline \textsl{[\textipa{ki:n 6n}]} &
mať rád \textit{čo}, byť zapápený\newline
\textit{pre čo (doing)}\\

结果

答案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}

在此处输入图片描述

相关内容