Mailing List CyrTeX-ru@vsu.ru Message #1493
From: Isao YASUDA <CyrTeX-ru@vsu.ru>
Subject: Re: \expandafter{пробел}
Date: Thu, 02 Jul 2009 01:17:20 +0900 (JST)
To: <CyrTeX-ru@vsu.ru>
Уважаемые ТеХники!

"Alexander Cherepanov" <CyrTeX-ru@vsu.ru> san wrote at :
- Message-ID: <list-186776089@relay1.vsu.ru>
- Subject: Re: \expandafter{пробел}
- Date: Wed, 1 Jul 2009 02:39:34 +0400
>Увы, всё не так просто. В примере:
>
>  \section{Раздел}
>
>  \begin{boldpar}% make the first word of paragraph bold
>  Первый абзац.
>
>  Второй абзац.
>
>  Третий абзац.
>  \end{boldpar}% recover bfserise --> mdserise
>
>только в первых двух абзацах первое слово будет жирным.

Верно.
Представлю чуть улучшенную версию.
Конечно, и это угодно не для всех пользователей
или ситуаций.

%%  \begin{boldpar}
%%    In this environment the first word would be bold.
%%  \end{boldpar}
%%
%%  Окружение boldpar не разрешает вложить
%%  никаких иных окружений в себя...
%%  not cool at all...
%%
\makeatletter
\let\new@everypar=\everypar%
\newtoks\new@everypar%
\catcode32=13\relax% set space to catcode 13
\def {\mdseries\space\catcode32=10\relax}% space becomes command \mdseries
\def\boldpar{% make only the head word of paragraphs bold
\par\everypar\expandafter{\the\new@everypar%
\if@afterindent\else{\setbox\z@\lastbox}% noindent at the first paragraph
\@afterindenttrue\fi% indent at followed paragraphs
\bfseries\catcode32=13\relax}}%
\catcode32=10\relax% recover catcode
\def\endboldpar{\@nobreakfalse}%
\makeatother
%%

С уважением,
Isao Yasuda.
E-Mail: isao@yasuda.homeip.net
Subscribe (FEED) Subscribe (DIGEST) Subscribe (INDEX) Unsubscribe Mail to Listmaster