如果太长则显示 2-3 行

如果太长则显示 2-3 行

我使用数据工具并将文本和图像连接在一起。请参阅附图。

如果此文本(文本 A 或文本 B)很长,则拆分为两行。

最小工作代码:

\RequirePackage{filecontents}
\begin{filecontents*}{file.tex}
 No,TextA,TextB
 1,a1 a1a1 a1a1a1 a1a1,b1 b1 b1
 2, ,b22 b2b2 b2b2b2 b2b2
 3,a3 a3 a3, b3b3
 4,,
 5,a5 a5a5,


\end{filecontents*}

\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{filecontents}
\usepackage{datatool}
\usepackage{wrapfig}
\usepackage{xparse}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{tcolorbox}
\tcbuselibrary{poster}

\usepackage{bbding}
\usepackage{pifont}
\usepackage{enumitem, setspace}
 \tcbset{colframe=blue!75!black,colback=white}


 \DTLloaddb{file}{file.tex}

 \begin{document}

 \DTLforeach*
 {file}% Database
 {\No=No,\TextA=TextA,\TextB=TextB}
 {%
 \begin{tcbposter}[
  poster = {
    columns=1,
    rows=1,
    spacing=3mm,
    height=14cm,
    width=12cm,
  },
]
%Box A

\posterbox[colframe=red,width=7cm,height=6cm]{name=A,column=1}{

\begin{enumerate}[leftmargin =-1em]
\item[]  \raisebox{1ex-0.5\height}{\includegraphics[width=3cm]{example-image-a}}  \TextA \hfill xxx
\item[]  \raisebox{1ex-0.5\height}{\includegraphics[width=3cm]{example-image-b}}  \TextB \hfill yyy
\end{enumerate}
}
\end{tcbposter}
\newpage
}

\end{document}

在此处输入图片描述

感谢帮助

答案1

只要您知道 parbox 不能拆分长单词,就可以实现这一点,您修改后的 mwe 无法编译,因为存在冲突的 raisebox 条目,因此我已将它们分开以用于此修改后的答案

在此处输入图片描述

\RequirePackage{filecontents}
\begin{filecontents*}{file.tex}
 No,TextA,TextB
 1,a1 a1a1 a1a1a1 a1a1,b1 b1 b1 b1
 2, ,b22 b2b2 b2b2b2 b2b2
 3,a3 a3 a3, b3b3
 4,,
 5,a5 a5a5,


\end{filecontents*}

\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage{filecontents}
\usepackage{datatool}
\usepackage{wrapfig}
\usepackage{xparse}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{tcolorbox}
\tcbuselibrary{poster}

\usepackage{bbding}
\usepackage{pifont}
\usepackage{enumitem, setspace}
 \tcbset{colframe=blue!75!black,colback=white}


 \DTLloaddb{file}{file.tex}

 \begin{document}

 \DTLforeach*
 {file}% Database
 {\No=No,\TextA=TextA,\TextB=TextB}
 {%
 \begin{tcbposter}[
  poster = {
    columns=1,
    rows=1,
    spacing=3mm,
    height=14cm,
    width=12cm,
  },
]
%Box A

\posterbox[colframe=red,width=7cm,height=6cm]{name=A,column=1}{

\begin{enumerate}[leftmargin =-1em]
\item[]  \raisebox{-0.5\height}{\includegraphics[width=3cm]{example-image-a}}\raisebox{-1ex}{~\parbox{3.5cm}{\raggedright \TextA \hfill ~ xxxxx xxxxx xxxxxxx}}
\item[]  \raisebox{-0.5\height}{\includegraphics[width=3cm]{example-image-b}}\raisebox{-3pt}{~\parbox{3.5cm}{\raggedright \TextB \hfill ~ yyyyyyyy yyyyyyyyyyyyyyyyyyyyy}}
\end{enumerate}
}
\end{tcbposter}
\newpage
}

\end{document}

答案2

另一种方法是使用arraybooktabsadjustbox

\begin{filecontents*}{file.tex}
No,TextA,TextB
1,a1 a1a1 a1a1a1 a1a1 aa aa aaaaaaaaaaa,b1 b1 b1 b1 b1 b1b1 b1 b1
2, ,b22 b2b2 b2b2b2 b2b2
3,a3 a3 a3, b3b3
4,,
5,a5 a5a5,
\end{filecontents*}

\documentclass{article}
\usepackage[a4paper]{geometry}
\usepackage[export]{adjustbox}
\usepackage{filecontents}
\usepackage{datatool}
\usepackage{tcolorbox}
\tcbuselibrary{poster}
\tcbset{colframe=blue!75!black,colback=white}
\usepackage{array, booktabs}

\DTLloaddb{file}{file.tex}

\begin{document}

\DTLforeach*
{file}% Database
{\No=No,\TextA=TextA,\TextB=TextB}
{%
\begin{tcbposter}[
poster = {
columns=1,
rows=1,
spacing=3mm,
height=14cm,
width=12cm,
},
]
%Box A
\posterbox[colframe=red,width=7cm,height=6cm]{name=A,column=1}%
{
\setkeys{Gin}{width=\linewidth}
\begin{tabular*}{\linewidth}{@{} *{2}{p{\dimexpr0.5\linewidth-2\tabcolsep}} @{}}
\hline
\includegraphics[valign=t]{example-image-a}
&   \centering\arraybackslash
    \TextA\ xxxx xx xxxxx              \\
\addlinespace
\includegraphics[valign=t]{example-image-b}
&   \raggedright\arraybackslash
    \TextB\   yyyy yyy yyyyyyyyyyyyyy
\end{tabular*}
}
\end{tcbposter}
\newline
}
\end{document}

在此处输入图片描述

请注意,如果长单词不自然,即没有 \连字点,那么它们将会溢出表格,而且\posterbox……

相关内容