如何为 pdftex 查找非英国非 ASCII 非 LaTeX 字符?

如何为 pdftex 查找非英国非 ASCII 非 LaTeX 字符?

我正在通过消除系统中的所有技术缺陷来调试我的 tex 文件。我在 Tex 社区的文档中找不到任何错误这里和我自己,所以我认为可能有一些非 ASCII 字符使情况变得复杂pdflatex。我和我的朋友不理解的 LaTeX 警告示例,因为我们不了解其起源

Underfull \hbox (badness 1019) in paragraph at lines 4--10
\T1/lmr/m/n/12 (+20) Avail-able from [][]$\T1/lmtt/m/n/12 http : / / www . dyna
med . com / login . aspx ? direct = true & site =
[50] [51] [52] [53]
Underfull \hbox (badness 1019) in paragraph at lines 332--338
\T1/lmr/m/n/12 (+20) Avail-able from [][]$\T1/lmtt/m/n/12 http : / / www . dyna
med . com / login . aspx ? direct = true & site =
) (./deliminated.figures.tex [54]

我所做的事情是尝试消除 .tex 和 .bib 文件中的所有非英国非 ASCII 字符

  1. 消除 .tex 和 .bib 中的非 ASCII 字符

    # http://stackoverflow.com/a/9395552/54964
    grep --color='auto' -P -n "[\x80-\xFF]" file.tex
    grep --color='auto' -P -n "[\x80-\xFF]" work.bib
    
  2. ...

我感兴趣的是 grep 是否足以搜索所有非 ASCII 字符。

工具经过测试,但在吉尔斯之后没有任何好处回答

  1. grep --color='auto' -P -n '[^\x00-\x7F]' file.tex
  2. grep -P "[\x80-\xFF]" file.tex
  3. perl -ane '{ if(m/[[:^ascii:]]/) { print } }' file.tex
  4. grep --color='auto' -P -n "[^[:ascii:]]" file.txt

我不确定的事情

  1. Gilles 的回答在这里,LC_ALL=C grep '[^ -~]' file.tex但它发现 LaTeX 语法字符为非 ASCII。这是正确的吗?

TeXLive:2016
操作系统:Debian 8.5
区域设置:英国

答案1

[\x80-\xFF]仅包括从 128 到 255 的代码点。根据区域设置,特别是字符编码,这可能是也可能不是非 ASCII 字符集。仅在 8 位编码中存在这种情况。 (准确地说,基于 ASCII 的 8 位编码,但您极不可能遇到其他任何编码。)在字符不是单个字节的语言环境中,包括事实上的标准 UTF-8,[\x80-\xFF]仅非 ASCII 字符的一小部分。

搜索非 ASCII 字符的最简单方法是强制使用 C 语言环境。在 C 语言环境中,字符是一个字节。使用单字节语言环境还可以使某些版本的 GNU grep 速度显着加快。

LC_ALL=C grep --color='auto' -P -n "[\x80-\xFF]" file.tex

相关内容