version 1.52, 2015/02/28 00:03:20 |
version 1.54, 2015/02/28 13:16:44 |
Line 498 dodefn(struct texi *p, enum texicmd cmd, size_t *pos) |
|
Line 498 dodefn(struct texi *p, enum texicmd cmd, size_t *pos) |
|
abort(); |
abort(); |
} |
} |
|
|
texivspace(p); |
if (NULL == blk) |
if (NULL != blk) |
return; |
parseto(p, pos, blk); |
|
|
/* |
|
* All "block" definitions have their block bodies indented |
|
* unless they have the "x" form of the command following. |
|
* E.g., |
|
* @deffn some function |
|
* @deffnx another |
|
* An explanation. |
|
* @end deffn |
|
* With this loop, we delay opening the indented block until we |
|
* skipped past conformant macros. |
|
*/ |
|
for (;;) { |
|
switch (peekcmd(p, *pos)) { |
|
case (TEXICMD_DEFFNX): |
|
case (TEXICMD_DEFMACX): |
|
case (TEXICMD_DEFTPX): |
|
case (TEXICMD_DEFTYPEFNX): |
|
case (TEXICMD_DEFTYPEFUNX): |
|
case (TEXICMD_DEFTYPEMETHODX): |
|
case (TEXICMD_DEFTYPEVARX): |
|
case (TEXICMD_DEFTYPEVRX): |
|
case (TEXICMD_DEFUNX): |
|
case (TEXICMD_DEFVARX): |
|
case (TEXICMD_DEFVRX): |
|
texivspace(p); |
|
parseeoln(p, pos); |
|
continue; |
|
default: |
|
break; |
|
} |
|
break; |
|
} |
|
teximacro(p, "Bd -filled -offset indent"); |
|
p->seenvs = 1; |
|
parseto(p, pos, blk); |
|
teximacro(p, "Ed"); |
} |
} |
|
|
static void |
static void |
Line 690 doinline(struct texi *p, enum texicmd cmd, size_t *pos |
|
Line 726 doinline(struct texi *p, enum texicmd cmd, size_t *pos |
|
} |
} |
|
|
if (NULL == macro || p->literal || TEXILIST_TABLE == p->list) { |
if (NULL == macro || p->literal || TEXILIST_TABLE == p->list) { |
parsebracket(p, pos); |
parsebracket(p, pos, 0); |
return; |
return; |
} |
} |
|
|
teximacroopen(p, macro); |
teximacroopen(p, macro); |
p->seenws = 0; |
p->seenws = 0; |
parsebracket(p, pos); |
parsebracket(p, pos, 0); |
texipunctuate(p, pos); |
texipunctuate(p, pos); |
teximacroclose(p); |
teximacroclose(p); |
} |
} |
|
|
dobracket(struct texi *p, enum texicmd cmd, size_t *pos) |
dobracket(struct texi *p, enum texicmd cmd, size_t *pos) |
{ |
{ |
|
|
parsebracket(p, pos); |
parsebracket(p, pos, 0); |
} |
} |
|
|
static void |
static void |
Line 1328 doquotation(struct texi *p, enum texicmd cmd, size_t * |
|
Line 1364 doquotation(struct texi *p, enum texicmd cmd, size_t * |
|
static void |
static void |
domath(struct texi *p, enum texicmd cmd, size_t *pos) |
domath(struct texi *p, enum texicmd cmd, size_t *pos) |
{ |
{ |
size_t nest, start; |
|
|
|
/* |
parsebracket(p, pos, 1); |
* Math handling is different from everything else. |
|
* We don't allow any subcomponents, and we ignore the rules in |
|
* terms of @-commands. |
|
* This departs from GNU's rules, but whatever. |
|
*/ |
|
while (*pos < BUFSZ(p) && isws(BUF(p)[*pos])) |
|
advance(p, pos); |
|
if (*pos == BUFSZ(p) || '{' != BUF(p)[*pos]) |
|
return; |
|
advance(p, pos); |
|
if (p->seenws && p->outcol && 0 == p->literal) |
|
texiputchar(p, ' '); |
|
p->seenws = 0; |
|
for (nest = 1, start = *pos; *pos < BUFSZ(p) && nest > 0; ) { |
|
if ('{' == BUF(p)[*pos]) |
|
nest++; |
|
else if ('}' == BUF(p)[*pos]) |
|
if (0 == --nest) |
|
continue; |
|
advance(p, pos); |
|
} |
|
if (*pos == BUFSZ(p)) |
|
return; |
|
assert('}' == BUF(p)[*pos]); |
|
texiputbuf(p, start, *pos); |
|
advance(p, pos); |
|
} |
} |
|
|
static void |
static void |
Line 1809 doignbracket(struct texi *p, enum texicmd cmd, size_t |
|
Line 1818 doignbracket(struct texi *p, enum texicmd cmd, size_t |
|
{ |
{ |
|
|
p->ign++; |
p->ign++; |
parsebracket(p, pos); |
parsebracket(p, pos, 0); |
p->ign--; |
p->ign--; |
} |
} |
|
|