我想显示由“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
为\vrule
8.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
。