以小字体显示彩色字符串

以小字体显示彩色字符串

我想显示由“s”和“f”组成的随机字符串,使得每个 s 在蓝色背景上为白色,每个 f 在红色背景上为白色。我可以在普通文本中让它正常工作,但是当我想在 \scriptsize 中显示它时,它似乎不够小。

我使用的代码是:

\newcommand{\ss}[0]{\colorbox{blue}{\textcolor{white}{{\texttt{\scriptsize{s\strut}}}}}}
\newcommand{\ff}[0]{\colorbox{red}{\textcolor{white}{{\texttt{\scriptsize{f\strut}}}}}}

然后当我想显示一个字符串时我写了类似的东西:

\ss\ff\ss\ff\ff\ff\ss\ss

答案1

我认为就使用而言最好使用更简单的宏。

\documentclass{article}
\usepackage{xparse,xcolor}

\ExplSyntaxOn

\NewDocumentCommand{\fs}{m}
 {
  \tl_map_function:nN { #1 } \firth_fs:n
 }

\cs_new_protected:Nn \firth_fs:n
 {
  \str_case:nn { #1 }
   {
    {f}{\__firth_fs_box:nn { red } { f }}
    {s}{\__firth_fs_box:nn { blue } { s }}
    % add more cases if needed
   }
 }
\cs_new_protected:Nn \__firth_fs_box:nn
 {
  \colorbox{#1}
   {
    \color{white}
    \use:c { check@mathfonts }
    \fontsize { \use:c{ sf@size } } { 0 } \selectfont
    #2 \vphantom{f} % possibly 'fy' if letters with descenders are used
   }
 }

\ExplSyntaxOff

\begin{document}

X \fs{sfsfffs} X

\medskip

\Large X \fs{sfsfffs} X

\medskip

\footnotesize X \fs{sfsfffs} X

\end{document}

在此处输入图片描述

您甚至可以输入

\fs{s f s fff s}

因为空格会被忽略。

答案2

欢迎到这里!

正如评论中所说,\ss已经定义,因此您需要重新定义它或定义另一个命令来打印 s。

但是,高度\strut\vrule8.5pt,深度为 3.5pt,宽度为 0pt。

这不会自动适应脚本大小。但你可以调整\strut

\documentclass{article}

\usepackage{xcolor}

\renewcommand{\strut}{\vrule height5pt depth0pt width0pt}
\renewcommand{\ss}[0]{\colorbox{blue}{\textcolor{white}{{\texttt{\scriptsize{s\strut}}}}}}
\newcommand{\ff}[0]{\colorbox{red}{\scriptsize\textcolor{white}{{\texttt{{f\strut}}}}}}



\begin{document}
\ss\ff\ss\ff\ff\ff\ss\ss
\end{document}

看:

代码编译后的图片

但是,更改\strut或重新定义\ss可能会产生不良副作用。也许可以不重新定义 strut ,而是给它另一个名称\turts,例如\ss

相关内容