将不属于词典的所有单词斜体化

将不属于词典的所有单词斜体化

我是一名西班牙计算机科学专业的学生,​​我正在用 Latex 完成我的毕业设计。我在 Windows 上使用 TexMaker,我想知道我是否可以将所有不属于词典的单词斜体化(在我的情况下,这些单词是英文单词,因为它们使我们将所有非西班牙语单词斜体化)

先感谢您。

答案1

我建议使用aspell作为你的字典。它是一个支持 TeX 的命令行拼写检查器。如果你编写一个宏\newcommand[1]{\foreign}{\emph{#1}}并添加add-tex-cmmand foreign p到你的拼写检查配置文件然后 aspell 会忽略 中包装的任何单词\foreign{}。然后,您可以使用aspell -t -c myfile.tex自己的语言对文档进行拼写检查,并将其找到的单词替换为\foreign{word}

您可以使用listaspell 模式进一步增强此功能。这次您的命令是cat myfile.tex | aspell list > foreign.txt(在 Windows 上,使用type而不是cat)。然后您将获得一个拼写错误的单词列表,您可以查找/替换这些单词。

这可能是在 Windows 系统上开始手动工作的地方(除非您像我一样拥有 cygwin 或想要编写 Python 脚本)。在 *nix 系统上,您可以使用cat myfile.tex |aspell list |sort |uniq > foreign.txt(在 Windows 下使用 cygwin 测试)改进此列表。此时,我将使用正则表达式对这些单词中的每一个进行查找/替换,尽管|tr -s '\r\n' '|'可以使用进一步的管道符来生成由正则表达式中用于分隔选项的管道符分隔的列表。然后可以将输出输入sed,尽管我会手动应用它,因为我的编辑器支持正则表达式。

如果你确实想自动化它,这里有一个 shell 脚本:

echo -n "s/(" >temp.txt
cat myfile.tex | aspell -t list | sort |uniq |tr '\r\n' '|' |sed 's/.$//'>>temp.txt
echo -n ")/\\\foreign{\1}/g" >>temp.txt
sed -r -f temp.txt myfile.tex

输出到 stdout 进行测试,因此重定向到 myfile_new.tex。

在以下测试 myfile.tex 上:

\documentclass{article}
\begin{document}
one dos tres four 
one dos tres four
uno two three cuatro
uno two three cuatro
$\cos(x)=\sin(y)$
\end{document}

效果是:

\documentclass{article}
\begin{document}
one dos \foreign{tres} four 
one dos \foreign{tres} four
\foreign{uno} two three \foreign{cuatro}
\foreign{uno} two three \foreign{cuatro}
$\cos(x)=\sin(y)$
\end{document}

这也表明了过于自动化的方法的一个缺陷:作为西班牙人,系统是有效的英语单词(例如,在短语“dos and don'ts”或表示派对的短语中)。没有拼写检查器可以处理这种情况,人类需要上下文。

相关内容