+ return(args(m, line, pos, buf, flags, v));
+}
+
+
+enum margserr
+mdoc_args(struct mdoc *m, int line, int *pos,
+ char *buf, enum mdoct tok, char **v)
+{
+ int fl;
+ struct mdoc_node *n;
+
+ fl = mdoc_argflags[tok];
+
+ if (MDOC_It != tok)
+ return(args(m, line, pos, buf, fl, v));
+
+ /*
+ * We know that we're in an `It', so it's reasonable to expect
+ * us to be sitting in a `Bl'. Someday this may not be the case
+ * (if we allow random `It's sitting out there), so provide a
+ * safe fall-back into the default behaviour.
+ */
+
+ for (n = m->last; n; n = n->parent)
+ if (MDOC_Bl == n->tok)
+ break;
+
+ assert(n->data.Bl);
+ if (n && LIST_column == n->data.Bl->type) {
+ fl |= ARGS_TABSEP;
+ fl &= ~ARGS_DELIM;