我得到了一些宏,使我能够从同一个.txt
文件(例如简历)生成三种不同语言的文档。但引文的格式取决于我使用 babel 加载语言的顺序,而不是所选语言的顺序。例如,在 MWE 中,所选语言是英语,但引文格式是法语,因为这是 babel 中最后加载的语言。
\documentclass[]{article}
\usepackage[UKenglish,german,french]{babel}
\usepackage[autostyle=true]{csquotes}
% define the commands to switch and the flags in LaTeX
\newcommand{\GERMAN}{\germantrue \frenchfalse \englishfalse
\selectlanguage{german}}
\newcommand{\FRENCH}{\germanfalse \frenchtrue \englishfalse
\selectlanguage{french}}
\newcommand{\ENGLISH}{\germanfalse \frenchfalse \englishtrue
\selectlanguage{UKenglish}}
\newif\ifgerman \germantrue
\newif\iffrench \frenchtrue
\newif\ifenglish \englishtrue
% then choose one language to be displayed
%\GERMAN
%\FRENCH
\ENGLISH
\newcommand\hide[1] {}
\newcommand\german[1] {\ifgerman #1 \else \fi}
\newcommand\french[1] {\iffrench #1 \else \fi}
\newcommand\english[1] {\ifenglish #1 \else \fi}
\begin{document}
\german{\enquote{Etwas}}\french{\enquote{Quelque chose}}\english{\enquote{something}}
\end{document}
因此结果是 ≪ something ≫ 而不是 `something'
我应该如何更改代码以使自动样式考虑所选的语言?
答案1
您调用命令太早了:babel 在文档开始时设置了主要语言,因此覆盖了您的 \selectlanguage。如果您将命令移到后面\begin{document}
或使用\AtBeginDocument
它,它会正常工作:
\documentclass[]{article}
\usepackage[UKenglish,german,french]{babel}
\usepackage[autostyle]{csquotes}
% define the commands to switch and the flags in LaTeX
\newcommand{\GERMAN}{\germantrue \frenchfalse \englishfalse
\selectlanguage{german}}
\newcommand{\FRENCH}{\germanfalse \frenchtrue \englishfalse
\selectlanguage{french}}
\newcommand{\ENGLISH}{\germanfalse \frenchfalse \englishtrue
\selectlanguage{UKenglish}}
\newif\ifgerman \germantrue
\newif\iffrench \frenchtrue
\newif\ifenglish \englishtrue
% then choose one language to be displayed
\AtBeginDocument{\GERMAN}
%\FRENCH
%%\ENGLISH
\newcommand\hide[1] {}
\newcommand\german[1] {\ifgerman #1 \else \fi}
\newcommand\french[1] {\iffrench #1 \else \fi}
\newcommand\english[1] {\ifenglish #1 \else \fi}
\begin{document}\languagename
\german{\enquote{Etwas}}\french{\enquote{Quelque chose}}\english{\enquote{something}}
\end{document}