Mailing List CyrTeX-ru@vsu.ru Message #1560
From: Alexander Cherepanov <CyrTeX-ru@vsu.ru>
Subject: Re: Восклицательный и вопросительный знаки с точками --- как набирать?
Date: Sun, 16 Aug 2009 00:02:59 +0400
To: Cyrillic TeX Users Group <CyrTeX-ru@vsu.ru>
Hello, neGODnick!
You wrote to "Cyrillic TeX Users Group" <CyrTeX-ru@vsu.ru> on Thu, 13 Aug 2009 12:28:46 +0400:

>> Поскольку ? шире, расстояние нужно сократить. Попробуйте:
>>
>> \DeclareTextCommandDefault{\qwdots}{% от question
>>    ?\kern.42\fontdimen3\font
>>    .\kern\fontdimen3\font
>>    .\kern\fontdimen3\font}

> Расстояние 0.42\fontdimen3 практически идеально подошло, спасибо.

Его можно посчитать несколькими способами. В духе plain tex'а:

  \setbox0 \hbox{!}
  \setbox1 \hbox{?}
  \count0 \wd0
  \advance \count0 -\wd1
  \divide \count0 2
  \multiply \count0 100
  \divide \count0 \fontdimen3\font
  \advance \count0 100
  \showthe \count0

Это даст:

  > 42.
  l.13 \showthe \count0

(Здесь предполагается, что точка в знаке вопроса стоит посередине.
Считаем с точность до двух цифр.)

А можно просто посмотреть, как оно выглядит при наборе, и посчитать
ручками. Выполнить:

  \noindent\hbox{!}\hbox{?}\hbox{.}

  \tracingonline 1
  \showboxbreadth 10000
  \showboxdepth 10000
  \showlists

  \showthe \fontdimen3\font

и, в частности, увидим:

  .\hbox(6.94275+0.0)x2.7771
  ..\T2A/cmr/m/n/10 !
  .\hbox(6.94275+0.0)x4.72107
  ..\T2A/cmr/m/n/10 ?
  .\hbox(1.0553+0.0)x2.7771
  ..\T2A/cmr/m/n/10 .
  [skip]
  > 1.66626pt.

и дальше ручками...

Кстати, чтобы понять, как чего работает в latex'е и не только, полезно
это гонять с такими параметрами:

  \tracingmacros 2
  \tracingcommands 2

>>> И ещё хотелось бы, конечно, писать не \exdots и \qwdots, а \!dots и
>>> \?dots "--- так
>>> было бы намного нагляднее и понятнее.
>>
>> Имена команд состоят только из букв, либо же из одной небуквы. Имя
>> \! уже занято, так что увы.

Кстати, это команда для математического режима. А для текстового можно
определить как раз для !..

>> Определить \?dots в общем-то несложно:
>>
>>   \def\?dots{...}
>>
>> (это команда \?, после которой обязательно должно идти dots), но,
>> опять же, не уверен, что такие трюки полезны.

Кстати, ровно также можно определить \?..

  \def\?..{что-то там}

> Нда... Было бы ещё лучше состряпать универсальную "умную" команду для
> "ДВОЕТОЧИЯ", которую можно было давать после обычных "!" и "?", и
> которая сама определяла бы: если она идёт после "!", то керн побольше,
> если после "?", то поменьше. То есть создать конструкцию типа:

> ЕСЛИ  предыдущий знак это !, ТО делаем
>  \kern\fontdimen3\font
>  .\kern\fontdimen3\font
>  .\kern\fontdimen3\font
> ЕСЛИ  предыдущий знак это !, ТО делаем
>  \kern0.42\fontdimen3\font
>  .\kern\fontdimen3\font
>  .\kern\fontdimen3\font
> ИНАЧЕ ничего не делаем

> но, как я понимаю, нет способа научить команду учитывать предыдущий
> знак?

В общем, да. Но можно, например, поэкспериментировать с их \sfcode'ом,
а в макросе проверять \spacefactor.

Саша
--
Alexander Cherepanov
My mail is cherepan at mccme dot ru

Subscribe (FEED) Subscribe (DIGEST) Subscribe (INDEX) Unsubscribe Mail to Listmaster