Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用docutils和pygments控制短/长标记名?_Python_Pygments_Docutils - Fatal编程技术网

Python 如何使用docutils和pygments控制短/长标记名?

Python 如何使用docutils和pygments控制短/长标记名?,python,pygments,docutils,Python,Pygments,Docutils,我有两个python代码,一个使用docutils,另一个使用pygments。这两个代码都处理java源文件以突出显示源代码。pygments直接读取java源文件,docutils读取包含java代码段的代码块指令的RST文件 问题是pygments使用短标记名,而docutils使用长标记名。我不知道如何告诉其中一个使用short/long,以便让这两个工具使用相同的语法 我构建了以下最小示例: from pygments import highlight from pygments.le

我有两个python代码,一个使用docutils,另一个使用pygments。这两个代码都处理java源文件以突出显示源代码。pygments直接读取java源文件,docutils读取包含java代码段的代码块指令的RST文件

问题是pygments使用短标记名,而docutils使用长标记名。我不知道如何告诉其中一个使用short/long,以便让这两个工具使用相同的语法

我构建了以下最小示例:

from pygments import highlight
from pygments.lexers import JavaLexer
from pygments.formatters import HtmlFormatter

# Here we read directly java with the Java Lexer
formatter = HtmlFormatter()
source1 = highlight("if (o.equals(\"test\") ;", JavaLexer(), formatter)
print source1

from docutils.core import publish_parts

# Here we read a RST file containing a code-block directive that includes java
extra_settings = {'initial_header_level': 4, 'doctitle_xform' : 0}
source2 = publish_parts(".. code-block:: java\n\n    if (o.equals(\"test\") ;", writer_name='html',settings_overrides=extra_settings)['html_body']
print source2
这将产生以下输出:

<div class="highlight"><pre><span class="k">if</span> <span class="o">(</span><span class="n">o</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="s">&quot;test&quot;</span><span class="o">)</span> <span class="o">;</span>
</pre></div>

<div class="document">
<pre class="code java literal-block">
<span class="keyword">if</span> <span class="operator">(</span><span class="name">o</span><span class="operator">.</span><span class="name attribute">equals</span><span class="operator">(</span><span class="literal string">&quot;test&quot;</span><span class="operator">)</span> <span class="operator">;</span>
</pre>
</div>
if(o.equals(“测试”);
如果(o)等于(“试验”);
它显示对于“if”,pygments使用标记“class='k'”,而docutils使用标记“class='keyword'”


如何更改其中一个以获得相同的标记名?

请尝试在额外设置中添加“语法突出显示”选项


这非常有帮助,文档文档严重缺乏
extra_settings = {
    'initial_header_level': 4,
    'doctitle_xform' : 0,
    'syntax_highlight': 'short'  # Possible values: 'long', 'short', 'none'
 }