如何编写内联“\0x”,而不让 LaTeX 将每个值放在新行上?
C 语言中的“\0x”表示十六进制值。我想编写一个十六进制表示值的内联字符串。
把这当作我想写的
\0x68 \0x6F \0x77 \0x20 \0x64 \0x6F \0x3F
我试过
\\0x68 \\0x6F \\0x77 \\0x20 \\0x64 \\0x6F \\0x3F
但每个十六进制值都放在换行符上,并且缺少反斜杠。
我也试过
\texttt{\0x68\0x6F\0x77\0x20\0x64\0x6F\0x3F}
但同样的事情发生了。
答案1
答案2
如果你有很多这样的命令,那么定义自己的命令是有意义的,比如\hexa
\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand{\hexa}{sm}
{% * means also compute the representation
% #2 = number to represent
\texttt
{
\IfBooleanTF { #1 }
{
\joh_hexa:e { \int_to_Hex:n { #2 } }
}
{
\joh_hexa:n { #2 }
}
}
}
\cs_new:Nn \joh_hexa:n
{
\char_generate:nn { `\\ } { 12 } 0x #1
}
\cs_generate_variant:Nn \joh_hexa:n { e }
\ExplSyntaxOff
\begin{document}
\hexa{68} \hexa{6F} \hexa{77} \hexa{20} \hexa{64} \hexa{6F} \hexa{3F}
\hexa*{123456}
\hexa*{\value{page}}
\end{document}
您会看到\hexa*
TeX 会为您转换为十六进制,您甚至可以使用 LaTeX 计数器,如图所示。
使用命令更好,因为如果您后来改变主意,例如决定不使用反斜杠,您只需在一个地方更改定义即可。
答案3
答案4
请尝试以下操作:
\documentclass{article}
\begin{document}
The value \texttt{\textbackslash0x68} is a hexadecimal code.
\end{document}