|
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
|
|