我正在设置一个很好的环境来在打印文档中呈现我的代码.首先,我使用了用于Latex的lstlisting包,但后来我偶然发现了铸造.
铸造真的很棒,但有没有办法改变高光颜色?
由于minted使用了Pygments库,我认为Pygments是颜色的关键,但我还没有找到它.
任何人都可以解释它是如何完成的或发布一个链接,显示它是如何完成的?

我正在使用Sphinx来记录Web服务.我想使用代码块指令显示格式化的JSON Web响应,Spinx通过Pygments执行,但JSON在Pygments中没有语法高亮显示.您建议我指定哪种语言?HTML?JavaScript的?
.. code-block:: javascript
{
"name": "roger",
"score": 100
}
Run Code Online (Sandbox Code Playgroud) 这是我第一次使用Jekyll和Pygments.但我不知道如何插入彩色代码片段.
我按照官方步骤成功安装了Pygments,其标记如下:
{% highlight ruby %}
def foo
puts 'foo'
end
{% endhighlight %}
Run Code Online (Sandbox Code Playgroud)
我看到包含类的html源代码,但是这个代码片段没有颜色.
我是否需要从Pygments生成一些css文件并包含它们?如何?
我正在使用Sphinx代码文档并在代码中使用多种语言,我想为所有代码设置突出显示.Sphinx简要提到了它支持的一些语言(在本页),然后提到它使用Pygments进行词法分析和突出显示.通过Sphinx和Pygments的文档筛选,我不知道如何做突出显示objective-c代码.
Pygments来做确实提到的语言列表支持,在这里,但是这并没有告诉我,我必须使用内狮身人面像(.rst文件)告诉代码块,以突出特定语言的确切语法.例如,要突出显示c ++代码,只需在代码块之前使用它:
.. highlight:: c++
但是在尝试这些后我似乎无法突出显示Objective-C代码:
.. highlight:: Objective-C
.. highlight:: objective-c
.. highlight:: Obj-C
.. highlight:: obj-c
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供语言列表(你可以在文档中引用它们)吗?
我已经创建了一个我想要使用的自定义标签,但是Django似乎无法找到它.我的templatetags目录设置如下:
pygmentize.py
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from django import template
from pygments.formatters.other import NullFormatter
register = template.Library()
@register.tag(name='code')
def do_code(parser,token):
code = token.split_contents()[-1]
nodelist = parser.parse(('endcode',))
parser.delete_first_token()
return CodeNode(code,nodelist)
class CodeNode(template.Node):
def __init__(self,lang,code):
self.lang = lang
self.nodelist = code
def render(self,context):
code = self.nodelist.render(context)
lexer = get_lexer_by_name('python')
return highlight(code,lexer,NullFormatter())
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用此标记来呈现代码gameprofile.html.
gameprofile.html
(% load pygmentize %}
{% block content %}
<title>{% block title %} | {{ game.title }}{% endblock %}</title>
<div id="gamecodecontainer">
{% …Run Code Online (Sandbox Code Playgroud) 我想使用minted包给我语法高亮,但它的间距超过一厘米.
设置:
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
\setlength{\headsep}{0pt}
\setlength{\topskip}{0pt}
\setlength{\topmargin}{0pt}
\setlength{\topsep}{0pt}
\setlength{\partopsep}{0pt}
Run Code Online (Sandbox Code Playgroud)
根本没有帮助.有没有办法减少文本其余部分的间距?
有一堆教程浮动,但它们似乎不完整或不完全是最新的或不适合我.
这就是我所做的.
的Gemfile:
gem 'rouge'
gem 'redcarpet'
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个config/initializer/rouge.rb:
require 'rouge/plugins/redcarpet'
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个名为的文件 app/assets/stylesheets/rouge.css.erb
<%= Rouge::Themes::Github.render(:scope => '.highlight') %>
Run Code Online (Sandbox Code Playgroud)
然后在我的app/helpers/application_helper.rb,我添加了这个:
module ApplicationHelper
class HTML < Redcarpet::Render::HTML
include Rouge::Plugins::Redcarpet
def block_code(code, language)
Rouge.highlight(code, language || 'text', 'html')
end
end
def markdown(text)
render_options = {
filter_html: true,
hard_wrap: true,
link_attributes: { rel: 'nofollow' }
}
renderer = HTML.new(render_options)
extensions = {
autolink: true,
fenced_code_blocks: true,
lax_spacing: true,
no_intra_emphasis: true,
strikethrough: true,
superscript: true
}
Redcarpet::Markdown.new(renderer, extensions).render(text).html_safe
end
end
Run Code Online (Sandbox Code Playgroud)
然后在我show.html.erb …
syntax-highlighting ruby-on-rails pygments ruby-on-rails-5 rouge
考虑这个mcve:
import math
import sys
import textwrap
import time
from pathlib import Path
from collections import defaultdict
from PyQt5.Qsci import QsciLexerCustom, QsciScintilla
from PyQt5.Qt import *
from pygments import lexers, styles, highlight, formatters
from pygments.lexer import Error, RegexLexer, Text, _TokenType
from pygments.style import Style
EXTRA_STYLES = {
"monokai": {
"background": "#272822",
"caret": "#F8F8F0",
"foreground": "#F8F8F2",
"invisibles": "#F8F8F259",
"lineHighlight": "#3E3D32",
"selection": "#49483E",
"findHighlight": "#FFE792",
"findHighlightForeground": "#000000",
"selectionBorder": "#222218",
"activeGuide": "#9D550FB0",
"misspelling": "#F92672",
"bracketsForeground": "#F8F8F2A5",
"bracketsOptions": "underline",
"bracketContentsForeground": "#F8F8F2A5",
"bracketContentsOptions": "underline",
"tagsOptions": …Run Code Online (Sandbox Code Playgroud) 我使用Sphinx制作一个包含代码示例的网站.我成功使用该.. code-block指令获得语法高亮.但我无法使用此代码获取内联语法高亮:
.. role:: bash(code)
:language: bash
Test inline: :bash:`export FOO="bar"`.
.. code-block:: bash
export FOO="bar"
Run Code Online (Sandbox Code Playgroud)
产生此输出,即内嵌代码未突出显示,而块代码是:

对我来说问题是生成的内联代码HTML包含长类名,而不包含代码块.这是输出HTML(为了便于阅读而缩进):
<p>Test inline:
<tt class="code bash docutils literal">
<span class="name builtin">
<span class="pre">export</span>
</span>
<span class="name variable">
<span class="pre">FOO</span>
</span>
<span class="operator">
<span class="pre">=</span>
</span>
<span class="literal string double">
<span class="pre">"bar"</span>
</span>
</tt>.
</p>
<p>Test code-block:</p>
<div class="highlight-bash">
<div class="highlight">
<pre>
<span class="nb">export </span>
<span class="nv">FOO</span>
<span class="o">=</span>
<span class="s2">"bar"</span>
</pre>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感谢.
css restructuredtext syntax-highlighting pygments python-sphinx
在以下c ++文本上运行pygments默认lexer :,class foo{};结果如下:
(Token.Keyword, 'class')
(Token.Text, ' ')
(Token.Name.Class, 'foo')
(Token.Punctuation, '{')
(Token.Punctuation, '}')
(Token.Punctuation, ';')
Run Code Online (Sandbox Code Playgroud)
请注意,toke foo具有类型Token.Name.Class.
如果我将类名更改为foobar我希望能够仅在触摸的标记上运行默认词法分析器,在这种情况下是原始标记foo和{.
问:如何保存词法分析器状态,以便标记化foobar{将为类型提供令牌Token.Name.Class?
具有此功能将优化语法突出显示,例如,在文件中间正在进行更改(用户正在键入文本)的大型源文件.似乎没有记录的方法这样做,也没有关于如何使用默认pygments词法分析器的信息.
是否有任何其他语法突出显示系统支持此行为?
编辑:
关于性能,这里有一个例子:http://tpcg.io/ESYjiF
pygments ×10
python ×3
css ×2
latex ×2
django ×1
jekyll ×1
pyqt5 ×1
python-3.x ×1
qscintilla ×1
rouge ×1
scintilla ×1
spacing ×1
templatetags ×1