查看“扩展MW:SyntaxHighlight”的源代码
←
扩展MW:SyntaxHighlight
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:MediaWiki]] == 说明 == [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight SyntaxHighlight],原名SyntaxHighlight_GeSHi,提供了丰富的格式的源代码使用<code><nowiki><syntaxhighlight></nowiki></code>标签。它由<code>Pygments</code>库提供支持,并支持数百种不同的编程语言和文件格式。与<code><nowiki><pre></nowiki></code>和标记一样,文本的显示方式与键入时完全相同,并保留所有空白。<br/> 启用SyntaxHighlight: <pre>wfLoadExtension( 'SyntaxHighlight_GeSHi' );</pre> 安装后,您可以在Wiki页面上使用<code><nowiki><syntaxhighlight></nowiki></code>标签,如: <pre> <syntaxhighlight lang="python" line='line'> def quick_sort(arr): less = [] pivot_list = [] more = [] if len(arr) <= 1: return arr else: pass </syntaxhighlight> </pre> 效果: <syntaxhighlight lang="python" line='line'> def quick_sort(arr): less = [] pivot_list = [] more = [] if len(arr) <= 1: return arr else: pass </syntaxhighlight> == 安装 == '''SyntaxHighlight'''需要用到'''pygments'''库,而'''pygments'''是用'''Python'''编写的语法高亮引擎,需要'''Python'''的支持<ref name="SyntaxHighlight#Installation">[https://www.mediawiki.org/wiki/Extension:SyntaxHighlight/zh#%E5%AE%89%E8%A3%85 Extension:SyntaxHighlight#Installation]</ref><ref>[https://pygments.org/faq/ What are the system requirements?]</ref>。 所以,SyntaxHighlight 的安装配置需要: # (已集成 [https://github.com/wikimedia/mediawiki-extensions-SyntaxHighlight_GeSHi/tree/REL1_35 SyntaxHighlight_GeSHi] 到 MediaWiki 项目,不需要单独下载) # '''安装 Python 到服务器''',MediaWiki 1.31 之后需要 Python3。 # '''确认服务器的站点用户(如:www)对支持组件(Python 路径和 pygments 文件)有读取、执行权限'''。 == 参数 == {| class="wikitable" style="width="50%" text-align:center;" ! 参数 !! 说明 |- | lang | 该属性定义应使用的词法分析器 |- | line | 使用该line属性启用行号 |- | start | 定义了代码块的开始行号(与<code>line</code>结合使用) |- | highlight | 设定一个或多个行为高亮,使用“,”或“-”指定行号(如<code>highlight="1,5-7"</code>)。该行号为自然行号,而非以<code>start</code>设定的行号 |- | inline | 该属性指示源代内容是段落的一部分,而非像<code><nowiki><pre></nowiki></code>标签一样自成一块 |- | class | 当<code>inline</code>使用时,<code>class="nowrap"</code>(在支持它的那些Wiki上;不在MediaWiki本身上)指定在代码块内的空格处不应出现换行符。 |- | style | 该属性允许直接包含CSS属性。与在<div>(不是<span>)标签中使用一样。 |} == [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight#Supported_languages 支持语言] == * 支持“'''properties'''”(配置文件)【2020/10/07 22:17:38】 {| class="wikitable" style="width="100%";" |- ! 编程语言 |- | * ActionScript, Ada, Agda (incl. literate), Alloy, AMPL, ANTLR, APL, AppleScript, Assembly (various), Asymptote, Augeas, AutoIt, Awk * BBC Basic, Befunge, BlitzBasic, Boa, Boo, Boogie, BrainFuck * C, C++ (incl. dialects like Arduino), C#, Chapel, Charm++ CI, Cirru, Clay, Clean, Clojure, CoffeeScript, ColdFusion, Common Lisp, Component Pascal, Coq, Croc (MiniD), Cryptol (incl. Literate Cryptol), Crystal, Cypher, Cython * D, Dart, DCPU-16, Delphi, Dylan (incl. console) * Eiffel, Elm, Emacs Lisp, Email, Erlang (incl. shell sessions), Ezhil * Factor, Fancy, Fantom, Fennel, FloScript, Fortran, FreeFEM++, F# * GAP, Gherkin (Cucumber), GLSL shaders, Golo, Gosu, Groovy * Haskell (incl. Literate Haskell), HLSL, HSpec, Hy * IDL, Idris (incl. Literate Idris), Igor Pro, Io * Jags, Java, JavaScript, Jasmin, Jcl, Julia * Kotlin * Lasso (incl. templating), Limbo, LiveScript, Logtalk, Logos, Lua * Mathematica, Matlab, Modelica, Modula-2, Monkey, Monte, MoonScript, Mosel, MuPad * NASM, Nemerle, NesC, NewLISP, Nimrod, Nit, Notmuch, NuSMV * Objective-C, Objective-J, Octave, OCaml, Opa, OpenCOBOL * ParaSail, Pawn, PHP, Perl 5, Pike, Pony, PovRay, PostScript, PowerShell, Praat, Prolog, Python (incl. console sessions and tracebacks) * QBasic * Racket, Raku a.k.a. Perl 6, REBOL, Red, Redcode, Rexx, Ride, Ruby (incl. irb sessions)Rust * S, S-Plus, R, Scala, Scdoc, Scheme, Scilab, SGF, Shell scripts (Bash, Tcsh, Fish), Shen, Silver, Slash, Slurm, Smalltalk, SNOBOL, Snowball, Solidity, SourcePawn, Stan, Standard ML, Stata, Swift, Swig, SuperCollider * Tcl, Tera Term language, TypeScript, TypoScript * USD, Unicon, Urbiscript * Vala, VBScript, Verilog, SystemVerilog, VHDL, Visual Basic.NET, Visual FoxPro * Whiley * Xtend, XQuery * Zeek, Zephir, Zig |- ! 模板语言 |- | * Angular templates * Cheetah templates, ColdFusion * Django / Jinja templates * ERB (Ruby templating), Evoque * Genshi (the Trac template language) * Handlebars * JSP (Java Server Pages) * Liquid * Myghty (the HTML::Mason based framework), Mako (the Myghty successor) * Slim, Smarty templates (PHP templating) * Tea, Twig |- ! 标记语言 |- | * Apache config files, Apache Pig * BBCode * CapDL, Cap'n Proto, CMake, Csound scores, CSS * Debian control files, Diff files, Dockerfiles, DTD * EBNF, E-mail headers, Extempore * Flatline * Gettext catalogs, Gnuplot script, Groff markup * Hexdumps, HTML, HTTP sessions * IDL, Inform, INI-style config files, IRC logs (irssi style), Isabelle * JSGF notation, JSON,JSON-LD * Lean theorem prover, Lighttpd config files, Linux kernel log (dmesg), LLVM assembly, LSL scripts * Makefiles, MoinMoin/Trac Wiki markup, MQL, MySQL * NCAR command language, Nginx config files, Nix language, NSIS scripts, Notmuch * POV-Ray scenes, Puppet * QML * Ragel, Redcode, ReST, Roboconf, Robot Framework, RPM spec files, Rql, RSL * Scdoc, SPARQL, SQL,also MySQL,SQLite, Squid configuration * TADS 3, Terraform, TeX, Thrift, TOML, Treetop grammars * USD (Universal Scene Description) * Varnish configs, VGLVim Script * WDiffWindows batch files * XML, XSLT * YAML * Windows Registry files |} == 错误 == === 存在语法高亮错误的页面 === [[File:存在语法高亮错误的页面.png|right|400px]] 页面被添加到追踪分类“存在语法高亮错误的页面”(可在“特殊页面”-“追踪分类”中的“存在语法高亮错误的页面”查看统计信息),可能的原因为: # <code><nowiki><syntaxhighlight></nowiki></code>标签中没有<code><nowiki>lang</nowiki></code>属性; # <code><nowiki><syntaxhighlight></nowiki></code>标签中的<code><nowiki>lang</nowiki></code>设置了不支持的语言; # 扩展syntaxhighlight的运行环境错误,不能正常运行(如:缺失Pygments库或python) === 使用废弃标签的页面 === [[File:使用废弃标签的页面.png|right|400px]] 页面被添加到追踪分类“使用废弃标签的页面”(可在“特殊页面”-“追踪分类”中的“使用已弃用source标签的页面”查看统计信息),可能的原因为: # 使用了已废弃的<code><nowiki><source></nowiki></code>标签,而非<code><nowiki><syntaxhighlight></nowiki></code>标签。 == FAQ == === 关于SyntaxHighlight的安装 === 安装MediaWiki并在配置文件LocalSettings.php中加载SyntaxHighlight,此时使用<code><nowiki><SyntaxHighlight></nowiki></code>的标签会出现“存在语法高亮错误的页面”的问题,因为没有Python支持。<br/> 而网上并没有详细的配置系列可供参考,只有MediaWiki的Extension:SyntaxHighlight页面有粗略的说明<ref name="SyntaxHighlight#Installation">Extension:SyntaxHighlight#Installation https://www.mediawiki.org/wiki/Extension:SyntaxHighlight/zh#%E5%AE%89%E8%A3%85</ref>: <pre> The version of this extension bundled with MediaWiki 1.31 requires Python version 3 (python3) to be installed on the server. ... Note that the python3 binary must be installed in the execution PATH of the PHP interpreter. </pre> '''''所以需要安装Python3到服务器,并确保站点用户(如www)对Python文件夹有读取、执行权限。'''''<br/> * [显示MediaWiki错误],可以看到详细的错误信息。 ==== 安装Python ==== <pre> Notice: Failed to invoke Pygments: /usr/bin/env: python3: No such file or directory [Called from SyntaxHighlight::highlight in /www/wwwroot/wiki.eijux.com/extensions/SyntaxHighlight_GeSHi/includes/SyntaxHighlight.php at line 356] in /www/wwwroot/wiki.eijux.com/includes/debug/MWDebug.php on line 430 </pre> * (其中“/usr/bin/env: python3”,参见“/www/wwwroot/wiki.eijux.com/extensions/SyntaxHighlight_GeSHi/pygments”中'''pygmentize'''的'''shebang''':“'''<code>#!/usr/bin/env python3</code>'''”,该'''shebang'''指定从PATH环境变量中来查找python3解释器来执行该脚本) 即:在系统环境中'''找不到''' '''python3'''来执行'''pygmentize'''内容。<br/> 步骤: # 安装Python3到服务器,可以采用的方式: ## 安装Python3,需防止和宝塔Python2.7冲突(服务器暂时没有测试和开发需求,单独安装调试不太必要。之后在本地开发环境再搞吧) ##* 执行 “<code>python -V</code>”(或“<code>python --version</code>”)可以看到已安装的python版本为Python 2.7.5,而非Python3 ## 使用BTPanel软件商店的“Python项目管理器”(方便统一管理BTPanel内的环境): ##* pythonmamager安装在“/www/server/panel/plugin/pythonmamager” ##* pythonmamager内安装的Python位于“/root/.pyenv/versions”(.pyenv为隐藏文件夹) # 创建Python3的软连接到<nowiki>/usr/bin</nowiki>中: #: <code>ln -s /root/.pyenv/versions/3.6.11/bin/python3.6 /usr/bin/python3</code> ==== 设置权限 ==== <pre> Notice: Failed to invoke Pygments: /usr/bin/env: python3: Permission denied [Called from SyntaxHighlight::highlight in /www/wwwroot/wiki.eijux.com/extensions/SyntaxHighlight_GeSHi/includes/SyntaxHighlight.php at line 356] in /www/wwwroot/wiki.eijux.com/includes/debug/MWDebug.php on line 430 </pre> '''即:'''(当前用户,如BTPanel的www)'''没有权限'''使用系统中的'''python3'''来执行'''pygmentize'''。(www用户不能读写、执行root下“/root/.pyenv/versions/3.6.11/bin”的内容)<br/> 步骤: # 为“/root/.pyenv/versions/3.6.11/bin/python3.6”路径中的所有文件夹,都添加其他用户的'''读取'''、'''执行'''权限: #: (包括root、.pyenv、versions、3.6.11、bin文件夹,以及可执行文件python3.6,但并非全部子文件夹) # 为pygmentize二进制文件设置执行权限 #: <code>chmod a+x /www/wwwroot/wiki.eijux.com/extensions/SyntaxHighlight_GeSHi/pygments/pygmentize</code> <br/> 经验证(已验证各步骤有效、可重现),以上设置可以完成syntaxhighlight插件的配置,当前使用良好。【2020/09/14 01:46:30】 == 参考 ==
返回至“
扩展MW:SyntaxHighlight
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息