Code

l2l_scanner: Print "Abbildung|Listing" in bold font in figure captions.
[lm2latex.git] / src / l2l_scanner.l
index d769e914a8535b9271bc6438029dcd1719fcf9f5..cf7000c567cf1bdc2925b8a136fe2d53f89937fc 100644 (file)
@@ -236,6 +236,11 @@ ANY_COMMAND @(R|SW|D|T|V|A|L|ZT|LI|B|Bi|IT|IL|IE|KT|KL|KE|TT|TH|TL|TE):
                        l2l_sub = 1;
                }
        }
+
+       \[[0-9]+\] {
+               L2L_YY_APPEND_OR_ECHO(l2l_buf_ptr,
+                               "{\\bfseries\\textcolor{DarkBlue}{%s}}", yytext);
+       }
 }
 
 \<[uU]> {
@@ -252,6 +257,10 @@ ANY_COMMAND @(R|SW|D|T|V|A|L|ZT|LI|B|Bi|IT|IL|IE|KT|KL|KE|TT|TH|TL|TE):
        L2L_YY_APPEND_OR_ECHO(l2l_buf_ptr, "%s", yytext);
 }
 
+(Abbildung|Listing)({WHITESPACE}|\n)+[0-9]+ {
+       L2L_YY_APPEND_OR_ECHO(l2l_buf_ptr, "\\textcolor{DarkBlue}{%s}", yytext);
+}
+
        /*
         * header
         */
@@ -427,19 +436,40 @@ ANY_COMMAND @(R|SW|D|T|V|A|L|ZT|LI|B|Bi|IT|IL|IE|KT|KL|KE|TT|TH|TL|TE):
         * images/boxes
         */
 
-@(B|KT):{WHITESPACE}* {
+@(B|KT):{WHITESPACE}*((Abbildung|Listing)({WHITESPACE}|\n)+[0-9]+:)? {
+       _Bool is_image = 0;
+       _Bool is_box   = 0;
+
+       char *label    = NULL;
+
+       if (! strncmp(yytext, "@B:", 3))
+               is_image = 1;
+       else if (! strncmp(yytext, "@KT:", 4))
+               is_box = 1;
+
        if (l2l_scanner_state != L2L_FIGURE) {
-               fprintf(yyout, "\\begin{figure}\n");
+               if (is_box)
+                       fprintf(yyout, "\\begin{l2lbox}\n");
+               else
+                       fprintf(yyout, "\\begin{figure}\n");
                l2l_scanner_state = L2L_FIGURE;
        }
        else {
                l2l_scanner_state = L2L_BODY;
        }
 
+       label = strstr(yytext, "Abbildung");
+       if (! label)
+               label = strstr(yytext, "Listing");
+
+       if (label)
+               if (l2l_strbuf_append(&l2l_caption, "{\\bfseries %s}", label))
+                       YY_FATAL_ERROR("ERROR: internal error");
+
        l2l_buf_ptr = &l2l_caption;
-       if (! strncmp(yytext, "@B:", 3))
+       if (is_image)
                BEGIN(caption);
-       else if (! strncmp(yytext, "@KT:", 4))
+       else if (is_box)
                BEGIN(box_caption);
        else
                assert(0);
@@ -470,7 +500,7 @@ ANY_COMMAND @(R|SW|D|T|V|A|L|ZT|LI|B|Bi|IT|IL|IE|KT|KL|KE|TT|TH|TL|TE):
 
 @KL: {
        if (l2l_scanner_state != L2L_FIGURE) {
-               fprintf(yyout, "\\begin{figure}\n");
+               fprintf(yyout, "\\begin{l2lbox}\n");
                l2l_scanner_state = L2L_FIGURE;
        }
        else {
@@ -482,7 +512,7 @@ ANY_COMMAND @(R|SW|D|T|V|A|L|ZT|LI|B|Bi|IT|IL|IE|KT|KL|KE|TT|TH|TL|TE):
 }
 
 <box>@(KE|L):{WHITESPACE}* {
-       fprintf(yyout, "\\end{figure}");
+       fprintf(yyout, "\\end{l2lbox}");
        l2l_scanner_state = L2L_BODY;
        l2l_last_yystart = INITIAL;
        BEGIN(l2l_last_yystart);