我想知道制作显式空格字符(我甚至不知道它应该叫什么)的最佳方法,就像您在环境中得到的那些一样\begin{verbatim*}
。我发现最接近的方法是
\sqcup
在数学模式中,但对我来说这似乎有点不妥。是否有我要查找的文本符号?
答案1
这里不需要任何特殊的东西;标准 LaTeX 提供\textvisiblespace
:
\documentclass{article}
\begin{document}
An explicit space: a\textvisiblespace b
\end{document}
原始定义的一个简单变体:
\DeclareTextCommandDefault{\textvisiblespace}{%
\mbox{\kern.06em\vrule \@height.3ex}%
\vbox{\hrule \@width.3em}%
\hbox{\vrule \@height.3ex}}
允许使用可选参数控制宽度:
\documentclass{article}
\newcommand\Vtextvisiblespace[1][.3em]{%
\mbox{\kern.06em\vrule height.3ex}%
\vbox{\hrule width#1}%
\hbox{\vrule height.3ex}}
\begin{document}
An explicit space: a\textvisiblespace b
An explicit space: a\Vtextvisiblespace b
An explicit 1em space: a\Vtextvisiblespace[1em]b
An explicit 1cm space: a\Vtextvisiblespace[1cm]b
\end{document}
答案2
最简单的获取方法是用打字机字体打印字符 32:
\texttt{\char32}
答案3
你可以将该字符(一个 squat-u)存储在一个框中并在必要时使用它:
\documentclass{article}
\newsavebox{\spacebox}
\begin{lrbox}{\spacebox}
\verb*! !
\end{lrbox}
\newcommand{\aspace}{\usebox{\spacebox}}%
\begin{document}
Hi\aspace there!
\end{document}
你不能直接将它存储在宏中,因为逐字内容不能作为参数传递。但是,通过lrbox
环境对其进行装箱是可行的。使用 squat-u via \aspace
。
另一种选择是使用fancyvrb
:
\documentclass{article}
\usepackage{fancyvrb}
\fvset{showspaces=true}
\SaveVerb{verbspace}! !
\newcommand{\aspace}{\UseVerb{verbspace}}%
\begin{document}
Hi\aspace there!
\end{document}
答案4
Unicode 字符 uni2423 存在于多种 TeX 字体中(Stix、Latin Modern Roman 等)。如果您使用的是 LuaLaTeX 或 XeTeX,您可以直接调用该字符,也可以从字符映射中粘贴。
这不一定比其他回复中讨论的方法更好。这只是另一种方法。让我们看看它在这里是否有效。如果您看到下面 A 和 B 之间的字符(从字符映射中粘贴),则意味着您的浏览器的字体有它(我的有):
A␣B
\verb|A␣B|
只要字体有符号,此方法也适用于 LuaLaTeX 和 XeTeX 。