我使用数据工具并将文本和图像连接在一起。请参阅附图。
如果此文本(文本 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
另一种方法是使用array
和booktabs
包adjustbox
:
\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
……