From: "Alexander I Rozhenko" Received: by relay1.vsu.ru (CommuniGate Pro PIPE 5.2.13) with PIPE id 163728520; Wed, 25 Mar 2009 20:34:49 +0300 X-drweb-hash: Received: from [85.118.224.220] (HELO mail.academ.org) by relay1.vsu.ru (CommuniGate Pro SMTP 5.2.13) with ESMTP id 163728499 for CyrTeX-ru@vsu.ru; Wed, 25 Mar 2009 20:34:38 +0300 Received-SPF: none receiver=relay1.vsu.ru; client-ip=85.118.224.220; envelope-from=rozhenko@oapmg.sscc.ru Received: from sat2 (host-10-204-42-23.academ.local [10.204.42.23]) (Authenticated sender: roj@academ.org) by mail.academ.org (Postfix) with ESMTPA id C9C4F381E46FF for ; Wed, 25 Mar 2009 23:34:37 +0600 (NOVT) Message-ID: <009b01c9ad71$543cf300$6501a8c0@sat2> To: "Cyrillic TeX Users Group" References: Subject: =?UTF-8?B?UmU6INCY0YHQv9GA0LDQstC40YLRjCDQv9GA0L7QsdC10Lsg0LIg0LTQsNGC?= =?UTF-8?B?0LDRhSDQstC40LTQsCAiMTk0NSDQsy4i?= Date: Wed, 25 Mar 2009 23:44:21 +0600 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="UTF-8"; reply-type=original Content-Transfer-Encoding: 8bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-3.0 (mail.academ.org [0.0.0.0]); Wed, 25 Mar 2009 23:34:37 +0600 (NOVT) X-Virus-Scanned: ClamAV 0.92.1/9165/Wed Mar 25 21:08:41 2009 on osts X-Virus-Status: Clean X-Spam-Flag: SKIP X-Spam-Yversion: Spamooborona-2.3 X-DrWeb-FlyTrap-Class: NON-SPAM X-DrWeb-FlyTrap-CID: 1 X-DrWeb-FlyTrap-ID: 28801417 > Не нравится мне, что в автоматически проставляемых датах, > например, \today и \displaydate{PubDate} (пакет datetime) про- > бел между годом и буквой "г." (1945 г.) слишком широкий. > Хочется полупробел "\,". Кроме того, он почему-то ещё и растя- > гивается, что выглядит в некоторых строках очень плохо, хотя > определён он как нерастяжимый "~" в соотв. файлах. Пробел "~" как раз растяжимый, но не разбиваемый. > \DeclareRobustCommand*\daterussian{% > \renewcommand{\formatdate}[3]{% > \@day=##1\relax\@month=##2\relax\@year=##3\relax > \number\@day~\monthnamerussian[\@month]\ \number\@year~\cyrg.}} > > ========================================== > Пытаюсь в преамбуле переопределить: > > \addto{\daterussian}{\renewcommand*{\daterussian}{% ... > > \makeatletter > \renewcommand*{\formatdate}[3]{% > \@day=##1\relax\@month=##2\relax\@year=##3\relax > \number\@day~\monthnamerussian[\@month]\ \number\@year\,\cyrg.} > \selectlanguage{russian} > \makeatother > > но эффект проявляется только для \today, для команд пакета datetime > никакой разницы нет. Я кажется понимаю в чём дело. Вы дописали к команде \daterussian переопределение команды \today и переопределили \formatdate в преамбуле документа. Команда \daterussian исполняется Бабелем после \begin{document}. В ней сначала исполняется её старый код, а затем её содержимое заменяется на новое. Но в старом содержимом есть переопределение команды \formatdate, которое срабатывает позже Вашего переопределения, а не до него. Я думаю такой вариант может помочь: \makeatletter addto{\daterussian}{\renewcommand*{\daterussian}{% \renewcommand*{\formatdate}[3]{% \@day=##1\relax\@month=##2\relax\@year=##3\relax \number\@day~\monthnamerussian[\@month]\ \number\@year\,\cyrg.} \def\today{\number\day~\ifcase\month\or \cyrya\cyrn\cyrv\cyra\cyrr\cyrya\or \cyrf\cyre\cyrv\cyrr\cyra\cyrl\cyrya\or \cyrm\cyra\cyrr\cyrt\cyra\or \cyra\cyrp\cyrr\cyre\cyrl\cyrya\or \cyrm\cyra\cyrya\or \cyri\cyryu\cyrn\cyrya\or \cyri\cyryu\cyrl\cyrya\or \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra\or \cyrs\cyre\cyrn\cyrt\cyrya\cyrb\cyrr\cyrya\or \cyro\cyrk\cyrt\cyrya\cyrb\cyrr\cyrya\or \cyrn\cyro\cyrya\cyrb\cyrr\cyrya\or \cyrd\cyre\cyrk\cyra\cyrb\cyrr\cyrya\fi \ \number\year\,\cyrg.}}} \makeatother