我有类似的东西:
\documentclass[]{article}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{corH}{HTML}{7030A0}
\definecolor{corE}{HTML}{FFC000}
\definecolor{corL}{HTML}{007523}
\lstdefinelanguage{StrucCompOut}{
literate=
{@}{{\colorbox{corH!20}{\makebox[1pt]{\strut\textcolor{corH}{H}}}}}1
{\$}{{\colorbox{corH!10}{\makebox[1pt]{\strut\textcolor{corH!80}{h}}}}}1
{?}{{\colorbox{corE!20}{\makebox[1pt]{\strut\textcolor{corE}{E}}}}}1
{\&}{{\colorbox{corE!10}{\makebox[1pt]{\strut\textcolor{corE!80}{e}}}}}1
{+}{{\colorbox{corL!20}{\makebox[1pt]{\strut\textcolor{corL}{L}}}}}1
{*}{{\colorbox{corL!10}{\makebox[1pt]{\strut\textcolor{corL!80}{l}}}}}1,
sensitive=true,
numbers=none,
breaklines=true,
lineskip=0pt,
basicstyle=\ttfamily,
keepspaces=true
}
\lstset{
language=StrucCompOut
}
\newcommand{\alnData}[1]{\lstinline[columns=fixed]$#1$}
\begin{document}
\begin{table}
\centering
\begin{tabular}{ccc}
\toprule
\textbf{A} & \textbf{B} & \textbf{C} \\
\midrule
\multirow{2}[1]{*}{AAA} & \alnData{\$\$\$@@@???\&\&?******} & \multirow{2}[1]{*}{AAA} \\
& \alnData{aaaBBBCCCddCffffff} & \\
& \alnData{ ||| | | } & \\
\multirow{2}[1]{*}{BBB} & \alnData{BBBBBBddCddCEEEEEE} & \multirow{2}[1]{*}{BBB} \\
& \alnData{@@@@@@\&\&?\&\&?++++++} & \\
\bottomrule
\end{tabular}%
\end{table}
\end{document}
这就是:
但是在我的带有管道字符的中间行中,我需要保留空格,即,我需要类似这样的内容:
我已经尝试了很多我在这里读到的参数和技巧,但我无法让它工作。我需要保留空格,因为管道必须与我的数据对齐。所有数据都将放在一个表中,我有很多行集,其中包含类似的数据。我认为为 literate 插入一个空格是可行的,但我不知道该怎么做。
答案1
您不应该吸收标记作为参数,因为这会将空格压缩为一个;相反,请使用输入中未出现的字符,此处'
。您还有一个优点,即不需要在特殊字符前使用反斜杠。
\documentclass[]{article}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{corH}{HTML}{7030A0}
\definecolor{corE}{HTML}{FFC000}
\definecolor{corL}{HTML}{007523}
\lstdefinelanguage{StrucCompOut}{
literate=
{@}{{\colorbox{corH!20}{\makebox[1pt]{\strut\textcolor{corH}{H}}}}}1
{\$}{{\colorbox{corH!10}{\makebox[1pt]{\strut\textcolor{corH!80}{h}}}}}1
{?}{{\colorbox{corE!20}{\makebox[1pt]{\strut\textcolor{corE}{E}}}}}1
{\&}{{\colorbox{corE!10}{\makebox[1pt]{\strut\textcolor{corE!80}{e}}}}}1
{+}{{\colorbox{corL!20}{\makebox[1pt]{\strut\textcolor{corL}{L}}}}}1
{*}{{\colorbox{corL!10}{\makebox[1pt]{\strut\textcolor{corL!80}{l}}}}}1,
sensitive=true,
numbers=none,
breaklines=true,
lineskip=0pt,
basicstyle=\ttfamily,
keepspaces=true
}
\lstset{
language=StrucCompOut
}
\newcommand{\alnData}{\lstinline[columns=fixed]}
\begin{document}
\begin{table}
\centering
\begin{tabular}{ccc}
\toprule
\textbf{A} & \textbf{B} & \textbf{C} \\
\midrule
\multirow{2}[1]{*}{AAA} & \alnData'$$$@@@???&&?******' & \multirow{2}[1]{*}{AAA} \\
& \alnData'aaaBBBCCCddCffffff' & \\
& \alnData' ||| | | ' & \\
\multirow{2}[1]{*}{BBB} & \alnData'BBBBBBddCddCEEEEEE' & \multirow{2}[1]{*}{BBB} \\
& \alnData'@@@@@@&&?&&?++++++' & \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
不包含以下内容的实现listings
:
\documentclass[]{article}
\usepackage{booktabs,multirow}
\usepackage{xcolor}
\usepackage{xparse}
\ExplSyntaxOn
% for setting up the special characters
\NewDocumentCommand{\definespecialchar}{mm}
{
\cs_new_protected:cpn { david \tl_to_str:n {#1} } { #2 }
}
\NewDocumentCommand{\specialcolorbox}{mmm}
{ % #1=bg color; #2=text color; #3=char
\group_begin:
\setlength{\fboxsep}{0pt}
\colorbox{#1}{\strut\color{#2}#3}
\group_end:
}
\NewDocumentCommand{\alnData}{v}
{
\david_alndata:n { #1 }
}
\tl_new:N \__david_alnstring_tl
\cs_new_protected:Nn \david_alndata:n
{
\tl_set:Nn \__david_alnstring_tl { #1 }
\regex_replace_all:nnN
{ [\@\$\?\&\+\*] }
{ \c{ david \0 } }
\__david_alnstring_tl
\texttt{ \__david_alnstring_tl }
}
\ExplSyntaxOff
\definecolor{corH}{HTML}{7030A0}
\definecolor{corE}{HTML}{FFC000}
\definecolor{corL}{HTML}{007523}
\definespecialchar{@}{\specialcolorbox{corH!20}{corH} {H}}
\definespecialchar{$}{\specialcolorbox{corH!10}{corH!80}{h}}
\definespecialchar{?}{\specialcolorbox{corE!20}{corE} {E}}
\definespecialchar{&}{\specialcolorbox{corE!10}{corE!80}{e}}
\definespecialchar{+}{\specialcolorbox{corL!20}{corL} {L}}
\definespecialchar{*}{\specialcolorbox{corL!10}{corL!80}{l}}
\begin{document}
\begin{table}
\centering
\begin{tabular}{ccc}
\toprule
\textbf{A} & \textbf{B} & \textbf{C} \\
\midrule
\multirow{2}[1]{*}{AAA} & \alnData'$$$@@@???&&?******' & \multirow{2}[1]{*}{AAA} \\
& \alnData'aaaBBBCCCddCffffff' & \\
& \alnData' ||| | | ' & \\
\multirow{2}[1]{*}{BBB} & \alnData'BBBBBBddCddCEEEEEE' & \multirow{2}[1]{*}{BBB} \\
& \alnData'@@@@@@&&?&&?++++++' & \\
\bottomrule
\end{tabular}%
\end{table}
\end{document}
答案2
首先添加:
{w}{{\colorbox{corL!0}{\makebox[1pt]{\strut\textcolor{corL!0}{}}}}}1,
...创建一个白色框。w
是空的(没有文字)。
第二个颜色框{/}
{/}{{\colorbox{corL!0}{\makebox[1pt]{\strut\textcolor{black!100}{|}}}}}1
... 有白色背景和黑色|
。
第二步:替换\alnData{ ||| | | }
为\alnData{www///ww/ww/wwwwww}
。
梅威瑟:
\documentclass[]{article}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{corH}{HTML}{7030A0}
\definecolor{corE}{HTML}{FFC000}
\definecolor{corL}{HTML}{007523}
\lstdefinelanguage{StrucCompOut}{
literate=
{@}{{\colorbox{corH!20}{\makebox[1pt]{\strut\textcolor{corH}{H}}}}}1
{\$}{{\colorbox{corH!10}{\makebox[1pt]{\strut\textcolor{corH!80}{h}}}}}1
{?}{{\colorbox{red!20}{\makebox[1pt]{\strut\textcolor{corE}{E}}}}}1
{\&}{{\colorbox{corE!10}{\makebox[1pt]{\strut\textcolor{corE!80}{e}}}}}1
{+}{{\colorbox{corL!20}{\makebox[1pt]{\strut\textcolor{corL}{L}}}}}1
{*}{{\colorbox{corL!10}{\makebox[1pt]{\strut\textcolor{corL!80}{l}}}}}1
{/}{{\colorbox{corL!0}{\makebox[1pt]{\strut\textcolor{black!100}{|}}}}}1
{w}{{\colorbox{corL!0}{\makebox[1pt]{\strut\textcolor{corL!0}{|}}}}}1,
sensitive=true,
numbers=none,
breaklines=true,
lineskip=0pt,
basicstyle=\ttfamily,
keepspaces=true
}
\lstset{
language=StrucCompOut
}
\newcommand{\alnData}[1]{{\lstinline[columns=fixed]$#1$}}
\begin{document}
\begin{table}
\centering
\begin{tabular}{ccc}
\toprule
\textbf{A} & \textbf{B} & \textbf{C} \\
\midrule
\multirow{2}[1]{*}{AAA} & \alnData{\$\$\$@@@???\&\&?******} & \multirow{2}[1]{*}{AAA} \\
& \alnData{aaaBBBCCCddCffffff} & \\
& \alnData{www///ww/ww/wwwwww} & \\
\multirow{2}[1]{*}{BBB} & \alnData{BBBBBBddCddCEEEEEE} & \multirow{2}[1]{*}{BBB} \\
& \alnData{@@@@@@\&\&?\&\&?++++++} & \\
\bottomrule
\end{tabular}
\end{table}
\end{document}