#define D_DT (1 << 7)
#define D_DD (1 << 8)
#define D_PA (1 << 9)
+#define D_IL (1 << 10)
enum
{
SP_DD,
SP_END_DD,
SP_END_DL,
+ SP_START_IL,
+ SP_END_IL,
SP_END_SECT,
SP_REFER
};
** - .dt starts a term in a definition list.
** - .dd starts a definition in a definition list.
** - .de on a line finishes a definition list.
+ ** - .il on a line starts an itemzied list
+ ** - .dd starts an item in an itemized list
+ ** - .ie on a line finishes an itemized list
** - .ts on a line starts a "tscreen" environment (name taken from SGML).
** - .te on a line finishes this environment.
** - .pp on a line starts a paragraph.
}
case SP_DD:
{
+ if (docstat & D_IL)
+ fputs ("- ", out);
Continuation = 0;
break;
}
docstat &= ~D_DL;
break;
}
+ case SP_START_IL:
+ {
+ docstat |= D_IL;
+ break;
+ }
+ case SP_END_IL:
+ {
+ Continuation = 0;
+ docstat &= ~D_IL;
+ break;
+ }
case SP_STR:
{
if (Continuation)
}
case SP_DD:
{
- fputs ("\n", out);
+ if (docstat & D_IL)
+ fputs (".TP\n\\(hy ", out);
+ else
+ fputs ("\n", out);
break;
}
case SP_END_DL:
docstat &= ~D_DL;
break;
}
+ case SP_START_IL:
+ {
+ fputs (".RS\n.PD 0\n", out);
+ docstat |= D_IL;
+ break;
+ }
+ case SP_END_IL:
+ {
+ fputs (".RE\n.PD 1", out);
+ docstat &= ~D_DL;
+ break;
+ }
case SP_STR:
{
while (*str)
case SP_DD:
{
docstat |= D_DD;
- fputs ("</term>\n<listitem><para>", out);
+ if (docstat & D_DL)
+ fputs("</term>\n", out);
+ fputs ("<listitem><para>", out);
break;
}
case SP_END_DD:
{
docstat &= ~D_DD;
- fputs ("</para></listitem></varlistentry>\n", out);
+ fputs ("</para></listitem>", out);
+ if (docstat & D_DL)
+ fputs("</varlistentry>\n", out);
break;
}
case SP_END_DL:
docstat &= ~(D_DD|D_DL);
break;
}
+ case SP_START_IL:
+ {
+ fputs ("\n<itemizedlist>\n", out);
+ docstat |= D_IL;
+ break;
+ }
+ case SP_END_IL:
+ {
+ fputs ("</para></listitem></itemizedlist>\n", out);
+ docstat &= ~(D_DD|D_DL);
+ break;
+ }
case SP_END_SECT:
{
fputs ("</sect2>", out);
return print_it (SP_START_DL, NULL, out, docstat);
else if (!strncmp (l, ".de", 3))
return print_it (SP_END_DL, NULL, out, docstat);
+ else if (!strncmp (l, ".il", 3))
+ return print_it (SP_START_IL, NULL, out, docstat);
+ else if (!strncmp (l, ".ie", 3))
+ return print_it (SP_END_IL, NULL, out, docstat);
else if (!strncmp (l, ". ", 2))
*l = ' ';
}
else if (!strncmp (s, ".dd", 3))
{
+ if ((docstat & D_IL) && (docstat & D_DD))
+ {
+ docstat = commit_buff (buff, &d, out, docstat);
+ docstat = print_it (SP_END_DD, NULL, out, docstat);
+ }
docstat = commit_buff (buff, &d, out, docstat);
docstat = print_it (SP_DD, NULL, out, docstat);
s += 3;