我正在寻找一个包含单个字符宽度的字母“NUL”的 LaTeX 符号。它很好地表示了\0
在 C 派生编程语言中经常输入的字符串终止字符。在 Unicode 中,它表示为代码点 U+2400。
要明确的是,我不是在寻找:
\varnothing
\emptyset
- 和当然不
\phi
!
我也应该清楚,我正在寻找一个表示控制字符,打印或显示它,而不是让它执行其预期的功能作为一个控制字符。
作为一个密切相关的附带问题,假设我知道 Unicode 字形的代码点。有没有办法确定该字形在 LaTeX 中的等效项?我对 LaTeX 排版还比较陌生,所以我还没有找到这样的参考资料。
答案1
如果您使用pdflatex
,则可以使用该ascii
包:
\documentclass{article}
\usepackage{ascii}
\begin{document}
Is this it? \NUL
\end{document}
您还可以直接将符号输入为 Unicode,因此代码可以移植到 XeLaTeX 或 LuaLaTeX。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{ascii}
\usepackage{newunicodechar}
\newunicodechar{␀}{\NUL}
\begin{document}
Is this it? ␀
\end{document}
使用 XeLaTeX 或 LuaLaTeX fontspec
,找到带有该字符的字体,然后执行以下操作
\documentclass{article}
\usepackage{fontspec}
\usepackage{newunicodechar}
\newfontface{\ASCIICONTROLS}{FreeMono} % <--- or another font
\newunicodechar{␀}{{\ASCIICONTROLS ␀}}
\begin{document}
Is this it? ␀
\end{document}
答案2
如果使用支持 Unicode/OpenType 字体的 TeX 引擎,那么只需找到包含 Unicode 代码点 U+2400 的字体即可,例如:
% lualatex or xelatex
\documentclass{article}
\usepackage{fontspec}
\begin{document}
\def\test#1{#1:&\fontspec{#1}\symbol{"2400}\\}
\begin{tabular}{l@{ }l}
\test{FreeMono}
\test{FreeSans}
\test{FreeSerif}
\test{Quivira}% http://www.quivira-font.com/
\end{tabular}
\end{document}
答案3
如果您希望它符合当前字体的大小和样式,您可以构建自己的字体:
\documentclass[a2]{article}
\usepackage{stackengine,scalerel}
\newcommand\NUL{\scalerel*{$\Shortstack[l]{N \phantom{N}U \phantom{NU}L}$}{X}}
\begin{document}
\LARGE
This is \NUL
\normalsize
This is \NUL
\itshape
This is \NUL
\upshape\ttfamily
This is \NUL
\end{document}
如果为了清楚起见,希望符号总是加粗,那么
\newcommand\NUL{\scalerel*{$\bfseries\Shortstack[l]{N \phantom{N}U \phantom{NU}L}$}{X}}
可以解决此问题: