我需要输出以下文本,但由于\
是一个特殊字符,因此我无法输出:
[RegularExpression(@"\d+")]
有时我$
也需要使用美元符号,但它似乎也是一个特殊字符。
有什么方法可以在 LaTeX 中避开这些错误?
更新:
我\verb
按照建议使用了,但无法在其中运行命令。此外,在输出中,文本的字体和不透明度与默认字体和不透明度不同:
\verb|[RegularExpression(\newline @"\d+")]|
答案1
以下十个字符在 (La)TeX 中具有特殊含义:
&
%
$
#
_
{
}
~
^
\
在 之外\verb
,前七个可以通过在前面添加反斜杠来排版;对于另外三个,使用宏\textasciitilde
、\textasciicircum
和\textbackslash
。
\documentclass{article}
\begin{document}
\& \% \$ \# \_ \{ \}
\textasciitilde
\textasciicircum
\textbackslash
\end{document}
请注意,七个“单个非字母”宏不会占用其后的空格。对于最后三个占用其后空格的宏,您可以尝试这些方法之一添加空间。
答案2
通常这样的文本是用打字机排版的,所以有一种巧妙的方法来安排它
\verb|[RegularExpression(@"\d+")]|
之后\verb
应该添加一个文本中未使用的字符来“逐字”打印,并且相同的字符应该跟在文本后面。
这个命令有一个缺点:它不能在其他命令的参数中使用。
还有第二种“解决方案”,如果需要的次数有限,它会派上用场:
\texttt{[RegularExpression(@"\string\d+")]}
其中 参数中的命令\texttt
是允许的。甚至不需要使用\texttt
:
\textsf{[RegularExpression(@"\string\d+")]}
也能正常工作(当 T1 字体编码处于活动状态时)并且会以无衬线字体打印字符串。
答案3
我需要一种方法来转义所有特殊字符,然后我发现这个 Perl 函数:
sub latex_escape {
my $paragraph = shift;
# Replace a \ with $\backslash$
# This is made more complicated because the dollars will be escaped
# by the subsequent replacement. Easiest to add \backslash
# now and then add the dollars
$paragraph =~ s/\\/\\backslash/g;
# Must be done after escape of \ since this command adds latex escapes
# Replace characters that can be escaped
$paragraph =~ s/([\$\#&%_{}])/\\$1/g;
# Replace ^ characters with \^{} so that $^F works okay
$paragraph =~ s/(\^)/\\$1\{\}/g;
# Replace tilde (~) with \texttt{\~{}}
$paragraph =~ s/~/\\texttt\{\\~\{\}\}/g;
# Now add the dollars around each \backslash
$paragraph =~ s/(\\backslash)/\$$1\$/g;
return $paragraph;
}
例如它将转换这个:
& % $ # _ { } ~ ^ \ \today
变成这样:
\& \% \$ \# \_ \{ \} \texttt{\~{}} \^{} $\backslash$ $\backslash$today
答案4
如果有人正在寻找另一种方法来转义特殊字符,则可以使用该listings
包来完成。
\lstinline{[RegularExpression(@"\d+")]}
由于所有字符都将按原样显示,因此无法执行块内的任何命令。
更新:内联列表\lstinline
通过包含选项来支持数学模式mathescape
。它也支持escapechar
选项,但需要手动激活(更多这里)。
% enable escapechar for \lstinline
\makeatletter
\patchcmd{\lsthk@TextStyle}{\let\lst@DefEsc\@empty}{}{}{\errmessage{failed to patch}}
\makeatother
% ...
\lstinline[escapechar=`]|\cite{} in \lstinline `\cite{wgan}`|
\lstinline[basicstyle=\small\ttfamily,mathescape]{[RegularExpression(@"\d+")] // some math: $\sum_{i}^{N}{x_i}$}
注意\lstinline{ }
并不转义{}
,所以\lstinline| |
使用 。
也可以定制:
\lstinline[basicstyle=\small\ttfamily\color{red}]{[RegularExpression(@"\d+")]}
\ttfamily
teletypefont 系列在哪里。