【问题标题】:How does one insert a backslash or a tilde (~) into LaTeX?如何在 LaTeX 中插入反斜杠或波浪号 (~)?
【发布时间】:2010-09-20 08:45:39
【问题描述】:
  • 如何在 LaTeX 文档的文本中插入“\”(反斜杠)?
  • 如何插入“~”(波浪号)? (如果你插入\~,它会给你一个波浪号作为下一个字母的重音。)

我相信\backslash 可以用于数学公式,但不能用于文本本身。 Lamport、Kopka 和 Mittelbach 的文本已经说了很多(但仅此而已),所以让我一直在思考如何在常规文本中添加反斜杠。

【问题讨论】:

标签: symbols


【解决方案1】:

TL;DR

\textbackslash 在文本模式下生成反斜杠。数学模式$\sim$\texttildelow(来自textcomp 包)是较低波浪号的选项(而\~{}\textasciitilde 在文本模式下产生凸起波浪号)


长答案:

Comprehensive LaTeX Symbol List 是您的朋友。正确的链接似乎在不断变化,但如果您有完整的 TeX Live 安装,命令 texdoc symbols-a4 将显示您的本地副本。

\textbackslash\textasciitilde 在文档的多个位置都可以找到,但 LaTeX 2e ASCII 表(在撰写本文时为表 529)和以下讨论对于所有人来说都是一个方便的资源ASCII 字符。特别是,讨论指出\~{}\textasciitilde 产生一个凸起的波浪号,而数学模式$\sim$\texttildelow 是一个较低的波浪号的选项;后者在textcomp 包中,在Computer Modern 以外的字体中看起来最好。如果是排版文件名或url,文档推荐url包。

请记住将 TeX 宏与周围的文本分隔开,例如bar\textasciitilde{}foo.

【讨论】:

  • 这非常棒,对我帮助很大。我只想补充一点,以防您在文本中使用这些,请这样做:bar\textasciitilde{}foo
  • 当 Zotero 导出 bibtex 文件时,它会用{\textasciitilde} 替换一些波浪号。使用 biblatex 时(使用 texlive2007 [don't ask] 中的 bibtex 后端),这会导致错误(Missing $ inserted)。解决方法是使用{\textasciitilde{}}
  • 还有detexify
  • 还有write-math.com。我刚刚尝试过:Tildebackslash。它有效:-)(这是我的学士论文——目前仍在进行中)
  • 此答案具有误导性,\textascitilde 将在具有波浪号的字体编码中从当前字体生成波浪号。它只会在旧版 OT1 编码中的空基上产生波浪重音
【解决方案2】:

规范答案

这个网站上现在有 an extensive discussioncanonical answer。使用那里描述的解决方案。 tl;博士:

对于 URL 或文件路径,请使用 url(或 hyperref)。否则:

  1. 如果您使用标准的Computer Modern 字体、txfontspxfonts:使用此解决方法:

     \usepackage{textcomp}
     \newcommand{\textapprox}{\raisebox{0.5ex}{\texttildelow}}
    

    …或者使用拉丁现代字体(见下一点)。

  2. 如果您通过mathptmxlm 等包使用PostScript/Type1 font:将字体编码设置为T1(通过\usepackage[T1]{fontenc})并使用\textasciitilde

  3. 如果您通过 XeTeX 或 LuaTeX 使用 TTF 或 OTF 字体:使用 \char`~ 插入波浪号。

过时的答案,为后代保留

textcomp\texttildelow 实际上是一个非常糟糕的选择:对于大多数字体来说,它低了。

更好的渲染可以通过以下方式实现,它可以调整(否则太宽)$\sim$ 的外观:

{\raise.17ex\hbox{$\scriptstyle\sim$}}

这取自Arbitrary LateX reference ...该页面还提供了一个很好的比较表:

\texttt 中使用时,我会在波浪号周围添加一个\mathtt,以使其更适合字体:

{\raise.17ex\hbox{$\scriptstyle\mathtt{\sim}$}}

差异很小但很明显。

【讨论】:

  • @nnyby:最好的解决方案是使用“原始”字形,即\texttt{\char`\\}
  • 所有这些:{\raise.17ex\hbox{$\scriptstyle\sim$}} 只是为了输入正确的~。而 LaTeX 应该可以让你专注于内容......
  • @Vivi:(La)TeX 的重点是您可以通过定义宏来关注内容。您永远不需要(或应该!)在宏定义中键入以上内容——除了一次。您可以甚至定义一个活动字符,以便~ 实际上插入一个正确的波浪号。也就是说,您对这个特定实例当然是正确的:不提供对所有 Unicode 字符(哎呀,甚至 ASCII)的 1:1 映射是 LaTeX 的一个主要弱点。
  • 这是一个很好的解决方案。谢谢你。尽管我建议将其放入自己的新命令中,例如:\newcommand{\mytilde}{\raise.17ex\hbox{$\scriptstyle\mathtt{\sim}$}},这样您就可以简单地编写\mytilde
  • 要将~定义为活动字符以便您可以直接使用它,请将以下内容添加到您的序言中:\catcode`~ = 13\def~{{\raise.17ex\hbox{$\scriptstyle\sim$}}}
【解决方案3】:

您还可以使用“plain TeX”方法来索引当前字体中的实际 ascii 字符:

\char`\\
\char`\~

我经常使用前者来编写需要在打字机字体中使用反斜杠的宏; \textbackslash 有时仍会使用罗马字体,具体取决于字体设置。当然,如果你经常使用这些,你应该为它们定义自己的宏:

\newcommand\SLASH{\char`\\}

【讨论】:

  • 宁可\newcommand{\backslash}{\char`\\}
  • 嗯?宏名称可以是您喜欢的任何名称。它周围的大括号是可选的。而\backslash 已经被定义为一个数学实体。
  • 这是我首选的反斜杠解决方案,因为它适合周围环境的字体(例如,您可以在\texttt中使用它)。
  • 对于所有的菜鸟,你可以通过写 $\SLASH{你想在}$ 前面放一个反斜杠来调用它
  • @Greg — 不需要大括号。
【解决方案4】:

我想到您可能正在尝试键入 URL。在这种情况下,url 包会为您处理一切:

\usepackage{url}
...
\url{somewhere\home\~will}

对于路径(即本地文件),有\path,其工作方式与\url 相同,只是在加载hyperref 时提供正确的链接。

如果您正在加载hyperref,则没有理由也加载url

【讨论】:

  • 谢谢你,我试图在新命令中排版电传反斜杠(粗斜杠)。我找到了解决方法,但使用 url 包更优雅。
  • 不幸的是,生成的输出不再可点击,无论是 DVI 还是 PDF。有什么办法让它可以点击?
  • @DmitriZaitsev — 我不知道您所说的可点击是什么意思。你在加载 hyperref 包吗?在这种情况下,您不需要单独加载 url
  • @WillRobertson 感谢您的澄清,我已经设法通过加载 hyperref 包而不是 url 包使其可点击(以便单击它会在浏览器中打开页面)但是仍在使用\url{...} 而不是href{...}
【解决方案5】:

如果这不烦人的话:

 \textbackslash
 \texttt{\char`\~} or $\sim$

【讨论】:

  • BMH 或其他人:如果您对波浪号有更好的答案,请编辑。
  • 不要使用\verb,因为它会破坏脆弱的论点。 \texttt{\char`\~} 会是更好的选择。 (请参阅本页其他地方的我的回答。)
  • @Will:解决了这个问题。
【解决方案6】:

嗯; \textbackslash(其他人提到)不在我的参考书中(Kopka and Daly)

无论如何,数学模式提供\sim\backslash\setminus(后两者看起来相同,只是在数学模式下的间距不同)。

我的 LaTeX 书——正如你所料,它广泛使用了 \——似乎使用了verbatim 环境。例如这段代码:

\begin{verbatim}
 \addtocounter{footnote}{-1}\footnotetext{Small insects}
 \stepcounter{footnote}\footnoteext{Large mammals}
\end{verbatim}

在书中产生这段文字:

 \addtocounter{footnote}{-1}\footnotetext{Small insects}
 \stepcounter{footnote}\footnoteext{Large mammals}

\verb 命令类似,但参数只能在一行。 b 之后的第一个字符是分隔符;例如:

\verb=\emph{stuff}=

会产生

\emph{stuff}

因此,您大概可以通过键入以下内容来获得反斜杠:

\verb=\=

您还可以添加*(即\verb*\begin{verbatim*})以使空白可见。

推测如何将verbatim 环境的示例放入文档中很有趣。 (我猜是用\verb 做最后一行)

【讨论】:

  • 我猜使用\verb 的问题在于它在宏参数内部中断。例如,你不能写\section{\verb=~=}
  • Kopka 的 LaTeX 书籍非常古老。最初它们是为 LaTeX 2.09 编写的,后来的版本对 LaTeX2e 的修改较少。所以它们不是 LaTeX2e 的最佳描述,至少不是 LaTeX2e 可用的软件包。例如,\textbackslash 已由 LaTeX 团队在LaTeX2e for authors 进行了描述。
  • \textbackslash 在 Kopka and Daly 第四版的第 536 页
【解决方案7】:

对于波浪号,您可以使用空花括号对。这会将“在字母上”的波浪号放在“空”字母上,所以它是向上放置的。

My tilde\~{}here

【讨论】:

  • 我想这取决于 OP 打算对波浪号做什么。有时,“裸”代字有点不显眼。
【解决方案8】:

来自https://faculty.math.illinois.edu/~hildebr/tex/bibliographies.html

"... 波浪号 (~),没有 特殊编码被解释为 空白空间,因此需要 用反斜杠 (\~) 转义或 替换为数学“旋转”符号 $\sim$。幸运的是,有一个 包url,它提供了一个 排版 URL 的无痛方式。使用 这个包可用,添加

\usepackage{url}

在文档开头附近, 并附上任何网络和电子邮件 文件中的地址 \url{...}:

\url{http://www.math.drofnats.edu/~gauss}
\url{gauss@math.drofnats.edu}

..."

我希望这可以帮助您打字正常的波浪字符。

【讨论】:

    【解决方案9】:

    就个人而言,我学到了更多实际更改catcodes 的知识:)

    \begingroup
      \catcode `~=11
      \gdef\mytilde{~}
      \catcode `\|=0
      \catcode `\\=11
      |gdef|mybs{\}
    |endgroup
    

    然后类似

    This is a tilde: \mytilde
    This is a backslash: \mybs
    

    【讨论】:

    • \def\mybs{\char092} 对反斜杠执行相同操作
    • @Herbert:没错,但更神秘......
    • 好的,那么我们使用\string\ 来表示非神秘...
    猜你喜欢
    • 2013-05-09
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    相关资源
    最近更新 更多