]> granicus.if.org Git - multimarkdown/commitdiff
CHANGED: Preserve leading non-indent space in fenced code blocks
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Sun, 23 Jul 2017 21:40:20 +0000 (17:40 -0400)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Sun, 23 Jul 2017 21:40:20 +0000 (17:40 -0400)
Sources/libMultiMarkdown/include/libMultiMarkdown.h
Sources/libMultiMarkdown/lexer.c
Sources/libMultiMarkdown/lexer.re
Sources/libMultiMarkdown/mmd.c
tests/MMD6Tests/Fenced Code Blocks.fodt
tests/MMD6Tests/Fenced Code Blocks.html
tests/MMD6Tests/Fenced Code Blocks.tex

index 8da8be563daae0c40a5c9cd4e31e081000fa84e2..6ee276b1e9ef5bb95690112e2785ef970832bedd 100644 (file)
@@ -471,6 +471,7 @@ enum token_types {
        TEXT_EMPTY,
        TEXT_HASH,
        TEXT_LINEBREAK,
+       TEXT_LINEBREAK_SP,
        TEXT_NL,
        TEXT_NL_SP,
        TEXT_NUMBER_POSS_LIST,
index de74f2f30753fc081cf736c2ed7c8769da154023..3d62918c097c9b234e81298fb383c9217eecef1a 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.15.3 on Sun Jul 23 08:32:21 2017 */
+/* Generated by re2c 0.14.3 on Sun Jul 23 17:28:33 2017 */
 /**
 
        MultiMarkdown 6 -- Lightweight markup processor to produce HTML, LaTeX, and more.
@@ -80,6 +80,7 @@ int scan(Scanner * s, const char * stop) {
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
+
        yych = *YYCURSOR;
        switch (yych) {
        case 0x00:
@@ -168,24 +169,24 @@ int scan(Scanner * s, const char * stop) {
        case 'y':
        case 'z':
        case 0x7F:      goto yy66;
-       case '\t':      goto yy49;
+       case '\t':      goto yy51;
        case '\n':      goto yy3;
        case '\r':      goto yy5;
-       case ' ':       goto yy51;
-       case '!':       goto yy22;
-       case '"':       goto yy32;
+       case ' ':       goto yy6;
+       case '!':       goto yy25;
+       case '"':       goto yy34;
        case '#':       goto yy53;
-       case '$':       goto yy45;
+       case '$':       goto yy47;
        case '%':       goto yy55;
-       case '&':       goto yy39;
-       case '\'':      goto yy34;
-       case '(':       goto yy24;
-       case ')':       goto yy26;
+       case '&':       goto yy41;
+       case '\'':      goto yy36;
+       case '(':       goto yy26;
+       case ')':       goto yy28;
        case '*':       goto yy58;
-       case '+':       goto yy8;
-       case '-':       goto yy10;
-       case '.':       goto yy36;
-       case '/':       goto yy41;
+       case '+':       goto yy11;
+       case '-':       goto yy13;
+       case '.':       goto yy38;
+       case '/':       goto yy43;
        case '0':
        case '1':
        case '2':
@@ -196,21 +197,21 @@ int scan(Scanner * s, const char * stop) {
        case '7':
        case '8':
        case '9':       goto yy57;
-       case ':':       goto yy37;
-       case '<':       goto yy12;
-       case '=':       goto yy16;
-       case '>':       goto yy28;
-       case '[':       goto yy18;
-       case '\\':      goto yy43;
-       case ']':       goto yy20;
-       case '^':       goto yy47;
+       case ':':       goto yy39;
+       case '<':       goto yy15;
+       case '=':       goto yy19;
+       case '>':       goto yy30;
+       case '[':       goto yy21;
+       case '\\':      goto yy45;
+       case ']':       goto yy23;
+       case '^':       goto yy49;
        case '_':       goto yy60;
        case '`':       goto yy62;
-       case '{':       goto yy6;
+       case '{':       goto yy9;
        case '|':       goto yy64;
-       case '}':       goto yy30;
-       case '~':       goto yy14;
-       case 0xC2:      goto yy52;
+       case '}':       goto yy32;
+       case '~':       goto yy17;
+       case 0xC2:      goto yy8;
        case 0xC3:
        case 0xC4:
        case 0xC5:
@@ -268,12 +269,12 @@ yy2:
        switch (yyaccept) {
        case 0:         goto yy4;
        case 1:         goto yy7;
-       case 2:         goto yy9;
-       case 3:         goto yy13;
-       case 4:         goto yy15;
-       case 5:         goto yy17;
-       case 6:         goto yy23;
-       case 7:         goto yy40;
+       case 2:         goto yy10;
+       case 3:         goto yy12;
+       case 4:         goto yy16;
+       case 5:         goto yy18;
+       case 6:         goto yy20;
+       case 7:         goto yy42;
        case 8:         goto yy54;
        case 9:         goto yy81;
        case 10:        goto yy89;
@@ -282,15 +283,16 @@ yy2:
        case 13:        goto yy112;
        case 14:        goto yy121;
        case 15:        goto yy128;
-       case 16:        goto yy135;
-       case 17:        goto yy145;
-       default:        goto yy303;
+       case 16:        goto yy284;
+       case 17:        goto yy307;
+       case 18:        goto yy314;
+       default:        goto yy326;
        }
 yy3:
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
-       case ' ':       goto yy324;
+       case ' ':       goto yy333;
        default:        goto yy4;
        }
 yy4:
@@ -300,136 +302,217 @@ yy5:
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
        case '\n':      goto yy3;
-       case ' ':       goto yy324;
+       case ' ':       goto yy333;
        default:        goto yy4;
        }
 yy6:
+       YYCTXMARKER = YYCURSOR + 1;
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
-       case '+':       goto yy307;
-       case '-':       goto yy306;
-       case '=':       goto yy300;
-       case '>':       goto yy305;
-       case '{':       goto yy302;
-       case '~':       goto yy304;
+       case '\t':      goto yy309;
+       case '\n':      goto yy331;
+       case '\r':      goto yy332;
+       case ' ':       goto yy306;
+       case 0xC2:      goto yy308;
        default:        goto yy7;
        }
 yy7:
-       { return TEXT_BRACE_LEFT; }
+       { goto scan; }
 yy8:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x80:
+       case 0x81:
+       case 0x82:
+       case 0x83:
+       case 0x84:
+       case 0x85:
+       case 0x86:
+       case 0x87:
+       case 0x88:
+       case 0x89:
+       case 0x8A:
+       case 0x8B:
+       case 0x8C:
+       case 0x8D:
+       case 0x8E:
+       case 0x8F:
+       case 0x90:
+       case 0x91:
+       case 0x92:
+       case 0x93:
+       case 0x94:
+       case 0x95:
+       case 0x96:
+       case 0x97:
+       case 0x98:
+       case 0x99:
+       case 0x9A:
+       case 0x9B:
+       case 0x9C:
+       case 0x9D:
+       case 0x9E:
+       case 0x9F:
+       case 0xA1:
+       case 0xA2:
+       case 0xA3:
+       case 0xA4:
+       case 0xA5:
+       case 0xA6:
+       case 0xA7:
+       case 0xA8:
+       case 0xA9:
+       case 0xAA:
+       case 0xAB:
+       case 0xAC:
+       case 0xAD:
+       case 0xAE:
+       case 0xAF:
+       case 0xB0:
+       case 0xB1:
+       case 0xB2:
+       case 0xB3:
+       case 0xB4:
+       case 0xB5:
+       case 0xB6:
+       case 0xB7:
+       case 0xB8:
+       case 0xB9:
+       case 0xBA:
+       case 0xBB:
+       case 0xBC:
+       case 0xBD:
+       case 0xBE:
+       case 0xBF:      goto yy66;
+       case 0xA0:      goto yy305;
+       default:        goto yy2;
+       }
+yy9:
        yyaccept = 2;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
-       case '+':       goto yy297;
-       default:        goto yy9;
+       case '+':       goto yy288;
+       case '-':       goto yy287;
+       case '=':       goto yy281;
+       case '>':       goto yy286;
+       case '{':       goto yy283;
+       case '~':       goto yy285;
+       default:        goto yy10;
        }
-yy9:
-       { return PLUS; }
 yy10:
-       ++YYCURSOR;
-       switch ((yych = *YYCURSOR)) {
-       case '-':       goto yy289;
-       default:        goto yy11;
-       }
+       { return TEXT_BRACE_LEFT; }
 yy11:
-       { return DASH_N; }
-yy12:
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
-       case '!':       goto yy282;
-       case '<':       goto yy283;
-       default:        goto yy13;
+       case '+':       goto yy278;
+       default:        goto yy12;
        }
+yy12:
+       { return PLUS; }
 yy13:
-       { return ANGLE_LEFT; }
+       ++YYCURSOR;
+       switch ((yych = *YYCURSOR)) {
+       case '-':       goto yy270;
+       default:        goto yy14;
+       }
 yy14:
+       { return DASH_N; }
+yy15:
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
-       case '>':       goto yy278;
-       case '~':       goto yy277;
-       default:        goto yy15;
+       case '!':       goto yy263;
+       case '<':       goto yy264;
+       default:        goto yy16;
        }
-yy15:
-       { return SUBSCRIPT; }
 yy16:
+       { return ANGLE_LEFT; }
+yy17:
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
-       case '=':       goto yy274;
-       default:        goto yy17;
+       case '>':       goto yy259;
+       case '~':       goto yy258;
+       default:        goto yy18;
        }
-yy17:
-       { return EQUAL; }
 yy18:
+       { return SUBSCRIPT; }
+yy19:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case '=':       goto yy255;
+       default:        goto yy20;
+       }
+yy20:
+       { return EQUAL; }
+yy21:
        ++YYCURSOR;
        switch ((yych = *YYCURSOR)) {
-       case '#':       goto yy270;
-       case '%':       goto yy264;
-       case '>':       goto yy272;
-       case '?':       goto yy266;
-       case '^':       goto yy268;
-       default:        goto yy19;
+       case '#':       goto yy251;
+       case '%':       goto yy245;
+       case '>':       goto yy253;
+       case '?':       goto yy247;
+       case '^':       goto yy249;
+       default:        goto yy22;
        }
-yy19:
+yy22:
        { return BRACKET_LEFT; }
-yy20:
+yy23:
        ++YYCURSOR;
        { return BRACKET_RIGHT; }
-yy22:
-       ++YYCURSOR;
-       switch ((yych = *YYCURSOR)) {
-       case '[':       goto yy262;
-       default:        goto yy23;
+yy25:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '[':       goto yy243;
+       default:        goto yy7;
        }
-yy23:
-       { goto scan; }
-yy24:
+yy26:
        ++YYCURSOR;
        { return PAREN_LEFT; }
-yy26:
+yy28:
        ++YYCURSOR;
        { return PAREN_RIGHT; }
-yy28:
+yy30:
        ++YYCURSOR;
        { return ANGLE_RIGHT; }
-yy30:
+yy32:
        ++YYCURSOR;
        switch ((yych = *YYCURSOR)) {
-       case '}':       goto yy260;
-       default:        goto yy31;
+       case '}':       goto yy241;
+       default:        goto yy33;
        }
-yy31:
+yy33:
        { return TEXT_BRACE_RIGHT; }
-yy32:
+yy34:
        ++YYCURSOR;
        { return QUOTE_DOUBLE; }
-yy34:
+yy36:
        ++YYCURSOR;
        switch ((yych = *YYCURSOR)) {
-       case '\'':      goto yy258;
-       default:        goto yy35;
+       case '\'':      goto yy239;
+       default:        goto yy37;
        }
-yy35:
+yy37:
        { return QUOTE_SINGLE; }
-yy36:
-       yyaccept = 6;
+yy38:
+       yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
-       case ' ':       goto yy250;
-       case '.':       goto yy251;
-       default:        goto yy23;
+       case ' ':       goto yy231;
+       case '.':       goto yy232;
+       default:        goto yy7;
        }
-yy37:
+yy39:
        ++YYCURSOR;
        { return COLON; }
-yy39:
+yy41:
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
-       case '#':       goto yy234;
+       case '#':       goto yy215;
        case '0':
        case '1':
        case '2':
@@ -489,157 +572,76 @@ yy39:
        case 'w':
        case 'x':
        case 'y':
-       case 'z':       goto yy231;
+       case 'z':       goto yy212;
        case 'A':
-       case 'a':       goto yy233;
-       default:        goto yy40;
+       case 'a':       goto yy214;
+       default:        goto yy42;
        }
-yy40:
+yy42:
        { return AMPERSAND; }
-yy41:
-       ++YYCURSOR;
-       { return SLASH; }
 yy43:
        ++YYCURSOR;
-       switch ((yych = *YYCURSOR)) {
-       case '\n':      goto yy154;
-       case '\r':      goto yy156;
-       case ' ':       goto yy159;
-       case '!':       goto yy219;
-       case '"':       goto yy209;
-       case '#':       goto yy189;
-       case '$':       goto yy187;
-       case '%':       goto yy185;
-       case '&':       goto yy173;
-       case '\'':      goto yy207;
-       case '(':       goto yy201;
-       case ')':       goto yy199;
-       case '*':       goto yy165;
-       case '+':       goto yy183;
-       case ',':       goto yy215;
-       case '-':       goto yy181;
-       case '.':       goto yy221;
-       case '/':       goto yy169;
-       case ':':       goto yy211;
-       case ';':       goto yy213;
-       case '<':       goto yy177;
-       case '=':       goto yy179;
-       case '>':       goto yy175;
-       case '?':       goto yy217;
-       case '@':       goto yy171;
-       case '[':       goto yy193;
-       case '\\':      goto yy157;
-       case ']':       goto yy191;
-       case '^':       goto yy167;
-       case '_':       goto yy163;
-       case '`':       goto yy205;
-       case '{':       goto yy197;
-       case '|':       goto yy161;
-       case '}':       goto yy195;
-       case '~':       goto yy203;
-       default:        goto yy44;
-       }
-yy44:
-       { return TEXT_BACKSLASH; }
+       { return SLASH; }
 yy45:
        ++YYCURSOR;
        switch ((yych = *YYCURSOR)) {
-       case '$':       goto yy152;
+       case '\n':      goto yy135;
+       case '\r':      goto yy137;
+       case ' ':       goto yy140;
+       case '!':       goto yy200;
+       case '"':       goto yy190;
+       case '#':       goto yy170;
+       case '$':       goto yy168;
+       case '%':       goto yy166;
+       case '&':       goto yy154;
+       case '\'':      goto yy188;
+       case '(':       goto yy182;
+       case ')':       goto yy180;
+       case '*':       goto yy146;
+       case '+':       goto yy164;
+       case ',':       goto yy196;
+       case '-':       goto yy162;
+       case '.':       goto yy202;
+       case '/':       goto yy150;
+       case ':':       goto yy192;
+       case ';':       goto yy194;
+       case '<':       goto yy158;
+       case '=':       goto yy160;
+       case '>':       goto yy156;
+       case '?':       goto yy198;
+       case '@':       goto yy152;
+       case '[':       goto yy174;
+       case '\\':      goto yy138;
+       case ']':       goto yy172;
+       case '^':       goto yy148;
+       case '_':       goto yy144;
+       case '`':       goto yy186;
+       case '{':       goto yy178;
+       case '|':       goto yy142;
+       case '}':       goto yy176;
+       case '~':       goto yy184;
        default:        goto yy46;
        }
 yy46:
-       { return MATH_DOLLAR_SINGLE; }
+       { return TEXT_BACKSLASH; }
 yy47:
        ++YYCURSOR;
-       { return SUPERSCRIPT; }
+       switch ((yych = *YYCURSOR)) {
+       case '$':       goto yy133;
+       default:        goto yy48;
+       }
+yy48:
+       { return MATH_DOLLAR_SINGLE; }
 yy49:
        ++YYCURSOR;
-       { return INDENT_TAB; }
+       { return SUPERSCRIPT; }
 yy51:
-       yyaccept = 6;
-       yych = *(YYMARKER = ++YYCURSOR);
-       YYCTXMARKER = YYCURSOR;
-       switch (yych) {
-       case '\t':      goto yy137;
-       case '\n':      goto yy150;
-       case '\r':      goto yy151;
-       case ' ':       goto yy134;
-       case 0xC2:      goto yy136;
-       default:        goto yy23;
-       }
-yy52:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case 0x80:
-       case 0x81:
-       case 0x82:
-       case 0x83:
-       case 0x84:
-       case 0x85:
-       case 0x86:
-       case 0x87:
-       case 0x88:
-       case 0x89:
-       case 0x8A:
-       case 0x8B:
-       case 0x8C:
-       case 0x8D:
-       case 0x8E:
-       case 0x8F:
-       case 0x90:
-       case 0x91:
-       case 0x92:
-       case 0x93:
-       case 0x94:
-       case 0x95:
-       case 0x96:
-       case 0x97:
-       case 0x98:
-       case 0x99:
-       case 0x9A:
-       case 0x9B:
-       case 0x9C:
-       case 0x9D:
-       case 0x9E:
-       case 0x9F:
-       case 0xA1:
-       case 0xA2:
-       case 0xA3:
-       case 0xA4:
-       case 0xA5:
-       case 0xA6:
-       case 0xA7:
-       case 0xA8:
-       case 0xA9:
-       case 0xAA:
-       case 0xAB:
-       case 0xAC:
-       case 0xAD:
-       case 0xAE:
-       case 0xAF:
-       case 0xB0:
-       case 0xB1:
-       case 0xB2:
-       case 0xB3:
-       case 0xB4:
-       case 0xB5:
-       case 0xB6:
-       case 0xB7:
-       case 0xB8:
-       case 0xB9:
-       case 0xBA:
-       case 0xBB:
-       case 0xBC:
-       case 0xBD:
-       case 0xBE:
-       case 0xBF:      goto yy66;
-       case 0xA0:      goto yy133;
-       default:        goto yy2;
-       }
+       ++YYCURSOR;
+       { return INDENT_TAB; }
 yy53:
+       YYCTXMARKER = YYCURSOR + 1;
        yyaccept = 8;
        yych = *(YYMARKER = ++YYCURSOR);
-       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '\t':
        case '\n':
@@ -655,7 +657,7 @@ yy55:
        ++YYCURSOR;
        { return TEXT_PERCENT; }
 yy57:
-       yyaccept = 6;
+       yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
        case '.':       goto yy77;
@@ -669,7 +671,7 @@ yy57:
        case '7':
        case '8':
        case '9':       goto yy78;
-       default:        goto yy23;
+       default:        goto yy7;
        }
 yy58:
        ++YYCURSOR;
@@ -691,7 +693,7 @@ yy65:
        { return PIPE; }
 yy66:
        yych = *++YYCURSOR;
-       goto yy23;
+       goto yy7;
 yy67:
        yych = *++YYCURSOR;
        switch (yych) {
@@ -1027,8 +1029,8 @@ yy76:
        default:        goto yy63;
        }
 yy77:
+       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
-       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '\t':
        case ' ':       goto yy83;
@@ -1083,8 +1085,8 @@ yy85:
        default:        goto yy2;
        }
 yy86:
+       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
-       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '\t':
        case '\n':
@@ -1161,8 +1163,8 @@ yy100:
        default:        goto yy99;
        }
 yy101:
+       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
-       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '\t':
        case '\n':
@@ -1173,8 +1175,8 @@ yy101:
        default:        goto yy2;
        }
 yy102:
+       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
-       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '\t':
        case '\n':
@@ -1251,8 +1253,8 @@ yy116:
        default:        goto yy115;
        }
 yy117:
+       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
-       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '\t':
        case '\n':
@@ -1263,8 +1265,8 @@ yy117:
        default:        goto yy2;
        }
 yy118:
+       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
-       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '\t':
        case '\n':
@@ -1340,243 +1342,141 @@ yy132:
        default:        goto yy131;
        }
 yy133:
-       yyaccept = 6;
-       yych = *(YYMARKER = ++YYCURSOR);
-       YYCTXMARKER = YYCURSOR;
-       switch (yych) {
-       case '\t':      goto yy137;
-       case ' ':       goto yy134;
-       case 0xC2:      goto yy136;
-       default:        goto yy23;
-       }
-yy134:
-       yyaccept = 16;
-       yych = *(YYMARKER = ++YYCURSOR);
-       switch (yych) {
-       case '\n':      goto yy141;
-       case '\r':      goto yy143;
-       case ' ':       goto yy139;
-       case 0xC2:      goto yy140;
-       default:        goto yy135;
-       }
+       ++YYCURSOR;
+       { return MATH_DOLLAR_DOUBLE; }
 yy135:
-       { return NON_INDENT_SPACE; }
+       ++YYCURSOR;
 yy136:
+       { return TEXT_LINEBREAK; }
+yy137:
        yych = *++YYCURSOR;
        switch (yych) {
-       case 0xA0:      goto yy134;
-       default:        goto yy2;
+       case '\n':      goto yy135;
+       default:        goto yy136;
        }
-yy137:
+yy138:
        ++YYCURSOR;
-       YYCURSOR = YYCTXMARKER;
-       { return NON_INDENT_SPACE; }
-yy139:
-       yyaccept = 16;
-       yych = *(YYMARKER = ++YYCURSOR);
-       switch (yych) {
-       case '\n':      goto yy141;
-       case '\r':      goto yy143;
-       case ' ':       goto yy144;
-       case 0xC2:      goto yy146;
-       default:        goto yy135;
+       switch ((yych = *YYCURSOR)) {
+       case '(':       goto yy204;
+       case ')':       goto yy206;
+       case '[':       goto yy208;
+       case ']':       goto yy210;
+       default:        goto yy139;
        }
+yy139:
+       { return ESCAPED_CHARACTER; }
 yy140:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case 0xA0:      goto yy139;
-       default:        goto yy2;
-       }
-yy141:
        ++YYCURSOR;
+       { return ESCAPED_CHARACTER; }
 yy142:
-       { return TEXT_LINEBREAK; }
-yy143:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '\n':      goto yy141;
-       default:        goto yy142;
-       }
-yy144:
-       yyaccept = 17;
-       yych = *(YYMARKER = ++YYCURSOR);
-       switch (yych) {
-       case '\n':      goto yy141;
-       case '\r':      goto yy143;
-       case ' ':       goto yy147;
-       case 0xC2:      goto yy149;
-       default:        goto yy145;
-       }
-yy145:
-       { return INDENT_SPACE; }
-yy146:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case 0xA0:      goto yy144;
-       default:        goto yy2;
-       }
-yy147:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       switch (yych) {
-       case '\n':      goto yy141;
-       case '\r':      goto yy143;
-       case ' ':       goto yy147;
-       case 0xC2:      goto yy149;
-       default:        goto yy2;
-       }
-yy149:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       switch (yych) {
-       case 0xA0:      goto yy147;
-       default:        goto yy2;
-       }
-yy150:
-       yych = *++YYCURSOR;
-       goto yy4;
-yy151:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '\n':      goto yy150;
-       default:        goto yy4;
-       }
-yy152:
-       ++YYCURSOR;
-       { return MATH_DOLLAR_DOUBLE; }
-yy154:
-       ++YYCURSOR;
-yy155:
-       { return TEXT_LINEBREAK; }
-yy156:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '\n':      goto yy154;
-       default:        goto yy155;
-       }
-yy157:
-       ++YYCURSOR;
-       switch ((yych = *YYCURSOR)) {
-       case '(':       goto yy223;
-       case ')':       goto yy225;
-       case '[':       goto yy227;
-       case ']':       goto yy229;
-       default:        goto yy158;
-       }
-yy158:
-       { return ESCAPED_CHARACTER; }
-yy159:
-       ++YYCURSOR;
-       { return ESCAPED_CHARACTER; }
-yy161:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy163:
+yy144:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy165:
+yy146:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy167:
+yy148:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy169:
+yy150:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy171:
+yy152:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy173:
+yy154:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy175:
+yy156:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy177:
+yy158:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy179:
+yy160:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy181:
+yy162:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy183:
+yy164:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy185:
+yy166:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy187:
+yy168:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy189:
+yy170:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy191:
+yy172:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy193:
+yy174:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy195:
+yy176:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy197:
+yy178:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy199:
+yy180:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy201:
+yy182:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy203:
+yy184:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy205:
+yy186:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy207:
+yy188:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy209:
+yy190:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy211:
+yy192:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy213:
+yy194:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy215:
+yy196:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy217:
+yy198:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy219:
+yy200:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy221:
+yy202:
        ++YYCURSOR;
        { return ESCAPED_CHARACTER; }
-yy223:
+yy204:
        ++YYCURSOR;
        { return MATH_PAREN_OPEN; }
-yy225:
+yy206:
        ++YYCURSOR;
        { return MATH_PAREN_CLOSE; }
-yy227:
+yy208:
        ++YYCURSOR;
        { return MATH_BRACKET_OPEN; }
-yy229:
+yy210:
        ++YYCURSOR;
        { return MATH_BRACKET_CLOSE; }
-yy231:
+yy212:
        ++YYCURSOR;
        yych = *YYCURSOR;
-yy232:
+yy213:
        switch (yych) {
        case '0':
        case '1':
@@ -1639,18 +1539,18 @@ yy232:
        case 'w':
        case 'x':
        case 'y':
-       case 'z':       goto yy231;
-       case ';':       goto yy245;
+       case 'z':       goto yy212;
+       case ';':       goto yy226;
        default:        goto yy2;
        }
-yy233:
+yy214:
        yych = *++YYCURSOR;
        switch (yych) {
        case 'M':
-       case 'm':       goto yy244;
-       default:        goto yy232;
+       case 'm':       goto yy225;
+       default:        goto yy213;
        }
-yy234:
+yy215:
        yych = *++YYCURSOR;
        switch (yych) {
        case '0':
@@ -1662,18 +1562,18 @@ yy234:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy236;
+       case '9':       goto yy217;
        case 'X':
-       case 'x':       goto yy235;
+       case 'x':       goto yy216;
        default:        goto yy2;
        }
-yy235:
+yy216:
        yych = *++YYCURSOR;
        switch (yych) {
        case ';':       goto yy2;
-       default:        goto yy241;
+       default:        goto yy222;
        }
-yy236:
+yy217:
        ++YYCURSOR;
        yych = *YYCURSOR;
        switch (yych) {
@@ -1686,17 +1586,17 @@ yy236:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy236;
-       case ';':       goto yy238;
+       case '9':       goto yy217;
+       case ';':       goto yy219;
        default:        goto yy2;
        }
-yy238:
+yy219:
        ++YYCURSOR;
        { return HTML_ENTITY; }
-yy240:
+yy221:
        ++YYCURSOR;
        yych = *YYCURSOR;
-yy241:
+yy222:
        switch (yych) {
        case '0':
        case '1':
@@ -1745,245 +1645,310 @@ yy241:
        case 'c':
        case 'd':
        case 'e':
-       case 'f':       goto yy240;
-       case ';':       goto yy242;
+       case 'f':       goto yy221;
+       case ';':       goto yy223;
        default:        goto yy2;
        }
-yy242:
+yy223:
        ++YYCURSOR;
        { return HTML_ENTITY; }
-yy244:
+yy225:
        yych = *++YYCURSOR;
        switch (yych) {
        case 'P':
-       case 'p':       goto yy247;
-       default:        goto yy232;
+       case 'p':       goto yy228;
+       default:        goto yy213;
        }
-yy245:
+yy226:
        ++YYCURSOR;
        { return HTML_ENTITY; }
-yy247:
+yy228:
        yych = *++YYCURSOR;
        switch (yych) {
-       case ';':       goto yy248;
-       default:        goto yy232;
+       case ';':       goto yy229;
+       default:        goto yy213;
        }
-yy248:
+yy229:
        ++YYCURSOR;
        { return AMPERSAND_LONG; }
-yy250:
+yy231:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '.':       goto yy254;
+       case '.':       goto yy235;
        default:        goto yy2;
        }
-yy251:
+yy232:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '.':       goto yy252;
+       case '.':       goto yy233;
        default:        goto yy2;
        }
-yy252:
+yy233:
        ++YYCURSOR;
        { return ELLIPSIS; }
-yy254:
+yy235:
        yych = *++YYCURSOR;
        switch (yych) {
-       case ' ':       goto yy255;
+       case ' ':       goto yy236;
        default:        goto yy2;
        }
-yy255:
+yy236:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '.':       goto yy256;
+       case '.':       goto yy237;
        default:        goto yy2;
        }
-yy256:
+yy237:
        ++YYCURSOR;
        { return ELLIPSIS; }
-yy258:
+yy239:
        ++YYCURSOR;
        { return QUOTE_RIGHT_ALT; }
-yy260:
+yy241:
        ++YYCURSOR;
        { return BRACE_DOUBLE_RIGHT; }
-yy262:
+yy243:
        ++YYCURSOR;
        { return BRACKET_IMAGE_LEFT; }
-yy264:
+yy245:
        ++YYCURSOR;
        { return BRACKET_VARIABLE_LEFT; }
-yy266:
+yy247:
        ++YYCURSOR;
        { return BRACKET_GLOSSARY_LEFT; }
-yy268:
+yy249:
        ++YYCURSOR;
        { return BRACKET_FOOTNOTE_LEFT; }
-yy270:
+yy251:
        ++YYCURSOR;
        { return BRACKET_CITATION_LEFT; }
-yy272:
+yy253:
        ++YYCURSOR;
        { return BRACKET_ABBREVIATION_LEFT; }
-yy274:
+yy255:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '}':       goto yy275;
+       case '}':       goto yy256;
        default:        goto yy2;
        }
-yy275:
+yy256:
        ++YYCURSOR;
        { return CRITIC_HI_CLOSE; }
-yy277:
+yy258:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '}':       goto yy280;
+       case '}':       goto yy261;
        default:        goto yy2;
        }
-yy278:
+yy259:
        ++YYCURSOR;
        { return CRITIC_SUB_DIV; }
-yy280:
+yy261:
        ++YYCURSOR;
        { return CRITIC_SUB_CLOSE; }
-yy282:
+yy263:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '-':       goto yy286;
+       case '-':       goto yy267;
        default:        goto yy2;
        }
-yy283:
+yy264:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '}':       goto yy284;
+       case '}':       goto yy265;
        default:        goto yy2;
        }
-yy284:
+yy265:
        ++YYCURSOR;
        { return CRITIC_COM_CLOSE; }
-yy286:
+yy267:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '-':       goto yy287;
+       case '-':       goto yy268;
        default:        goto yy2;
        }
-yy287:
+yy268:
        ++YYCURSOR;
        { return HTML_COMMENT_START; }
-yy289:
+yy270:
        ++YYCURSOR;
        switch ((yych = *YYCURSOR)) {
-       case '-':       goto yy295;
-       case '>':       goto yy293;
-       case '}':       goto yy291;
-       default:        goto yy290;
+       case '-':       goto yy276;
+       case '>':       goto yy274;
+       case '}':       goto yy272;
+       default:        goto yy271;
        }
-yy290:
+yy271:
        { return DASH_N; }
-yy291:
+yy272:
        ++YYCURSOR;
        { return CRITIC_DEL_CLOSE; }
-yy293:
+yy274:
        ++YYCURSOR;
        { return HTML_COMMENT_STOP; }
-yy295:
+yy276:
        ++YYCURSOR;
        { return DASH_M; }
-yy297:
+yy278:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '}':       goto yy298;
+       case '}':       goto yy279;
        default:        goto yy2;
        }
-yy298:
+yy279:
        ++YYCURSOR;
        { return CRITIC_ADD_CLOSE; }
-yy300:
+yy281:
        ++YYCURSOR;
        switch ((yych = *YYCURSOR)) {
-       case '=':       goto yy322;
-       default:        goto yy301;
+       case '=':       goto yy303;
+       default:        goto yy282;
        }
-yy301:
+yy282:
        { return RAW_FILTER_LEFT; }
-yy302:
-       yyaccept = 18;
+yy283:
+       yyaccept = 16;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
-       case 'T':       goto yy316;
-       default:        goto yy303;
+       case 'T':       goto yy297;
+       default:        goto yy284;
        }
-yy303:
+yy284:
        { return BRACE_DOUBLE_LEFT; }
-yy304:
+yy285:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '~':       goto yy314;
+       case '~':       goto yy295;
        default:        goto yy2;
        }
-yy305:
+yy286:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '>':       goto yy312;
+       case '>':       goto yy293;
        default:        goto yy2;
        }
-yy306:
+yy287:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '-':       goto yy310;
+       case '-':       goto yy291;
        default:        goto yy2;
        }
-yy307:
+yy288:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '+':       goto yy308;
+       case '+':       goto yy289;
        default:        goto yy2;
        }
-yy308:
+yy289:
        ++YYCURSOR;
        { return CRITIC_ADD_OPEN; }
-yy310:
+yy291:
        ++YYCURSOR;
        { return CRITIC_DEL_OPEN; }
-yy312:
+yy293:
        ++YYCURSOR;
        { return CRITIC_COM_OPEN; }
-yy314:
+yy295:
        ++YYCURSOR;
        { return CRITIC_SUB_OPEN; }
-yy316:
+yy297:
        yych = *++YYCURSOR;
        switch (yych) {
-       case 'O':       goto yy317;
+       case 'O':       goto yy298;
        default:        goto yy2;
        }
-yy317:
+yy298:
        yych = *++YYCURSOR;
        switch (yych) {
-       case 'C':       goto yy318;
+       case 'C':       goto yy299;
        default:        goto yy2;
        }
-yy318:
+yy299:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '}':       goto yy319;
+       case '}':       goto yy300;
        default:        goto yy2;
        }
-yy319:
+yy300:
        yych = *++YYCURSOR;
        switch (yych) {
-       case '}':       goto yy320;
+       case '}':       goto yy301;
        default:        goto yy2;
        }
-yy320:
+yy301:
        ++YYCURSOR;
        { return TOC; }
-yy322:
+yy303:
        ++YYCURSOR;
        { return CRITIC_HI_OPEN; }
-yy324:
+yy305:
+       YYCTXMARKER = YYCURSOR + 1;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case '\t':      goto yy309;
+       case ' ':       goto yy306;
+       case 0xC2:      goto yy308;
+       default:        goto yy7;
+       }
+yy306:
+       yyaccept = 17;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case '\n':      goto yy313;
+       case '\r':      goto yy315;
+       case ' ':       goto yy311;
+       case 0xC2:      goto yy312;
+       default:        goto yy307;
+       }
+yy307:
+       { return NON_INDENT_SPACE; }
+yy308:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0xA0:      goto yy306;
+       default:        goto yy2;
+       }
+yy309:
+       ++YYCURSOR;
+       YYCURSOR = YYCTXMARKER;
+       { return NON_INDENT_SPACE; }
+yy311:
+       yyaccept = 17;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case '\n':      goto yy313;
+       case '\r':      goto yy315;
+       case ' ':       goto yy325;
+       case 0xC2:      goto yy327;
+       default:        goto yy307;
+       }
+yy312:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0xA0:      goto yy311;
+       default:        goto yy2;
+       }
+yy313:
+       yyaccept = 18;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case ' ':       goto yy316;
+       default:        goto yy314;
+       }
+yy314:
+       { return TEXT_LINEBREAK; }
+yy315:
+       yyaccept = 18;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case '\n':      goto yy313;
+       case ' ':       goto yy316;
+       default:        goto yy314;
+       }
+yy316:
+       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
-       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case 0x00:
        case 0x01:
@@ -2108,7 +2073,7 @@ yy324:
        case '|':
        case '}':
        case '~':
-       case 0x7F:      goto yy325;
+       case 0x7F:      goto yy317;
        case 0xC2:
        case 0xC3:
        case 0xC4:
@@ -2138,8 +2103,8 @@ yy324:
        case 0xDC:
        case 0xDD:
        case 0xDE:
-       case 0xDF:      goto yy327;
-       case 0xE0:      goto yy328;
+       case 0xDF:      goto yy319;
+       case 0xE0:      goto yy320;
        case 0xE1:
        case 0xE2:
        case 0xE3:
@@ -2154,19 +2119,19 @@ yy324:
        case 0xEC:
        case 0xED:
        case 0xEE:
-       case 0xEF:      goto yy329;
-       case 0xF0:      goto yy330;
+       case 0xEF:      goto yy321;
+       case 0xF0:      goto yy322;
        case 0xF1:
        case 0xF2:
-       case 0xF3:      goto yy331;
-       case 0xF4:      goto yy332;
+       case 0xF3:      goto yy323;
+       case 0xF4:      goto yy324;
        default:        goto yy2;
        }
-yy325:
+yy317:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
-       { return TEXT_NL_SP; }
-yy327:
+       { return TEXT_LINEBREAK_SP; }
+yy319:
        yych = *++YYCURSOR;
        switch (yych) {
        case 0x80:
@@ -2232,10 +2197,10 @@ yy327:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy325;
+       case 0xBF:      goto yy317;
        default:        goto yy2;
        }
-yy328:
+yy320:
        yych = *++YYCURSOR;
        switch (yych) {
        case 0xA0:
@@ -2269,10 +2234,10 @@ yy328:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy327;
+       case 0xBF:      goto yy319;
        default:        goto yy2;
        }
-yy329:
+yy321:
        yych = *++YYCURSOR;
        switch (yych) {
        case 0x80:
@@ -2338,10 +2303,10 @@ yy329:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy327;
+       case 0xBF:      goto yy319;
        default:        goto yy2;
        }
-yy330:
+yy322:
        yych = *++YYCURSOR;
        switch (yych) {
        case 0x90:
@@ -2391,10 +2356,10 @@ yy330:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy329;
+       case 0xBF:      goto yy321;
        default:        goto yy2;
        }
-yy331:
+yy323:
        yych = *++YYCURSOR;
        switch (yych) {
        case 0x80:
@@ -2460,10 +2425,557 @@ yy331:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy329;
+       case 0xBF:      goto yy321;
+       default:        goto yy2;
+       }
+yy324:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x80:
+       case 0x81:
+       case 0x82:
+       case 0x83:
+       case 0x84:
+       case 0x85:
+       case 0x86:
+       case 0x87:
+       case 0x88:
+       case 0x89:
+       case 0x8A:
+       case 0x8B:
+       case 0x8C:
+       case 0x8D:
+       case 0x8E:
+       case 0x8F:      goto yy321;
+       default:        goto yy2;
+       }
+yy325:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case '\n':      goto yy313;
+       case '\r':      goto yy315;
+       case ' ':       goto yy328;
+       case 0xC2:      goto yy330;
+       default:        goto yy326;
+       }
+yy326:
+       { return INDENT_SPACE; }
+yy327:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0xA0:      goto yy325;
+       default:        goto yy2;
+       }
+yy328:
+       ++YYCURSOR;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '\n':      goto yy313;
+       case '\r':      goto yy315;
+       case ' ':       goto yy328;
+       case 0xC2:      goto yy330;
+       default:        goto yy2;
+       }
+yy330:
+       ++YYCURSOR;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0xA0:      goto yy328;
        default:        goto yy2;
        }
+yy331:
+       yych = *++YYCURSOR;
+       goto yy4;
 yy332:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\n':      goto yy331;
+       default:        goto yy4;
+       }
+yy333:
+       YYCTXMARKER = YYCURSOR + 1;
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x1F:
+       case '!':
+       case '"':
+       case '#':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '<':
+       case '=':
+       case '>':
+       case '?':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '[':
+       case '\\':
+       case ']':
+       case '^':
+       case '_':
+       case '`':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '{':
+       case '|':
+       case '}':
+       case '~':
+       case 0x7F:      goto yy334;
+       case 0xC2:
+       case 0xC3:
+       case 0xC4:
+       case 0xC5:
+       case 0xC6:
+       case 0xC7:
+       case 0xC8:
+       case 0xC9:
+       case 0xCA:
+       case 0xCB:
+       case 0xCC:
+       case 0xCD:
+       case 0xCE:
+       case 0xCF:
+       case 0xD0:
+       case 0xD1:
+       case 0xD2:
+       case 0xD3:
+       case 0xD4:
+       case 0xD5:
+       case 0xD6:
+       case 0xD7:
+       case 0xD8:
+       case 0xD9:
+       case 0xDA:
+       case 0xDB:
+       case 0xDC:
+       case 0xDD:
+       case 0xDE:
+       case 0xDF:      goto yy336;
+       case 0xE0:      goto yy337;
+       case 0xE1:
+       case 0xE2:
+       case 0xE3:
+       case 0xE4:
+       case 0xE5:
+       case 0xE6:
+       case 0xE7:
+       case 0xE8:
+       case 0xE9:
+       case 0xEA:
+       case 0xEB:
+       case 0xEC:
+       case 0xED:
+       case 0xEE:
+       case 0xEF:      goto yy338;
+       case 0xF0:      goto yy339;
+       case 0xF1:
+       case 0xF2:
+       case 0xF3:      goto yy340;
+       case 0xF4:      goto yy341;
+       default:        goto yy2;
+       }
+yy334:
+       ++YYCURSOR;
+       YYCURSOR = YYCTXMARKER;
+       { return TEXT_NL_SP; }
+yy336:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x80:
+       case 0x81:
+       case 0x82:
+       case 0x83:
+       case 0x84:
+       case 0x85:
+       case 0x86:
+       case 0x87:
+       case 0x88:
+       case 0x89:
+       case 0x8A:
+       case 0x8B:
+       case 0x8C:
+       case 0x8D:
+       case 0x8E:
+       case 0x8F:
+       case 0x90:
+       case 0x91:
+       case 0x92:
+       case 0x93:
+       case 0x94:
+       case 0x95:
+       case 0x96:
+       case 0x97:
+       case 0x98:
+       case 0x99:
+       case 0x9A:
+       case 0x9B:
+       case 0x9C:
+       case 0x9D:
+       case 0x9E:
+       case 0x9F:
+       case 0xA0:
+       case 0xA1:
+       case 0xA2:
+       case 0xA3:
+       case 0xA4:
+       case 0xA5:
+       case 0xA6:
+       case 0xA7:
+       case 0xA8:
+       case 0xA9:
+       case 0xAA:
+       case 0xAB:
+       case 0xAC:
+       case 0xAD:
+       case 0xAE:
+       case 0xAF:
+       case 0xB0:
+       case 0xB1:
+       case 0xB2:
+       case 0xB3:
+       case 0xB4:
+       case 0xB5:
+       case 0xB6:
+       case 0xB7:
+       case 0xB8:
+       case 0xB9:
+       case 0xBA:
+       case 0xBB:
+       case 0xBC:
+       case 0xBD:
+       case 0xBE:
+       case 0xBF:      goto yy334;
+       default:        goto yy2;
+       }
+yy337:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0xA0:
+       case 0xA1:
+       case 0xA2:
+       case 0xA3:
+       case 0xA4:
+       case 0xA5:
+       case 0xA6:
+       case 0xA7:
+       case 0xA8:
+       case 0xA9:
+       case 0xAA:
+       case 0xAB:
+       case 0xAC:
+       case 0xAD:
+       case 0xAE:
+       case 0xAF:
+       case 0xB0:
+       case 0xB1:
+       case 0xB2:
+       case 0xB3:
+       case 0xB4:
+       case 0xB5:
+       case 0xB6:
+       case 0xB7:
+       case 0xB8:
+       case 0xB9:
+       case 0xBA:
+       case 0xBB:
+       case 0xBC:
+       case 0xBD:
+       case 0xBE:
+       case 0xBF:      goto yy336;
+       default:        goto yy2;
+       }
+yy338:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x80:
+       case 0x81:
+       case 0x82:
+       case 0x83:
+       case 0x84:
+       case 0x85:
+       case 0x86:
+       case 0x87:
+       case 0x88:
+       case 0x89:
+       case 0x8A:
+       case 0x8B:
+       case 0x8C:
+       case 0x8D:
+       case 0x8E:
+       case 0x8F:
+       case 0x90:
+       case 0x91:
+       case 0x92:
+       case 0x93:
+       case 0x94:
+       case 0x95:
+       case 0x96:
+       case 0x97:
+       case 0x98:
+       case 0x99:
+       case 0x9A:
+       case 0x9B:
+       case 0x9C:
+       case 0x9D:
+       case 0x9E:
+       case 0x9F:
+       case 0xA0:
+       case 0xA1:
+       case 0xA2:
+       case 0xA3:
+       case 0xA4:
+       case 0xA5:
+       case 0xA6:
+       case 0xA7:
+       case 0xA8:
+       case 0xA9:
+       case 0xAA:
+       case 0xAB:
+       case 0xAC:
+       case 0xAD:
+       case 0xAE:
+       case 0xAF:
+       case 0xB0:
+       case 0xB1:
+       case 0xB2:
+       case 0xB3:
+       case 0xB4:
+       case 0xB5:
+       case 0xB6:
+       case 0xB7:
+       case 0xB8:
+       case 0xB9:
+       case 0xBA:
+       case 0xBB:
+       case 0xBC:
+       case 0xBD:
+       case 0xBE:
+       case 0xBF:      goto yy336;
+       default:        goto yy2;
+       }
+yy339:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x90:
+       case 0x91:
+       case 0x92:
+       case 0x93:
+       case 0x94:
+       case 0x95:
+       case 0x96:
+       case 0x97:
+       case 0x98:
+       case 0x99:
+       case 0x9A:
+       case 0x9B:
+       case 0x9C:
+       case 0x9D:
+       case 0x9E:
+       case 0x9F:
+       case 0xA0:
+       case 0xA1:
+       case 0xA2:
+       case 0xA3:
+       case 0xA4:
+       case 0xA5:
+       case 0xA6:
+       case 0xA7:
+       case 0xA8:
+       case 0xA9:
+       case 0xAA:
+       case 0xAB:
+       case 0xAC:
+       case 0xAD:
+       case 0xAE:
+       case 0xAF:
+       case 0xB0:
+       case 0xB1:
+       case 0xB2:
+       case 0xB3:
+       case 0xB4:
+       case 0xB5:
+       case 0xB6:
+       case 0xB7:
+       case 0xB8:
+       case 0xB9:
+       case 0xBA:
+       case 0xBB:
+       case 0xBC:
+       case 0xBD:
+       case 0xBE:
+       case 0xBF:      goto yy338;
+       default:        goto yy2;
+       }
+yy340:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x80:
+       case 0x81:
+       case 0x82:
+       case 0x83:
+       case 0x84:
+       case 0x85:
+       case 0x86:
+       case 0x87:
+       case 0x88:
+       case 0x89:
+       case 0x8A:
+       case 0x8B:
+       case 0x8C:
+       case 0x8D:
+       case 0x8E:
+       case 0x8F:
+       case 0x90:
+       case 0x91:
+       case 0x92:
+       case 0x93:
+       case 0x94:
+       case 0x95:
+       case 0x96:
+       case 0x97:
+       case 0x98:
+       case 0x99:
+       case 0x9A:
+       case 0x9B:
+       case 0x9C:
+       case 0x9D:
+       case 0x9E:
+       case 0x9F:
+       case 0xA0:
+       case 0xA1:
+       case 0xA2:
+       case 0xA3:
+       case 0xA4:
+       case 0xA5:
+       case 0xA6:
+       case 0xA7:
+       case 0xA8:
+       case 0xA9:
+       case 0xAA:
+       case 0xAB:
+       case 0xAC:
+       case 0xAD:
+       case 0xAE:
+       case 0xAF:
+       case 0xB0:
+       case 0xB1:
+       case 0xB2:
+       case 0xB3:
+       case 0xB4:
+       case 0xB5:
+       case 0xB6:
+       case 0xB7:
+       case 0xB8:
+       case 0xB9:
+       case 0xBA:
+       case 0xBB:
+       case 0xBC:
+       case 0xBD:
+       case 0xBE:
+       case 0xBF:      goto yy338;
+       default:        goto yy2;
+       }
+yy341:
        ++YYCURSOR;
        switch ((yych = *YYCURSOR)) {
        case 0x80:
@@ -2481,7 +2993,7 @@ yy332:
        case 0x8C:
        case 0x8D:
        case 0x8E:
-       case 0x8F:      goto yy329;
+       case 0x8F:      goto yy338;
        default:        goto yy2;
        }
 }
index db280f18e97725158210594e971772a040c46ea8..291f27051e7eca61f79717ca520bd46593c53716 100644 (file)
@@ -97,7 +97,7 @@ int scan(Scanner * s, const char * stop) {
 
                // NL with single space -- this would otherwise be wrapped into a TEXT_PLAIN
                NL ' ' / [^ \t\r\n]                             { return TEXT_NL_SP; }
-
+               TEXT_LINEBREAK ' ' / [^ \t\r\n] { return TEXT_LINEBREAK_SP; }
 
                "{{TOC}}"                                               { return TOC; }
 
index aae9858e64147ab074f8fba38a5de74ac342d7ba..8a2bce77b9bee58660321a6cd65031aeecda4f6a 100644 (file)
@@ -374,26 +374,30 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
        const char * source = e->dstr->str;
 
        token * t = NULL;
+       token * first_child = line->child;
+
        short temp_short;
        size_t scan_len;
 
        // Skip non-indenting space
-       if (line->child->type == NON_INDENT_SPACE) {
-               token_remove_first_child(line);
-       } else if (line->child->type == TEXT_PLAIN && line->child->len == 1) {
-               if (source[line->child->start] == ' ') {
-                       token_remove_first_child(line);
+       if (first_child->type == NON_INDENT_SPACE) {
+               //token_remove_first_child(line);
+               first_child = first_child->next;
+       } else if (first_child->type == TEXT_PLAIN && first_child->len == 1) {
+               if (source[first_child->start] == ' ') {
+                       //token_remove_first_child(line);
+                       first_child = first_child->next;
                }
        }
 
-       if (line->child == NULL) {
+       if (first_child == NULL) {
                line->type = LINE_EMPTY;
                return;
        }
 
-       switch (line->child->type) {
+       switch (first_child->type) {
                case INDENT_TAB:
-                       if (line_is_empty(line->child)) {
+                       if (line_is_empty(first_child)) {
                                line->type = LINE_EMPTY;
                                e->allow_meta = false;
                        } else {
@@ -403,7 +407,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                        break;
 
                case INDENT_SPACE:
-                       if (line_is_empty(line->child)) {
+                       if (line_is_empty(first_child)) {
                                line->type = LINE_EMPTY;
                                e->allow_meta = false;
                        } else {
@@ -423,7 +427,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
 
                case ANGLE_RIGHT:
                        line->type = LINE_BLOCKQUOTE;
-                       line->child->type = MARKER_BLOCKQUOTE;
+                       first_child->type = MARKER_BLOCKQUOTE;
                        break;
 
                case BACKTICK:
@@ -432,10 +436,10 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                                break;
                        }
 
-                       scan_len = scan_fence_end(&source[line->child->start]);
+                       scan_len = scan_fence_end(&source[first_child->start]);
 
                        if (scan_len) {
-                               switch (line->child->len) {
+                               switch (first_child->len) {
                                        case 3:
                                                line->type = LINE_FENCE_BACKTICK_3;
                                                break;
@@ -451,10 +455,10 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
 
                                break;
                        } else {
-                               scan_len = scan_fence_start(&source[line->child->start]);
+                               scan_len = scan_fence_start(&source[first_child->start]);
 
                                if (scan_len) {
-                                       switch (line->child->len) {
+                                       switch (first_child->len) {
                                                case 3:
                                                        line->type = LINE_FENCE_BACKTICK_START_3;
                                                        break;
@@ -482,7 +486,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                                break;
                        }
 
-                       if (scan_definition(&source[line->child->start])) {
+                       if (scan_definition(&source[first_child->start])) {
                                line->type = LINE_DEFINITION;
                        }
 
@@ -494,12 +498,12 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                case HASH4:
                case HASH5:
                case HASH6:
-                       if (scan_atx(&source[line->child->start])) {
-                               line->type = (line->child->type - HASH1) + LINE_ATX_1;
-                               line->child->type = (line->type - LINE_ATX_1) + MARKER_H1;
+                       if (scan_atx(&source[first_child->start])) {
+                               line->type = (first_child->type - HASH1) + LINE_ATX_1;
+                               first_child->type = (line->type - LINE_ATX_1) + MARKER_H1;
 
                                // Strip trailing whitespace from '#' sequence
-                               line->child->len = line->child->type - MARKER_H1 + 1;
+                               first_child->len = first_child->type - MARKER_H1 + 1;
 
                                // Strip trailing '#' sequence if present
                                if (line->child->tail->type == TEXT_NL) {
@@ -522,7 +526,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                        break;
 
                case HTML_COMMENT_START:
-                       if (!line->child->next || !line->child->next->next) {
+                       if (!first_child->next || !first_child->next->next) {
                                line->type = LINE_START_COMMENT;
                        } else {
                                line->type = LINE_PLAIN;
@@ -531,7 +535,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                        break;
 
                case HTML_COMMENT_STOP:
-                       if (!line->child->next || !line->child->next->next) {
+                       if (!first_child->next || !first_child->next->next) {
                                line->type = LINE_STOP_COMMENT;
                        } else {
                                line->type = LINE_PLAIN;
@@ -540,19 +544,19 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                        break;
 
                case TEXT_NUMBER_POSS_LIST:
-                       switch (source[line->child->next->start]) {
+                       switch (source[first_child->next->start]) {
                                case ' ':
                                case '\t':
                                        line->type = LINE_LIST_ENUMERATED;
-                                       line->child->type = MARKER_LIST_ENUMERATOR;
+                                       first_child->type = MARKER_LIST_ENUMERATOR;
 
-                                       switch (line->child->next->type) {
+                                       switch (first_child->next->type) {
                                                case TEXT_PLAIN:
 
                                                        // Strip whitespace between bullet and text
-                                                       while (char_is_whitespace(source[line->child->next->start])) {
-                                                               line->child->next->start++;
-                                                               line->child->next->len--;
+                                                       while (char_is_whitespace(source[first_child->next->start])) {
+                                                               first_child->next->start++;
+                                                               first_child->next->len--;
                                                        }
 
                                                        break;
@@ -560,7 +564,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                                                case INDENT_SPACE:
                                                case INDENT_TAB:
                                                case NON_INDENT_SPACE:
-                                                       t = line->child;
+                                                       t = first_child;
 
                                                        while (t->next && ((t->next->type == INDENT_SPACE) ||
                                                                           (t->next->type == INDENT_TAB) ||
@@ -575,7 +579,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
 
                                default:
                                        line->type = LINE_PLAIN;
-                                       line->child->type = TEXT_PLAIN;
+                                       first_child->type = TEXT_PLAIN;
                                        break;
                        }
 
@@ -584,7 +588,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                case EQUAL:
 
                        // Could this be a setext heading marker?
-                       if (scan_setext(&source[line->child->start])) {
+                       if (scan_setext(&source[first_child->start])) {
                                line->type = LINE_SETEXT_1;
                        } else {
                                line->type = LINE_PLAIN;
@@ -594,7 +598,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
 
                case DASH_N:
                case DASH_M:
-                       if (scan_setext(&source[line->child->start])) {
+                       if (scan_setext(&source[first_child->start])) {
                                line->type = LINE_SETEXT_2;
                                break;
                        }
@@ -602,14 +606,14 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                case STAR:
                case UL:
                        // Could this be a horizontal rule?
-                       t = line->child->next;
-                       temp_short = line->child->len;
+                       t = first_child->next;
+                       temp_short = first_child->len;
 
                        while (t) {
                                switch (t->type) {
                                        case DASH_N:
                                        case DASH_M:
-                                               if (t->type == line->child->type) {
+                                               if (t->type == first_child->type) {
                                                        t = t->next;
 
                                                        if (t) {
@@ -624,7 +628,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
 
                                        case STAR:
                                        case UL:
-                                               if (t->type == line->child->type) {
+                                               if (t->type == first_child->type) {
                                                        t = t->next;
                                                        temp_short++;
                                                } else {
@@ -668,7 +672,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                                break;
                        }
 
-                       if (line->child->type == UL) {
+                       if (first_child->type == UL) {
                                // Revert to plain for this type
                                line->type = LINE_PLAIN;
                                break;
@@ -676,29 +680,29 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
 
                        // If longer than 1 character, then it can't be a list marker, so it's a
                        // plain line
-                       if (line->child->len > 1) {
+                       if (first_child->len > 1) {
                                line->type = LINE_PLAIN;
                                break;
                        }
 
                case PLUS:
-                       if (!line->child->next) {
+                       if (!first_child->next) {
                                // TODO: Should this be an empty list item instead??
                                line->type = LINE_PLAIN;
                        } else {
-                               switch (source[line->child->next->start]) {
+                               switch (source[first_child->next->start]) {
                                        case ' ':
                                        case '\t':
                                                line->type = LINE_LIST_BULLETED;
-                                               line->child->type = MARKER_LIST_BULLET;
+                                               first_child->type = MARKER_LIST_BULLET;
 
-                                               switch (line->child->next->type) {
+                                               switch (first_child->next->type) {
                                                        case TEXT_PLAIN:
 
                                                                // Strip whitespace between bullet and text
-                                                               while (char_is_whitespace(source[line->child->next->start])) {
-                                                                       line->child->next->start++;
-                                                                       line->child->next->len--;
+                                                               while (char_is_whitespace(source[first_child->next->start])) {
+                                                                       first_child->next->start++;
+                                                                       first_child->next->len--;
                                                                }
 
                                                                break;
@@ -706,7 +710,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
                                                        case INDENT_SPACE:
                                                        case INDENT_TAB:
                                                        case NON_INDENT_SPACE:
-                                                               t = line->child;
+                                                               t = first_child;
 
                                                                while (t->next && ((t->next->type == INDENT_SPACE) ||
                                                                                   (t->next->type == INDENT_TAB) ||
@@ -821,7 +825,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
        if ((line->type == LINE_PLAIN) &&
                !(e->extensions & EXT_COMPATIBILITY)) {
                // Check if this is a potential table line
-               token * walker = line->child;
+               token * walker = first_child;
 
                while (walker != NULL) {
                        if (walker->type == PIPE) {
@@ -1014,12 +1018,24 @@ token * mmd_tokenize_string(mmd_engine * e, size_t start, size_t len, bool stop_
                                break;
 
                        case TEXT_NL_SP:
-                               t = token_new(TEXT_NL, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start - 1));
+                       case TEXT_LINEBREAK_SP:
                        case TEXT_LINEBREAK:
                        case TEXT_NL:
+
                                // We hit the end of a line
-                               if (type != TEXT_NL_SP)
-                                       t = token_new(type, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start));
+                               switch (type) {
+                                       case TEXT_NL_SP:
+                                               t = token_new(TEXT_NL, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start) - 1);
+                                               break;
+
+                                       case TEXT_LINEBREAK_SP:
+                                               t = token_new(TEXT_LINEBREAK, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start) - 1);
+                                               break;
+
+                                       default:
+                                               t = token_new(type, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start));
+                                               break;
+                               }
 
                                token_append_child(line, t);
 
@@ -1043,13 +1059,23 @@ token * mmd_tokenize_string(mmd_engine * e, size_t start, size_t len, bool stop_
                                        }
                                }
 
-                               if (type == TEXT_NL_SP) {
-                    line = token_new(0, s.cur - e->dstr->str - 1, 0);
-                                       t = token_new(NON_INDENT_SPACE, (size_t)(s.cur - e->dstr->str - 1), 1);
-                                       token_append_child(line, t);
-                } else {
-                    line = token_new(0, s.cur - e->dstr->str, 0);
-                }
+                               switch (type) {
+                                       case TEXT_NL_SP:
+                                               line = token_new(0, s.cur - e->dstr->str - 1, 0);
+                                               t = token_new(NON_INDENT_SPACE, (size_t)(s.cur - e->dstr->str - 1), 1);
+                                               token_append_child(line, t);
+                                               break;
+
+                                       case TEXT_LINEBREAK_SP:
+                                               line = token_new(0, s.cur - e->dstr->str - 1, 0);
+                                               t = token_new(NON_INDENT_SPACE, (size_t)(s.cur - e->dstr->str - 1), 1);
+                                               token_append_child(line, t);
+                                               break;
+
+                                       default:
+                                               line = token_new(0, s.cur - e->dstr->str, 0);
+                                               break;
+                               }
 
                                break;
 
@@ -1961,7 +1987,7 @@ void strip_line_tokens_from_block(mmd_engine * e, token * block) {
 
        #ifndef NDEBUG
        fprintf(stderr, "Strip line tokens from %d (%lu:%lu) (child %d)\n", block->type, block->start, block->len, block->child->type);
-       token_tree_describe(block, NULL);
+       token_tree_describe(block, e->dstr->str);
        #endif
 
        token * l = block->child;
@@ -1997,6 +2023,11 @@ void strip_line_tokens_from_block(mmd_engine * e, token * block) {
 
        // Move contents of line directly into the parent block
        while (l != NULL) {
+               // Remove leading non-indent space from line
+               if (block->type != BLOCK_CODE_FENCED && l->child && l->child->type == NON_INDENT_SPACE) {
+                       token_remove_first_child(l);
+               }
+
                switch (l->type) {
                        case LINE_SETEXT_1:
                        case LINE_SETEXT_2:
@@ -2036,11 +2067,6 @@ void strip_line_tokens_from_block(mmd_engine * e, token * block) {
                        case LINE_STOP_COMMENT:
 handle_line:
 
-                               // Remove leading non-indent space from line
-                               if (block->type != BLOCK_CODE_FENCED && l->child && l->child->type == NON_INDENT_SPACE) {
-                                       token_remove_first_child(l);
-                               }
-
                        case LINE_INDENTED_TAB:
                        case LINE_INDENTED_SPACE:
 
index aad64e743a66eb4b8fbe520c361da2d6a0a046a8..f674b0d2a076a274b8fe4ed9f4173e817f9d7c14 100644 (file)
@@ -303,7 +303,7 @@ office:mimetype="application/vnd.oasis.opendocument.text">
 
 <text:p text:style-name="Preformatted Text">&lt;p&gt;foo&lt;/p&gt;<text:line-break/></text:p>
 
-<text:p text:style-name="Preformatted Text">foo<text:line-break/><text:line-break/><text:tab/>bar<text:line-break/><text:line-break/>bar<text:line-break/><text:line-break/>    foo<text:line-break/></text:p>
+<text:p text:style-name="Preformatted Text">foo<text:line-break/><text:line-break/><text:tab/>bar<text:line-break/><text:line-break/>  bar<text:line-break/><text:line-break/>    foo<text:line-break/></text:p>
 
 <text:p text:style-name="Preformatted Text">foo<text:line-break/></text:p>
 </office:text>
index b048f38def6f2c94fc15a2cd92b5a65f12110978..e52a091b19bfc02e12dfec89dcd1a7397cd68124 100644 (file)
@@ -42,7 +42,7 @@ bar
 
        bar
 
-bar
+  bar
 
     foo
 </code></pre>
index c770be1a280f91e0a19888b8c575196e8b9930b6..4a710c39c58d82b2dc8e0040d90b2c0a17ba5ebb 100644 (file)
@@ -48,7 +48,7 @@ foo
 
        bar
 
-bar
+  bar
 
     foo
 \end{verbatim}