根据 babel 设置,我应该对单/双引号内联文本使用什么包?

根据 babel 设置,我应该对单/双引号内联文本使用什么包?

总结

根据我设置babel为英语还是意大利语,我应该使用什么包和命令来编写双引号文本或单引号文本?

具体来说,我不是指用于直接发言的引语,而是用于标记以下内容的引语:给我水句子“给我水”的意思是 xyz,我看到它的翻译就像The sentence `gimme water' means xyz在一本英文书中一样,但我认为我应该The sentence ``gimme water'' means xyz按照意大利的惯例来翻译。

顺便说一句,我非常愿意尝试 LuaLaTeX 或 XeLaTeX。

一些背景知识

我正在将一本书从英语翻译成意大利语,到目前为止我还没有费心去改变`quoted text'``testo virgolettato''根本原因是我不知道这是否是我应该做的,即我不知道英语是否使用单引号而意大利语是否使用双引号。

无论答案是什么问题是,关键是到目前为止我只写了几百页中的几页,因此搜索和替换是可以管理的,但是在我完成翻译后这样做会有问题,因为 a'是撇号(在意大利语中很常见)还是结束单引号是上下文敏感的(例如,在`un testo' un po' strano`un po' di testo' strano两个s 具有反转功能,如果我用手指盖住和,'你就无法分辨哪个是哪个)。testopo

因此,目前我想将 every 改为`quoted text'类似 的内容\quoted{quoted text},这样我就能\usepackage[italian]{babel}将其解析为意大利语中应该使用的内容。也许

答案1

我将把它italian视为主要语言。

采用速记方法。不可否认,这有点复杂。这里的*italian*english指的是用户语言相关的简写。

\documentclass{article}

\usepackage[english, italian]{babel}

\useshorthands*{"}

\defineshorthand[*italian]{"`}{``}
\defineshorthand[*italian]{"'}{''}
\defineshorthand[*english]{"`}{`}
\defineshorthand[*english]{"'}{'}

\addto\extrasitalian{\languageshorthands{italian}}
\addto\extrasenglish{\languageshorthands{english}}

\begin{document}

The sentence "`gimme water"' means xyz.

\selectlanguage{english}

The sentence "`gimme water"' means xyz.

\end{document}

采用 的方法\quoted此外csquotes,这是首选选项,babel您可以使用及其挂钩机制执行以下操作。第一个\AddBabelHook设置始终随每个语言选择器一起执行的代码;第二个设置english最后执行的代码。

\documentclass{article}

\usepackage[english, italian]{babel}

\newcommand\quoted[1]{``#1''}

\AddBabelHook{quoted}{afterextras}{%
  \renewcommand\quoted[1]{``##1''}}

\AddBabelHook[english]{quoted}{afterextras}{%
  \renewcommand\quoted[1]{`##1'}}

\begin{document}

The sentence \quoted{gimme water} means xyz.

\selectlanguage{english}

The sentence \quoted{gimme water} means xyz.

\end{document}

使用 luatex 和转换的方法。这种方法只有在对引号的转换有或多或少明确的规则时才可行,而您的情况并非如此。但是,作为说明,这里有一个非常粗糙的转换器,只是忽略了'撇号。注意(真正的 Unicode 字符)不会被转换,这意味着如果将引号保留为和(作为一种标记),而您改为转换撇号,则此解决方案可能会很有用。`'

\documentclass{article}

\usepackage[english, italian]{babel}

\babelprehyphenation{italian}{ ` }{ string = “ }
\babelprehyphenation{italian}{ ' }{ string = ” }

\begin{document}

The sentence `gimme water' means’ xyz.

\selectlanguage{english}

The sentence `gimme water' means’ xyz.

\end{document}

相关内容