如何为 guillemets 标记定义新命令

如何为 guillemets 标记定义新命令

可能重复:
babel 简写 "| 在宏中不起作用

我想为 guillemets 标记定义一个新命令。我知道如何在 LaTeX 中获取它们,我想要使用的命令由以下代码生成:

"<lorem ipsum dolor sit amet">

带有包italian选项babel(我的完整代码将如下所示)。

我尝试将我的新命令定义为

\newcommand{\guille}[1]{"<#1">}

但它不起作用,它只产生相同的结果

\textquotedbl\textless ... \textquotedbl\textgreater

现在,如果我定义

\newcommand{\newtextemdash}{---}

LaTeX 正确地---用破折号替换。为什么这种替换不能用"<and进行">

最后,我在哪里可以找到这样的规则:---必须用 替换? 以及和 的\textemdash规则?"<">

\documentclass{minimal}
\usepackage[italian]{babel} % this activates "<...">
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\newcommand{\guille}[1]{"<#1">} % this does not work
\newcommand{\newtextemdash}{---} % this works
\begin{document}
Lorem ipsum dolor \newtextemdash{} sit amet \newtextemdash{} consectetuer adipiscing elit.
\guille{Lorem ipsum dolor si amet}
I would like to have this: "<Lorem ipsum dolor sit amet">
\end{document}

输出

答案1

您需要使用命令形式,或者在babel设置"简写后在开始文档后定义您的命令:

\documentclass{minimal}
\usepackage[italian]{babel} % this activates "<...">
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\newcommand{\guille}[1]{\guillemotleft#1\guillemotright}
\newcommand{\newtextemdash}{---} % this works
\begin{document}
%\newcommand{\guille}[1]{"<#1">}

Lorem ipsum dolor \newtextemdash{} sit amet \newtextemdash{} consectetuer adipiscing elit.
\guille{Lorem ipsum dolor si amet}
I would like to have this: "<Lorem ipsum dolor sit amet">
\end{document}

---是一种不同的机制,它是内置于字体指标中的连字,例如用 fi 连字替换 fi。

答案2

任何产生字符的“快捷方式”都有相应的命令(称为 LaTeX 内部字符表示,LICR)。

因此,快捷方式---可以用 替换\textemdash,而"<">(它们是babel快捷方式)具有长格式\guillemotleft\guillemotright(这些名称是历史遗迹,因为 Adob​​e 错误地调用了它们)。

从技术上讲,---被转换为带有“字体连字符”的长破折号(与fi变成独特字形的过程相同),而 则以"<更复杂的方式变为 «,涉及仅在 之后可用的命令\begin{document}。在序言中最好使用 LICR。

这就是说,当字体采用 T1 输出编码时,也有用于 guillemets 的连字符,即快捷方式总是也可在序言中找到。

对于 guillemets 来说,它们是<<>>;所以你只需做

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[italian]{babel}

\begin{document}
Lorem ipsum dolor ---~sit amet~--- consectetuer adipiscing elit.

<<Lorem ipsum dolor si amet>>
\end{document}

命令形式可能是

\newcommand{\guille}[1]{<<#1>>}

或更长

\newcommand{\guille}[1]{\guillemotleft#1\guillemotright}

但是,您也可以使用csquotes包,以下输入将产生相同的输出。请注意,它\enquote会选择正确的引号,即使是嵌套的引号也是如此;它也是高度可定制的。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[italian]{babel}
\usepackage{csquotes}

\begin{document}
Lorem ipsum dolor ---~sit amet~--- consectetuer adipiscing elit.

\enquote{Lorem ipsum dolor si amet}
\end{document}

在此处输入图片描述

答案3

为了简单起见,没有 babel 的复杂性。

\documentclass{minimal}
\newcommand{\encone}[1]{{\fontencoding{T1}\selectfont#1}}
\long\def\"<#1">{\encone{\guillemotleft}#1\encone{\guillemotright}}
\begin{document}
Lorem ipsum dolor --- sit amet --- consectetuer adipiscing elit.
\"<Lorem ipsum dolor si amet">
\end{document}

如果您使用 babel,以下内容将更容易输入。

\documentclass{minimal}
\usepackage[english,italian]{babel}

\newcommand{\encone}[1]{{\fontencoding{T1}\selectfont#1}}
\long\def\<#1>{\encone{\guillemotleft}#1\encone{\guillemotright}}
\begin{document}
Lorem ipsum dolor --- sit amet --- consectetuer adipiscing elit.
\<Lorem ipsum dolor si amet>
\end{document}

相关内容