我们有一堆脚本可以为客户生成发票。它从 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