Keepspaces 不适用于我的列表配置

Keepspaces 不适用于我的列表配置

我有类似的东西:

\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}

相关内容