可能重复:
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
(这些名称是历史遗迹,因为 Adobe 错误地调用了它们)。
从技术上讲,---
被转换为带有“字体连字符”的长破折号(与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}