包含 Babel 简写的命令未扩展

包含 Babel 简写的命令未扩展

向杰出的 TeXperts 聚会致敬!

babel我的问题是:如果用包含引号()作为活动字符的简写来定义宏",则调用时它不会扩展。

MWE(TeXLive 2014 最新更新):

\documentclass[11pt]{article}

\usepackage[T2A]{fontenc} 
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}

\newcommand{\myname}{А.",С.",Пушкин "--- самый"=самый известный русский поэт.}
\newcommand{\mynamea}{\shorthandon{"}А.",С.",Пушкин "--- самый"=самый известный русский поэт.}

\begin{document}
\myname \par
\expandafter\myname \par
\mynamea \par
\expandafter\mynamea \par
Benchmark: \par
А.",С.",Пушкин "--- самый"=самый известный русский поэт.
\end{document}

供您参考,在 中[russian]{babel}有以下定义:

\declare@shorthand{russian}{",}{\nobreak\hskip.2em\ignorespaces}
\declare@shorthand{russian}{"=}{\nobreak-\hskip\z@skip}

"---西里尔文本破折号的简写\cdash---速记未展开

由于某些原因,尽管 LaTeX 明确要求他扩展这四个命令,但他却没有这样做。在这种情况下,最佳做法是什么?

答案1

快速而又粗糙的解决方案。有一个选项KeepShorthandsActive可以babel提供所需的结果。当将序言中的相应行更改为以下内容时,将发生以下情况\usepackage[russian, KeepShorthandsActive]{babel}根据要求扩展速记

但是,这种行为似乎很奇怪。我想知道这种扩展方式是故意的吗,还是\myname应该重写宏?能用更干净的方式完成吗?

相关内容