LaTeX 中的转义字符

LaTeX 中的转义字符

我需要输出以下文本,但由于\是一个特殊字符,因此我无法输出:

[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+")]}

\ttfamilyteletypefont 系列在哪里。

在此处输入图片描述

相关内容