0

我有一个包含一些分音符号的文件,̈. 我需要用 , 替换它们以\textdiaeresis在 TeX 中使用。

似乎与其他符号一起使用的常用命令总是导致输出为\\textdiaeresisor \ extdiaeresis,后者\t被解释为“tab”。

我试过这些sed命令:

sed -i 's/\ ̈/\textdiaeresis /g' ./file.txt
sed -i 's/\ ̈/\\textdiaeresis /g' ./file.txt
sed -i 's/\ ̈/\\\textdiaeresis /g' ./file.txt
sed -i "s/\ ̈/\textdiaeresis /g" ./file.txt
sed -i "s/\ ̈/\\textdiaeresis /g" ./file.txt
sed -i "s/\ ̈/\\\textdiaeresis /g" ./file.txt

我试过这些nawk命令:

nawk '{sub(/ ̈/,"\textdiaeresis"); print}' file.txt > file.txt2
cp file.txt2 file.txt
nawk '{sub(/ ̈/,"\\textdiaeresis"); print}' file.txt > file.txt2
cp file.txt2 file.txt
nawk '{sub(/ ̈/,"\\\textdiaeresis"); print}' file.txt > file.txt2
cp file.txt2 file.txt

如何用这个 TeX 代码替换分音符?

4

1 回答 1

1

在 Mac OS X 10.7.4 下bash(版本 3.2.48),我发现sed(这是 Mac OS X sed,而不是 GNU sed)没有问题。

$ x="s, ̈. "
$ echo "$x" | ~/src/sbcs2utf8/utf8-unicode
(standard input):
0x73 = U+0073
0x2C = U+002C
0x20 = U+0020
0xCC 0x88 = U+0308
0x2E = U+002E
0x20 = U+0020
0x0A = U+000A
$ echo "$x" | sed 's/ ̈/\\textdiaresis/'
s,\textdiaresis. 
$

字符是U+0308组合分音;我复制了x从问题中分配给的片段。Unicode 标准规定(第 2 章,第 2.11 节):

在 Unicode 标准中,所有组合字符都将在它们适用的基本字符之后按顺序使用。Unicode字符序列U+0061“a”拉丁小写字母A,U+0308“¨”组合分音符号,U+0075“u”拉丁小写字母U明确表示“äu”而不是“aü”。

因此,问题文本中的分音符应该在空间上呈现。使用 Firefox (14.0.1),在 shell 输出中,分音符显示在.下面,这是错误的。并且在sed命令中,分音符号似乎与下面的斜杠组合在一起,这也是错误的。那好吧!但是我的翻译sed看起来是正确的。

于 2012-08-17T02:36:05.820 回答