如何将字符转换为 LaTeX 代码?

如何将字符转换为 LaTeX 代码?

如何自动将字符类型转换á ê õ ção\'a \^e \~o \c{c} \~a

答案1

下面是一个可以完成这个任务的快速 Python 脚本,它可以处理组合重音符号以及预组合字符,但是它只需要一串文本,并且需要一些额外的工作来处理完整的 TeX 文件:

#!/usr/bin/env python
import unicodedata
import sys

accents = {
    0x0300: '`', 0x0301: "'", 0x0302: '^', 0x0308: '"',
    0x030B: 'H', 0x0303: '~', 0x0327: 'c', 0x0328: 'k',
    0x0304: '=', 0x0331: 'b', 0x0307: '.', 0x0323: 'd',
    0x030A: 'r', 0x0306: 'u', 0x030C: 'v',
}

def uni2tex(text):
    out = ""
    txt = tuple(text)
    i = 0
    while i < len(txt):
        char = text[i]
        code = ord(char)

        # combining marks
        if unicodedata.category(char) in ("Mn", "Mc") and code in accents:
            out += "\\%s{%s}" %(accents[code], txt[i+1])
            i += 1
        # precomposed characters
        elif unicodedata.decomposition(char):
            base, acc = unicodedata.decomposition(char).split()
            acc = int(acc, 16)
            base = int(base, 16)
            if acc in accents:
                out += "\\%s{%s}" %(accents[acc], unichr(base))
            else:
                out += char
        else:
            out += char

        i += 1

    return out

if __name__ == '__main__':
    t = unicode(sys.argv[1], "utf-8")
    print(uni2tex(t))

并调用如下:

$ python uni2tex.py "á ê õ ção ̆ a ă ̆a"

输出\'{a} \^{e} \~{o} \c{c}\~{a}o \u{ }a \u{a} \u{a}

答案2

您可能希望保留一个包含未替换字符的文档版本,因为这样更容易阅读。如果您使用 makefile 来处理文档,您可以编写类似以下代码:

#! -*- coding: utf-8 -*-

SHELL = /bin/sh
DOCUMENT = doc

$(DOCUMENT).pdf : $(DOCUMENT).tex
    cp $(DOCUMENT).tex temp_$(DOCUMENT).tex
    sed -i "s/é/\\\'{e}/g" temp_$(DOCUMENT).tex
    sed -i 's/ç/\\c{c}/g' temp_$(DOCUMENT).tex
    # more substitutions to add...
    pdflatex temp_$(DOCUMENT).tex
    cp temp_$(DOCUMENT).pdf $(DOCUMENT).pdf

实际上我所有的 makefile 都复制了文档temp_doc.tex在做任何事情之前。这样,我可以通过 轻松清理任何机器生成的文件rm -f temp*

但是,你真的确定要这样做吗?用相应的宏替换这些字符实际上不会给你带来任何好处。(至少我看不出有什么好处。)但它的代价是字距调整不佳。(另请参阅第 2.2.6 节l2tabuen

最好的

答案3

如果您使用 emacs,请使用以下iso-函数。对于您的情况:iso-iso2tex。我在之前的回答中发布了更多详细信息:emacs 重音字母

答案4

有几种工具。(工具是从本网站其他用户的各种回答中收集的。来源:1 2 3

独立命令行工具

图书馆

编辑器插件

recode使用说明

通常,它已经安装在您的计算机上了。

要使用它,请执行以下操作,例如:

$ echo á | recode UTF-8..LaTeX
\'a

然而,正如源代码,仅支持极少数字符 —— 特别是仅支持 Latin1 编码的字符。

相关内容