首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在latex中定义宏\etc \ie的正确方式

在latex中定义宏\etc \ie的正确方式
EN

Stack Overflow用户
提问于 2010-07-19 23:11:41
回答 5查看 45.6K关注 0票数 44

this article一书中,作者讨论了如何使用\@在句号后面加上正确的空格,这些句号不在句子的末尾,例如,先生,即等。

宏建议

代码语言:javascript
运行
复制
\newcommand\etc{etc\@ifnextchar.{}{.\@}}

并不是很完美,因为在(\etc more text)中它会生成(etc.more text)

我见过许多作者制作了自己版本的\etc宏,大多数是在etc.\上的变体。

在大多数情况下,\etc\ie\etal\eg的哪些宏可以产生最好的结果?

这是不是在品味上过于个人化而不能在一般情况下解决?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-07-20 00:00:10

早先我使用宏来表示"et al.“等,但现在我不鼓励人们定义这种宏。

一个问题是你已经观察到的:让定义正确,以便它们正确处理所有特殊情况(包括与其他包的交互-例如,那些重新定义"\cite“命令和调整引用前的间距的包),这是令人惊讶的棘手问题。

但更重要的是,即使你有一堆满足你需要的宏,并且你知道如何使用它们,你的合著者很可能会对如何在各种特殊情况下正确使用你的宏感到困惑。

因此,我建议您避免使用宏来处理一些琐碎的事情,比如"et al“。并通过使用标准的Latex标记简单地拼写出所有内容。毕竟,大多数情况下不需要任何特殊处理(“例如”通常后面跟一个逗号;"et al.“通常后跟"~\cite“等),每当需要特殊处理时,所有Latex用户都应该知道如何使用诸如"\”和"\@“之类的命令。

票数 24
EN

Stack Overflow用户

发布于 2016-09-07 14:50:37

在CVPR的样式包中,它被定义为:

代码语言:javascript
运行
复制
\usepackage{xspace}

% Add a period to the end of an abbreviation unless there's one
% already, then \xspace.
\makeatletter
\DeclareRobustCommand\onedot{\futurelet\@let@token\@onedot}
\def\@onedot{\ifx\@let@token.\else.\null\fi\xspace}

\def\eg{\emph{e.g}\onedot} \def\Eg{\emph{E.g}\onedot}
\def\ie{\emph{i.e}\onedot} \def\Ie{\emph{I.e}\onedot}
\def\cf{\emph{c.f}\onedot} \def\Cf{\emph{C.f}\onedot}
\def\etc{\emph{etc}\onedot} \def\vs{\emph{vs}\onedot}
\def\wrt{w.r.t\onedot} \def\dof{d.o.f\onedot}
\def\etal{\emph{et al}\onedot}
\makeatother
票数 14
EN

Stack Overflow用户

发布于 2010-08-20 21:10:23

您尝试过使用xspace包吗?

示例宏:

代码语言:javascript
运行
复制
\def\etc{etc.\@\xspace}

一些测试:

猫、狗等。\猫,狗,等等!诸若此类。\猫、狗等。\ Cat (狗等)。诸若此类。\

产品:

来自the documentation

xspace包提供了一个命令,该命令查看命令流中它后面的内容,并决定是否插入一个空格来替换被TeX命令解码器“吃掉”的空格。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3282319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档