纯 TeX 和下划线

纯 TeX 和下划线

我们有一堆脚本可以为客户生成发票。它从 CSV 创建纯 TeX 文件,然后使用程序创建 PDF 文件pdftex。这个“黑匣子”是由我们的一位前员工创建的。坦白说,我根本不了解 TeX 或纯 TeX。

最近,我们添加了地址中有下划线字符的客户。“黑匣子”停止工作,直到我通过 Google 搜索,才知道我必须像这样转义下划线字符:\_

脚本再次运行良好,但出现了新问题。当我从最终 PDF 复制并粘贴文本(到电子邮件或文本编辑器或其他地方)时,下划线字符消失(它们被空格替换0x20)。

在 Acroread 或其他 PDF 查看器中,它们可以正确显示。它们只是无法“复制出来”。在 PDF 中,它看起来像是其他字体中的其他字符。

请帮忙

答案1

您可以通过使下划线处于活动状态(并执行其在数学中的通常工作)来避免转义下划线:

% define the active underscore
\def\activeunderscore{\relax\ifmmode\sb\else\expandafter\copyableunderscore\fi}
\def\copyableunderscore{{\ectenrm\char`\_}}

\catcode`_=\active
\let_\activeunderscore
\font\ectenrm=ecrm1000 % this has the underscore that's mapped to its usual meaning

Here's a copyable_underscore.

In math it makes a subscript: $a_1$

\bye

在此处输入图片描述

答案2

使用标准的纯 TeX 字体定义,通过在文档中放置规则来生成下划线。这不能复制粘贴,因为你有字体。在 LaTeX 中,可以通过切换到“T1”字体编码来避免此问题,其中可以使用。_同样的操作也可以在纯文本中完成,但需要多做一些工作。假设您想避免更改文档中的任何其他内容,并且它目前使用的是 10pt 的标准 Computer Modern,我会尝试类似

\font\underscorefont=ecrm1000
\def\_{{\underscorefont\char"5F}}
a\_b
\bye

答案3

\_平原的定义是

\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}

默认的 Computer Modern Roman 字体中没有下划线字形,但您可以使用打字机字体中的字形,例如:

\def\_{{\tt \char`\_ }}
here's some\_ text
\bye

在此处输入图片描述

相关内容