| 
267 | 267 | \newcommand{\leftshift}[1]{\ensuremath{\mathbin{\mathsf{lshift}_{#1}}}}  | 
268 | 268 | 
 
  | 
269 | 269 | %% Notes and examples  | 
270 |  | -\newcommand{\noteintro}[1]{[\textit{#1}:}  | 
 | 270 | +\newcommand{\noteintro}[1]{[\textit{#1}: }  | 
271 | 271 | \newcommand{\noteoutro}[1]{\textit{\,---\,#1}\kern.5pt]}  | 
272 | 272 | 
 
  | 
273 | 273 | % \newnoteenvironment{ENVIRON}{BEGIN TEXT}{END TEXT}  | 
 | 
278 | 278 | \newcommand{\newnoteenvironment}[3]{  | 
279 | 279 | \newsubclausecounter{#1}  | 
280 | 280 | \newenvironment{#1}  | 
281 |  | -{\def\noteend{#3}\par\small\stepcounter{#1}\noteintro{#2}}  | 
 | 281 | +{\def\noteend{#3}\par\small\stepcounter{#1}\noteintro{#2}\hbox to 0pt{}\ignorespaces}  | 
282 | 282 | {\noteoutro{\noteend}\par}  | 
283 | 283 | }  | 
284 | 284 | 
 
  | 
 | 
462 | 462 | % Our usual abbreviation for 'listings'.  Comments are in  | 
463 | 463 | % italics.  Arbitrary TeX commands can be used if they're  | 
464 | 464 | % surrounded by @ signs.  | 
 | 465 | +\def\codeblockbeginpenalty{0}  % default penalty before codeblock  | 
465 | 466 | \newcommand{\CodeBlockSetup}{%  | 
466 | 467 | \lstset{escapechar=@, aboveskip=\parskip, belowskip=0pt,  | 
467 |  | -        midpenalty=500, endpenalty=-50,  | 
 | 468 | +        beginpenalty=\codeblockbeginpenalty, midpenalty=500, endpenalty=-50,  | 
468 | 469 |         emptylinepenalty=-250, semicolonpenalty=0}%  | 
469 | 470 | \renewcommand{\tcode}[1]{\textup{\CodeStylex{##1}}}  | 
470 | 471 | \renewcommand{\term}[1]{\textit{##1}}%  | 
 | 
473 | 474 | 
 
  | 
474 | 475 | \lstnewenvironment{codeblock}{\CodeBlockSetup}{}  | 
475 | 476 | 
 
  | 
476 |  | -% Left-align listings titles  | 
477 | 477 | \makeatletter  | 
 | 478 | + | 
 | 479 | +\newsavebox\@signalbox  | 
 | 480 | + | 
 | 481 | +% Redefine \begin{codeblock} to look for an immediately-preceding  | 
 | 482 | +% \begin{example}.  | 
 | 483 | +\global\@namedef{codeblock}{%  | 
 | 484 | +  \def\lstenv@name {codeblock}\begingroup%  | 
 | 485 | +  \ifhmode%                             no last box in vertical mode  | 
 | 486 | +    \setbox\@signalbox=\lastbox%        grab and consume last box  | 
 | 487 | +    \copy\@signalbox%                   typeset the last box again  | 
 | 488 | +    \ifhbox\@signalbox%  | 
 | 489 | +      \ifdim\wd\@signalbox=0pt%         zero-width box is our marker  | 
 | 490 | +        \def\codeblockbeginpenalty{450}%  | 
 | 491 | +      \fi%  | 
 | 492 | +    \fi%  | 
 | 493 | +  \fi%  | 
 | 494 | +  \lst@setcatcodes \catcode \active=\active \csname codeblock@\endcsname%  | 
 | 495 | +}  | 
 | 496 | + | 
 | 497 | +% Left-align listings titles  | 
478 | 498 | \def\lst@maketitle{\@makeleftcaption\lst@title@dropdelim}  | 
479 | 499 | \long\def\@makeleftcaption#1#2{%  | 
480 | 500 |   \vskip\abovecaptionskip  | 
 | 
0 commit comments