我正在使用polyglossia
并尝试使德语输入guillemets
更容易一些。但是我的以下定义TeX-file
不起作用:第一种情况给出»Text«
第二种情况我得到">Text"<
。
% !TEX TS-program = LuaLaTeX
\documentclass[parskip = full]{scrartcl}
%% ----------------------------------------------------------------
\usepackage[babelshorthands=true]{polyglossia}
\setmainlanguage{german}
\usepackage[german=guillemets]{csquotes} % \enquote{}
\newcommand{\myquote}[1]{">#1"<}
%% ----------------------------------------------------------------
\begin{document}
\verb!">Text"<! gives ">Text"< . % ok
\verb!\myquote{Text}! gives \myquote{Text}. % wrong
\verb!\enquote{Text}! gives \enquote{Text}. % ok
\end{document}
我可以像上面一样使用csquote
-package\usepackage[german=guillemets]{csquotes}
和\enquote{Text}
。但为什么要混合使用呢?
答案1
您需要将其设置"
为活动状态以使定义起作用。
\documentclass[parskip = full]{scrartcl}
%% ----------------------------------------------------------------
\usepackage[babelshorthands=true]{polyglossia}
\setmainlanguage{german}
\usepackage[german=guillemets]{csquotes} % \enquote{}
\catcode`"=\active
\newcommand{\myquote}[1]{">#1"<}
\catcode`"=12
%% ----------------------------------------------------------------
\begin{document}
\verb!">Text"<! gives ">Text"<. % ok
\verb!\myquote{Text}! gives \myquote{Text}. % wrong
\verb!\enquote{Text}! gives \enquote{Text}. % ok
\end{document}
或者,无需明确设置 catcode,
\begingroup\lccode`~=`" \lowercase{\endgroup
\newcommand{\myquote}[1]{~>#1~<}%
}
但是当然,
\newcommand{\myquote}[1]{»#1«}
更容易。