Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Weird highlighting of Matlab lexer #1490

Closed
duskmoon314 opened this issue Jun 30, 2020 · 7 comments
Closed

Weird highlighting of Matlab lexer #1490

duskmoon314 opened this issue Jun 30, 2020 · 7 comments

Comments

@duskmoon314
Copy link

I'm using minted to highlight my code. I got a very weird highlighting, and it is different from the demo page. Please forgive me if I ignore any issue related to this problem.

I use pygmentize -f html -O full -O style=rainbow_dash -l Matlab -o test.html exp2_7.m and get the following html file:

image

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<!--
generated by Pygments <https://pygments.org/>
Copyright 2006-2019 by the Pygments team.
Licensed under the BSD license, see LICENSE for details.
-->
<html>
<head>
  <title></title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <style type="text/css">
/*
generated by Pygments <https://pygments.org/>
Copyright 2006-2019 by the Pygments team.
Licensed under the BSD license, see LICENSE for details.
*/
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body  { background: #ffffff; color: #4d4d4d }
body .c { color: #0080ff; font-style: italic } /* Comment */
body .err { color: #ffffff; background-color: #cc0000 } /* Error */
body .k { color: #2c5dcd; font-weight: bold } /* Keyword */
body .o { color: #2c5dcd } /* Operator */
body .ch { color: #0080ff; font-style: italic } /* Comment.Hashbang */
body .cm { color: #0080ff; font-style: italic } /* Comment.Multiline */
body .cp { color: #0080ff } /* Comment.Preproc */
body .cpf { color: #0080ff; font-style: italic } /* Comment.PreprocFile */
body .c1 { color: #0080ff; font-style: italic } /* Comment.Single */
body .cs { color: #0080ff; font-weight: bold; font-style: italic } /* Comment.Special */
body .gd { background-color: #ffcccc; border: 1px solid #c5060b } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #ff0000 } /* Generic.Error */
body .gh { color: #2c5dcd; font-weight: bold } /* Generic.Heading */
body .gi { background-color: #ccffcc; border: 1px solid #00cc00 } /* Generic.Inserted */
body .go { color: #aaaaaa } /* Generic.Output */
body .gp { color: #2c5dcd; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #2c5dcd; font-weight: bold } /* Generic.Subheading */
body .gt { color: #c5060b } /* Generic.Traceback */
body .kc { color: #2c5dcd; font-weight: bold } /* Keyword.Constant */
body .kd { color: #2c5dcd; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #2c5dcd; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #2c5dcd } /* Keyword.Pseudo */
body .kr { color: #2c5dcd; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #5918bb; font-weight: bold } /* Keyword.Type */
body .m { color: #5918bb; font-weight: bold } /* Literal.Number */
body .s { color: #00cc66 } /* Literal.String */
body .na { color: #2c5dcd; font-style: italic } /* Name.Attribute */
body .nb { color: #5918bb; font-weight: bold } /* Name.Builtin */
body .nc { text-decoration: underline } /* Name.Class */
body .no { color: #318495 } /* Name.Constant */
body .nd { color: #ff8000; font-weight: bold } /* Name.Decorator */
body .ni { color: #5918bb; font-weight: bold } /* Name.Entity */
body .ne { color: #5918bb; font-weight: bold } /* Name.Exception */
body .nf { color: #ff8000; font-weight: bold } /* Name.Function */
body .nt { color: #2c5dcd; font-weight: bold } /* Name.Tag */
body .ow { color: #2c5dcd; font-weight: bold } /* Operator.Word */
body .w { color: #cbcbcb } /* Text.Whitespace */
body .mb { color: #5918bb; font-weight: bold } /* Literal.Number.Bin */
body .mf { color: #5918bb; font-weight: bold } /* Literal.Number.Float */
body .mh { color: #5918bb; font-weight: bold } /* Literal.Number.Hex */
body .mi { color: #5918bb; font-weight: bold } /* Literal.Number.Integer */
body .mo { color: #5918bb; font-weight: bold } /* Literal.Number.Oct */
body .sa { color: #00cc66 } /* Literal.String.Affix */
body .sb { color: #00cc66 } /* Literal.String.Backtick */
body .sc { color: #00cc66 } /* Literal.String.Char */
body .dl { color: #00cc66 } /* Literal.String.Delimiter */
body .sd { color: #00cc66; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #00cc66 } /* Literal.String.Double */
body .se { color: #c5060b; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #00cc66 } /* Literal.String.Heredoc */
body .si { color: #00cc66 } /* Literal.String.Interpol */
body .sx { color: #318495 } /* Literal.String.Other */
body .sr { color: #00cc66 } /* Literal.String.Regex */
body .s1 { color: #00cc66 } /* Literal.String.Single */
body .ss { color: #c5060b; font-weight: bold } /* Literal.String.Symbol */
body .bp { color: #5918bb; font-weight: bold } /* Name.Builtin.Pseudo */
body .fm { color: #ff8000; font-weight: bold } /* Name.Function.Magic */
body .il { color: #5918bb; font-weight: bold } /* Literal.Number.Integer.Long */

  </style>
</head>
<body>
<h2></h2>

<div class="highlight"><pre><span></span><span class="k">function</span><span class="w"> </span>output <span class="p">=</span><span class="w"> </span><span class="nf">zigzag</span><span class="p">(</span>input<span class="p">)</span><span class="w"></span>
<span class="w">    </span><span class="p">[</span><span class="n">r</span><span class="p">,</span> <span class="n">c</span><span class="p">]</span> <span class="p">=</span> <span class="nb">size</span><span class="p">(</span><span class="n">input</span><span class="p">);</span>
    <span class="n">output</span> <span class="p">=</span> <span class="nb">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">r</span> <span class="o">*</span> <span class="n">c</span><span class="p">);</span>
    <span class="nb">i</span> <span class="p">=</span> <span class="mi">1</span><span class="p">;</span>
    <span class="nb">j</span> <span class="p">=</span> <span class="mi">1</span><span class="p">;</span>
    <span class="n">cnt</span> <span class="p">=</span> <span class="mi">1</span><span class="p">;</span>
    
    <span class="k">while</span> <span class="p">((</span><span class="nb">i</span> <span class="o">&lt;=</span> <span class="n">r</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nb">j</span> <span class="o">&lt;=</span> <span class="n">c</span><span class="p">))</span>
        <span class="n">output</span><span class="p">(</span><span class="n">cnt</span><span class="p">)</span> <span class="p">=</span> <span class="n">input</span><span class="p">(</span><span class="nb">i</span><span class="p">,</span> <span class="nb">j</span><span class="p">);</span>
        <span class="n">cnt</span> <span class="p">=</span> <span class="n">cnt</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
        <span class="k">if</span> <span class="p">(</span><span class="nb">mod</span><span class="p">(</span><span class="nb">i</span> <span class="o">+</span> <span class="nb">j</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="c">% odd =&gt; down</span>
            <span class="k">if</span> <span class="p">(</span><span class="nb">i</span> <span class="o">==</span> <span class="n">r</span><span class="p">)</span>
                <span class="nb">j</span> <span class="p">=</span> <span class="nb">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
            <span class="k">elseif</span> <span class="p">(</span><span class="nb">j</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
                <span class="nb">i</span> <span class="p">=</span> <span class="nb">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
            <span class="n">else</span>
                <span class="s">i</span> <span class="s">=</span> <span class="s">i</span> <span class="s">+</span> <span class="s">1</span><span class="p">;</span>
                <span class="nb">j</span> <span class="p">=</span> <span class="nb">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
            <span class="n">end</span>
        <span class="s">else</span> <span class="s">%</span> <span class="s">even</span> <span class="s">=&gt;</span> <span class="s">up</span>
            <span class="k">if</span> <span class="p">(</span><span class="nb">j</span> <span class="o">==</span> <span class="n">c</span><span class="p">)</span>
                <span class="nb">i</span> <span class="p">=</span> <span class="nb">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
            <span class="k">elseif</span> <span class="p">(</span><span class="nb">i</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
                <span class="nb">j</span> <span class="p">=</span> <span class="nb">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
            <span class="n">else</span>
                <span class="s">i</span> <span class="s">=</span> <span class="s">i</span> <span class="s">-</span> <span class="s">1</span><span class="p">;</span>
                <span class="nb">j</span> <span class="p">=</span> <span class="nb">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
            <span class="n">end</span>
        <span class="s">end</span>
    <span class="n">end</span>
<span class="s">end</span>
</pre></div>
</body>
</html>

I think some lines are mistakenly recognized as Literal.String. And the demo page give this

image

@birkenfeld
Copy link
Member

If you post the code as text, together with a minimal LaTeX snippet using minted, I can try to reproduce here. But I suspect it's not a Pygments problem, since the demo output looks ok.

@duskmoon314
Copy link
Author

@birkenfeld Thanks for your response.

I use pygment in terminal and get that html file which performs just like in my LaTeX file. exp2_7.m is my source code.

I suspect my local version is wrong, but it is 2.6.1.

> pygmentize -V
Pygments version 2.6.1, (c) 2006-2019 by Georg Brandl.

Here is how I use minted in LaTeX:

\documentclass[10pt, a4paper]{article}
\usepackage[left=3.17cm, right=3.17cm, top=2.54cm, bottom=2.54cm]{geometry}
\usepackage[UTF8]{ctex}
\setmonofont[]{Fira Code}
\usepackage{minted}
\usemintedstyle{rainbow_dash}

\begin{document}
\definecolor{bg}{rgb}{0.95,0.95,0.95}

\begin{minted}[bgcolor=bg]{Matlab}
function output = zigzag(input)
    [r, c] = size(input);
    output = zeros(1, r * c);
    i = 1;
    j = 1;
    cnt = 1;
    
    while ((i <= r) && (j <= c))
        output(cnt) = input(i, j);
        cnt = cnt + 1;
        if (mod(i + j, 2)) % odd => down
            if (i == r)
                j = j + 1;
            elseif (j == 1)
                i = i + 1;
            else
                i = i + 1;
                j = j - 1;
            end
        else % even => up
            if (j == c)
                i = i + 1;
            elseif (i == 1)
                j = j + 1;
            else
                i = i - 1;
                j = j + 1;
            end
        end
    end
end
\end{minted}

\end{document}

@birkenfeld
Copy link
Member

OK, I can reproduce with 2.6.1. This seems to have been introduced recently.

@Anteru
Copy link
Collaborator

Anteru commented Jul 4, 2020

There were quite a few changes recently to Matlab around property handling, I suspect one of them might have been the cause :( The MRs should be all in the changelog already.

@crisluengo
Copy link

I think this is the same as #1706.

@crisluengo
Copy link

This one seems to already have been fixed in master.

@Anteru
Copy link
Collaborator

Anteru commented Feb 13, 2021

Thanks for checking!

@Anteru Anteru closed this as completed Feb 13, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants