用空白框替换给定单词的每个字母

用空白框替换给定单词的每个字母

我想要一个命令,它可以接受一个单词并用一个框替换每个字母。

例如,输出

The mystery word is \mycommand{hello}.

应该

神秘词是□□□□□。

答案1

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tokcycle,amssymb}
\Characterdirective{\addcytoks{$\square$}}
\newcommand\mycommand[1]{\tokencyclexpress#1\endtokencyclexpress}
\begin{document}
The mystery word is \mycommand{hello}.
\end{document}

在此处输入图片描述

为了给出更充分的可能性的例子,我提供了另一个例子:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tokcycle,amssymb}
\Characterdirective{\addcytoks{\fbox{#1}\;}}
\newcommand\mycommand[1]{\tokencyclexpress#1\endtokencyclexpress}
\begin{document}
The mystery word is \mycommand{hello \textit{Mom}. \textbf{I love you}.}.
\end{document}

在此处输入图片描述

答案2

基本上是一行代码expl3

\documentclass{article}

\providecommand{\textsquare}{% from amsthm
  \begingroup \usefont{U}{msa}{m}{n}\symbol{3}\endgroup
}


\ExplSyntaxOn

\NewDocumentCommand{\mystery}{m}
 {
  \text_map_inline:nn { #1 } { \textsquare \kern1pt } \unkern
 }

\ExplSyntaxOff

\begin{document}

The mystery word is \mystery{hello}

The mystery word is \mystery{équipe}

The mystery word is \mystery{naïve}

\end{document}

在此处输入图片描述

答案3

为了确保万无一失,我们采用了基于 LuaLaTeX 的解决方案。

在此处输入图片描述

请注意,的参数\mycommand 可以包含一般的 utf8 编码字符,而不仅仅是 ASCII 编码字符;因此,\mycommand{你好世界}完全没问题。还请注意,由于\directlua\luastring是可扩展的,所以也是可扩展的\mycommand

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{amssymb} % for '\square' macro
\usepackage{luacode} % for '\luastring' macro
\newcommand\mycommand[1]{\directlua{ 
    tex.sprint (( unicode.utf8.gsub ( \luastring{#1} , "." , "$\\square$" ) )) }}

\begin{document}
The mystery word is \mycommand{hello}, or is it \mycommand{你好世界}?
\end{document}

相关内容