
私はフランス語で書かれた短編小説を執筆中です。この小説には英語の短い会話がいくつか含まれています。友人から、脚注で英語の内容をフランス語に翻訳することが、読者への礼儀になるかもしれないと提案されました。しかし、MWEに示されているようにグローバルパラメータを変更することで、両方のバージョンを簡単に提供したいと考えています。そして脚注なし。採用したアプローチが最適かどうか疑問に思います。さらに、完全にフランス語の 3 番目のバージョンを作成しようとしています。つまり、英語のテキストを脚注の内容に置き換え、フォントを\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}