接受的答案是这个问题显示了的简洁重新定义\textvisiblespace
,我喜欢使用它,因为它不会在数学模式下产生警告。
但是,我在等式中将其与等宽字体一起使用,结果看起来并不完美:符号离其右侧邻居太近了。这是一个 MWE:
\documentclass{article}
\newcommand\vartextvisiblespace[1][.3em]{%
\mbox{\kern.1em\vrule height.3ex}%
\vbox{\hrule width#1}%
\hbox{\vrule height.3ex}
}
\begin{document}
A formula with visible space in it:
\begin{equation}
s = \mathtt{a\vartextvisiblespace string\vartextvisiblespace sequence}
\end{equation}
\end{document}
有什么干净的方法可以让它看起来更好?
答案1
您正在构建的字形比等宽字体中的字母更宽;使用 0.5em 作为宽度并简化定义:
\documentclass{article}
\newcommand\vartextvisiblespace[1][.5em]{%
\makebox[#1]{%
\kern.07em
\vrule height.3ex
\hrulefill
\vrule height.3ex
\kern.07em
}% <-- don't forget this one!
}
\begin{document}
A formula with visible space in it:
$s = \mathtt{a\vartextvisiblespace string\vartextvisiblespace sequence}$
\ttfamily
a\vartextvisiblespace\vartextvisiblespace\vartextvisiblespace a
abcde
\end{document}
您可以使用或类似工具来微调宽度\vartextvisiblespace[.3em]
。
答案2
只需在右侧添加一个小的\kern
(相当于左侧):
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\newsavebox{\textvisiblespacebox}
\savebox{\textvisiblespacebox}{\texttt{a}}
\newcommand\vartextvisiblespace[1][\wd\textvisiblespacebox]{%
\makebox[#1]{\kern.1em\rule{.4pt}{.3ex}%
\hrulefill%
\rule{.4pt}{.3ex}\kern.1em}%
}
\newcommand{\x}{\vartextvisiblespace}% For ease-of-use
\begin{document}
\begin{align*}
a &= \mathtt{a\x string\x sequence} \\
b &= \mathtt{a\x\x\x\x\x\x\x\x sequence} \\
c &= \mathtt{a\x\x\x\x\x\x\x\x\x\x\x\x\x\x\x e}
\end{align*}
\end{document}
我还更新了 的构造,\vartextvisiblespace
使其更符合 LaTeX2e 风格。它测量普通打字机字体字符的宽度,并使用它来确定可见空间的框宽度。