csquote
命令\foreignquote{<inner lang>}{<quote>}
切换到<inner lang>
前引用,因此,封闭的引号是为配置的引号<inner lang>
。例如,在英文文档中,\foreignquote{french}{bonjour \enquote{salut}}
给出“bonjour“salut””。
有没有办法做相反的事情,即使用外部语言引号,但仍切换内部语言以获得“bonjour « salut »”?我尝试定义
\NewDocumentCommand\quoteforeign{m m}{\enquote{\textlang{#1}{#2}}}
(使用polyglossia
语言切换)但它会在开头的引号和文本之间插入一个不必要的空格。我想有一种方法可以简单地修复命令以消除空格,但我宁愿使用更符合语言习惯的修复方法。
麦考林
\documentclass[a4paper, 12pt]{article}
\usepackage{xparse}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{french}
\usepackage[autostyle=true]{csquotes}
\NewDocumentCommand\quoteforeign{m m}{\enquote{\textlang{#1}{#2}}}
\begin{document}
This \enquote{is} a test or as they say in french an \foreignquote{french}{essai or \enquote{preuve de concept}}.
This \enquote{is} a test or as they say in french an \quoteforeign{french}{essai or \enquote{preuve de concept}}.
\end{document}
答案1
额外的空格是由于 gloss-french 中的一个错误,其中包含一个虚假空格。除此之外,我认为没有什么比您的 \quoteforeign 命令更好的了。
\documentclass[a4paper, 12pt]{article}
\usepackage{xparse}
\usepackage{polyglossia-test}
\setmainlanguage{english}
\setotherlanguage{french}
\usepackage[autostyle=true]{csquotes}
\NewDocumentCommand\quoteforeign{m m}{\enquote{\textlang{#1}{#2}}}
\makeatletter
\def\french@language{%
\polyglossia@setup@language@patterns{\french@variant}%<-- missing
}%
\makeatother
\begin{document}
This \enquote{is} a test or as they say in french an \foreignquote{french}{essai or \enquote{preuve de concept}}.
This \enquote{is} a test or as they say in french an \quoteforeign{french}{essai or \enquote{preuve de concept}}.
\end{document}