我正在写一篇用法语写的短篇小说,其中包含一些用英语写的简短对话。一位朋友建议,将英文内容通过脚注翻译成法语,以示对潜在读者的尊重。不过,我希望通过更改 MWE 中所示的全局参数,轻松地提供两个版本:和没有脚注。我不知道所采用的方法是否最佳。此外,我正在尝试提出第三个版本,该版本将完全使用法语,即用脚注的内容替换英文文本,同时将字体更改为\emph
正常字体。我使用\emph
字体来区分英文文本和法语核心文档。
是否有一个切实可行的方法可以做到这一点,或者这是否有点过度了?
\documentclass[a5paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{ifthen}
\usepackage[english, french]{babel}
\def\lang {e} %variable used for conditional translated footnotes
\begin{document}
\selectlanguage{english}
\begin{enumerate}
\item \emph{--- The manager needs to see you before you leave}
\ifthenelse{\equal{\lang}{}} {}{\footnote{\selectlanguage{french} Monsieur, le patron veut vous voir avant votre départ !}}!
\selectlanguage{french}
Je tournai la tête et levai les yeux vers le visage de la serveuse.
\item \emph{--- The manager needs to see you before you leave}
\ifthenelse{\equal{\lang}{e}} {}{\footnote{\selectlanguage{french}Monsieur, le patron veut vous voir avant votre départ !}}!
\selectlanguage{french}
Je tournai la tête et levai les yeux vers le visage de la serveuse.
\end{enumerate}
\end{document}
答案1
快速回答您的最后一个问题:它不是过度杀伤,但它不舒服,因此有点不切实际。在下面的示例(也包含您的尝试)中,我定义了一个宏 - 优化您的方法,如请求的那样 -\englphrase
其工作方式类似于\englphrase[french translation]{english text}
。仅当您在可选参数中给出一个脚注时,它才会添加带有法语翻译的脚注。
\documentclass[a5paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{ifthen}
\usepackage[english, french]{babel}
\def\lang{e} %variable used for conditional translated footnotes
\let\markforphrase\emph
\newcommand{\englphrase}[2][]{%
\selectlanguage{english}
\markforphrase{#2}%
\if\relax\detokenize{#1}\relax\else\footnote{\selectlanguage{french} #1}\fi
\selectlanguage{french}
}
\begin{document}
\selectlanguage{english}
\begin{enumerate}
\item \emph{--- The manager needs to see you before your leave!}
\ifthenelse{\equal{\lang}{}} {}{\footnote{\selectlanguage{french} Monsieur, le patron veut vous voir avant votre départ !}}
\selectlanguage{french}
Je tournai la tête et levai les yeux vers le visage de la serveuse.
\item \emph{--- The manager needs to see you before your leave!}
\ifthenelse{\equal{\lang}{e}} {}{\footnote{\selectlanguage{french}Monsieur, le patron veut vous voir avant votre départ !}}
\selectlanguage{french}
Je tournai la tête et levai les yeux vers le visage de la serveuse.
\end{enumerate}
%A demonstration of the optimized approach
\medskip\hrule\medskip
\parindent=0in
---\englphrase[Monsieur, le patron veut vous voir avant votre départ!]{The manager needs to see you before your leave!}
Je tournai la tête et levai les yeux vers le visage de la serveuse.
---\englphrase{The manager needs to see you before your leave!}
Je tournai la tête et levai les yeux vers le visage de la serveuse.
\end{document}
编辑:我错过了一个重点。您还需要一些类似\transltnoff
关闭全局翻译的功能,以便轻松提供英语和法语版本的图书。请尝试:
\newif\iftransltn
\transltntrue
\let\transltnoff=\transltnfalse %this is just to make the macro sound intuitive
\let\markforphrase=\emph
\newcommand{\englphrase}[2][]{%
\foreignlanguage{english}{\markforphrase{#2}}% thanks egreg :-)
\iftransltn%
\if\relax\detokenize{#1}\relax\else
\footnote{#1}
\fi%
\fi%
}
%\transltnoff
答案2
我最终想出了以下解决方案:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}%
\usepackage{ifthen}
\usepackage[english, french]{babel}
\def\lang {ef} %variable used for conditional text e=english, f=french, ef=english with translated footnotes
\newcommand{\CondText}[2]{%
\ifthenelse{\equal{\lang}{e}} {{\selectlanguage{english}\emph{#1}}} {}
\ifthenelse{\equal{\lang}{ef}} {{\selectlanguage{english}\emph{#1}}
\footnote{\selectlanguage{french} #2}} {}
\ifthenelse{\equal{\lang}{f}} {{\selectlanguage{french} #2}}{}
}%
\begin{document}
\CondText {--- Sir, the manager needs to see you before you go !} {--- Monsieur, le patron veut vous voir avant votre départ !}
\end{document}