我需要一些帮助来创建适合文本行的具有两层颜色和文本的框(如图所示)。我考虑过使用,tcolorbox
但还没有成功。它是“必需的”(不是必需的,但很花哨;))用于使用 PCP 算法(理论计算机科学)。
希望有人有什么好的想法。
答案1
使用 Tikz 的强制性解决方案!
输出
代码
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\tikzset{
split/.style={rectangle split, rectangle split parts=2, draw}
}
\newcommand{\double}[2]{%
\tikz[baseline=(a.center)]{
\tikz \node[split, anchor=west, yshift=-1mm, minimum width=1cm, inner sep=3pt, rectangle split part fill={black,yellow}] (a) {\textcolor{yellow}{#1}\nodepart{two}#2};
}}
\begin{document}\noindent
:\double{bbaa}{ba}, \double{ab}{abb} und \double{ab}{aabb}\\
:\double{0}{00}, \double{001}{11} und \double{1000}{0}
\end{document}
答案2
宏\bibox{top}{bottom}
用于创建框。默认情况下 ( \biboxmode
= 0),框宽度设置为内容宽度。通过重置\biboxmode
为 以外的值0
,它将使用参数 使所有框具有固定宽度\biboxwd
。
\documentclass{article}
\usepackage{stackengine,xcolor}
\def\biboxmode{0}
\def\biboxwd{18pt}
\newcommand\bibox[3][\biboxmode]{%
\setbox0=\hbox{\stackanchor{#2}{#3}}%
\if0\biboxmode\else\wd0=\biboxwd\relax\fi%
\setbox2=\hbox{\stackanchor[0pt]{\color{yellow}\colorbox{black}{\makebox[\wd0]{#2}}}%
{\colorbox{yellow}{\makebox[\wd0]{#3}}}}%
{\fboxsep=0pt\fbox{\box2}}%
}
\parskip 1ex
\begin{document}
: \bibox{bbaa}{ba}, \bibox{ab}{abb} und \bibox{ab}{aabb}\par
: \bibox{0}{00}, \bibox{001}{11} und \bibox{1000}{0}\par
Or else constant width:\def\biboxmode{1}\par
: \bibox{bbaa}{ba}, \bibox{ab}{abb} und \bibox{ab}{aabb}\par
: \bibox{0}{00}, \bibox{001}{11} und \bibox{1000}{0}
\end{document}
如果希望参数\biboxwd
不是“固定的”,而是“最小的”,框宽度(对于\biboxmode
除 之外的0
),那么此代码可以实现这一点:
\documentclass{article}
\usepackage{stackengine,xcolor}
\def\biboxmode{0}
\def\biboxwd{22pt}
\newcommand\bibox[3][\biboxmode]{%
\setbox0=\hbox{\stackanchor{#2}{#3}}%
\if0\biboxmode\else\ifdim\wd0<\biboxwd\relax\wd0=\biboxwd\relax\fi\fi%
\setbox2=\hbox{\stackanchor[0pt]{\color{yellow}\colorbox{black}{\makebox[\wd0]{#2}}}%
{\colorbox{yellow}{\makebox[\wd0]{#3}}}}%
{\fboxsep=0pt\fbox{\box2}}%
}
\parskip 1ex
\begin{document}
: \bibox{bbaa}{ba}, \bibox{ab}{abb} und \bibox{ab}{aabb}\par
: \bibox{0}{00}, \bibox{001}{11} und \bibox{1000}{0}\par
Or else apply minimum width:\def\biboxmode{1}\par
: \bibox{bbaa}{ba}, \bibox{ab}{abb} und \bibox{ab}{aabbbbb}\par
: \bibox{0}{00}, \bibox{001}{11} und \bibox{1000}{0}
\end{document}