![在多个平台上将 TeX 与 dropbox 结合使用:编码问题](https://linux22.com/image/243297/%E5%9C%A8%E5%A4%9A%E4%B8%AA%E5%B9%B3%E5%8F%B0%E4%B8%8A%E5%B0%86%20TeX%20%E4%B8%8E%20dropbox%20%E7%BB%93%E5%90%88%E4%BD%BF%E7%94%A8%EF%BC%9A%E7%BC%96%E7%A0%81%E9%97%AE%E9%A2%98.png)
我在笔记本电脑(OS X)和工作站(Linux RHEL 6)上使用 TeX,在编码一些使用重音符号的文件时,我遇到了问题(主要是作者姓名,但也因为我是法国人,我有一些法语文档)。我想我的问题是,我有时依赖 Mac 端更灵活的编码来直接使用重音符号,如 é,而不是{\'{e}}
例如这样做。然后通过 Dropbox,或者可能是因为我随后在 UNIX 上打开这些文件,这些重音符号在两边被不同地破坏,并且我在两边获得了 2 个看起来不同的文件。我很确定我可以只使用退出方式来解决所有这些问题,但我可以做一些更优雅的事情(也许我需要在 .tex
文件和 中明确设置编码vi
)。我不确定如果我转到另一个编辑器(如 TeXshop)会发生什么……
您对我的问题有什么建议或更优雅的解决方案吗?如果您需要更多信息,请告诉我!谢谢!
更新:感谢给出的一些提示,我现在对这些问题有了更多的了解。我创建了一个小示例文件来重现该问题。如果我在 TeXShop 中创建它,它似乎可以正常工作,而如果我使用 vim 创建文件,则存在问题。此外,file --mime-encoding test.tex
根据创建文件的方式,会产生不同的输出:
$ file --mime-encoding test.tex
test.tex: unknown-8bit
$ file --mime-encoding test2.tex
test2.tex: utf-8
kheldar@shadowfax /Users/kheldar/Dropbox/Boulot/CV/csuros/2011
$ vi test.tex
kheldar@shadowfax /Users/kheldar/Dropbox/Boulot/CV/csuros/2011
$ vi test2.tex
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\begin{document}
\title{Test encoding}
\maketitle
Test accents: é è ê ë
\begin{verbatim}
Test accents: é è ê ë
\end{verbatim}
Test accents: \'{e} \`{e} \"{e}
\begin{verbatim}
Test accents: \'{e} \`{e} \"{e}
\end{verbatim}
\end{document}
请注意,即使 TeXShop 使用 utf-8 创建文件,我也看不到 @Daniel 描述的状态栏中的 utf-8。所以这一定是我的vimrc
权利?不知何故,我有其他选项会干扰该set filencoding
命令。有什么想法吗?
答案1
最重要的两条建议:
用于
utf8
文档的编码 (\usepackage[utf8]{inputenc}
)。vim
您通过 来设置此编码set filencoding=utf8
;根据您 shell 的区域设置 (locale
),这可能已经是默认设置。在 TexShop 中,您必须在首选项中明确设置文件编码。不要在文件名中使用重音字符!MacOS 对文件名中 UTF8 的“特殊”解释(它们以分解形式存储)会导致各种麻烦。
此外vim
,定义一个状态行来显示实际文本编码和行尾编码的指示也是一个好主意(如果您将以下几行放入其中,则~/.vimrc
文件类型、行尾和文本编码将显示在右侧):
" show statusline
hi StatusLine ctermbg=black ctermfg=white guibg=black guifg=white gui=none
hi EMPH ctermfg=yellow ctermbg=black guibg=black guifg=yellow gui=none
set statusline=%F\ \|%c,%l:\ 0x%-02B\|%=\ \|%{strftime(\"%c\",getftime(expand(\"%:p\")))}\|\ %y\ %{&ff}\ %#EMPH#%{(&fenc==\"\"?&enc:&fenc)}
set ls=2
这样,你就能快速掌握编码是否正确。如果你在 Google 上搜索“vim statusline”,你会发现大量关于如何设置良好状态行的指南和教程。我的还是比较简单的。