我有一个在 LuaTeX 下编译的文档(这是文档中另一个包的要求,但不会影响字体),并使用了romande
字体包。我常用的编辑器 (TeXShop) 设置为 utf-8 文本输入,并自动将哑键盘引号更改为智能印刷引号。但是,由于romande
是 T1 编码字体,它不理解这些智能字符,但期望使用 `` 和 ''。现在,虽然我可以关闭 TeXShop 中的智能引号替换功能,但当我在使用此字体包的文档和不使用字体包的文档之间切换时,必须来回切换,这有点烦人。为了解决这个问题,我想到了一个主意,将智能引号字符转换为活动字符,然后为这些字符定义宏,插入 ASCII 序列,从而产生正确的 TeX 连字:
\catcode`\’=\active
\def’{'}
\catcode`\‘=\active
\def‘{`}
\catcode`\“=\active
\def“{``}
\catcode`\”=\active
\def”{''}
现在,我通常不会大量使用这样的活动字符,所以我不知道这种技术可能存在哪些限制/问题。 有谁更熟悉 TeX 吗?这是否是一个好主意,或者它是否会在以后带来比简单地记住打开和关闭智能引号替换功能更多的麻烦?
梅威瑟:
\documentclass{article}
\usepackage{romande}
\catcode`\’=\active
\def’{'}
\catcode`\‘=\active
\def‘{`}
\catcode`\“=\active
\def“{``}
\catcode`\”=\active
\def”{''}
\begin{document}
Some `text' involving ``dumb'' quotes.
Some other ‘text’ making use of “smart” quotes.
\end{document}
答案1
您可以使用 csquotes 包:
\documentclass{article}
\usepackage{csquotes}
\MakeAutoQuote{“}{”}
\MakeAutoQuote*{‘}{’}
\usepackage{romande}
\begin{document}
Some `text' involving ``dumb'' quotes.
Some other ‘text’ making use of “smart” quotes.
\end{document}
请注意,T1 编码字体和 lualatex 不太兼容,连字符可能错误,并且不是每个符号都能正常工作。因此请谨慎使用。
答案2
加载\usepackage[utf8]{luainputenc}
也能解决问题。