Confluence的R语法高亮功能

7
有没有办法在Confluence中获得R语法高亮显示?我尝试了常规配置>配置代码宏>添加新语言,但我不知道如何上传自定义的R brush语法。是否已有人完成了这项工作或者我是否可以获得R的语法高亮显示?

1
嗨,看起来这似乎是一个普遍的问题,请点击此链接查看答案:https://answers.atlassian.com/questions/56081/how-do-you-create-a-custom-syntax-highlighting-option-for-the-confluence-code-block-macro - ppasler
1个回答

8

如果想要添加语法高亮的“刷子”JavaScript文件,我发现以下过程非常有效。

首先从以下网址获得最新的Syntaxhighlighter: http://alexgorbatchev.com/SyntaxHighlighter/

例如:2016-05的版本是3.0.83

解压缩后创建一个使用它的index.html文件,如下:

<!DOCTYPE html>
<html lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<!-- Include required JS files -->
<script type="text/javascript" src="js/shCore.js"></script>

<!--
    At least one brush, here we choose JS. You need to include a brush for every 
    language you want to highlight
-->
<script type="text/javascript" src="css/shBrushRule.js"></script>

<!-- Include *at least* the core style and default theme -->
<link href="css/shCore.css" rel="stylesheet" type="text/css" />
<link href="css/shThemeDefault.css" rel="stylesheet" type="text/css" />
</head>
<body> 
<!-- You also need to add some content to highlight, but that is covered elsewhere. -->
<pre class="brush: R">
add your R code here
</pre>

<!-- Finally, to actually run the highlighter, you need to include this JS on your page -->
<script type="text/javascript">
     SyntaxHighlighter.all()
</script>
</body>
</html>

<pre></pre>

您可能想添加一些R代码。要创建一个R brush,您可能需要从css文件夹中的一些brushes开始:

shBrushAS3.js         shBrushDelphi.js      shBrushPerl.js        shBrushSass.js
shBrushAppleScript.js shBrushDiff.js        shBrushPhp.js         shBrushScala.js shBrushBash.js        shBrushErlang.js      shBrushPlain.js       shBrushSql.js
shBrushCSharp.js      shBrushGroovy.js      shBrushPowerShell.js  shBrushTcl.js
shBrushColdFusion.js  shBrushJScript.js     shBrushPython.js      shBrushVb.js
shBrushCpp.js         shBrushJava.js        shBrushRuby.js        shBrushXml.js
shBrushCss.js         shBrushJavaFX.js      shBrushRule.js

它只需要几行代码和正则表达式来设置关键字、注释、变量和其他规则。当你创建好了(shBrushR.js)文件(或在互联网上搜索,例如https://gist.github.com/yihui/1804862),并且对它感到满意后,您可以通过“常规配置”>“配置代码宏”>“添加新语言”将其上传到Confluence中(希望将生成的js文件添加到此答案中,以使其成为完整的解决方案-很抱歉我自己不懂R,所以无法提供太多帮助)。
请参见以下R brush(取自上面的链接)作为示例:
 /**
 *  Author: Yihui Xie
 *  URL: http://yihui.name/en/2010/09/syntaxhighlighter-brush-for-the-r-language
 *  License: GPL-2 | GPL-3
 */
SyntaxHighlighter.brushes.R = function()
{
    var keywords = 'if else repeat while function for in next break TRUE FALSE NULL Inf NaN NA NA_integer_ NA_real_ NA_complex_ NA_character_';
    var constants = 'LETTERS letters month.abb month.name pi';
    this.regexList = [
    { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' },
    { regex: SyntaxHighlighter.regexLib.singleQuotedString,     css: 'string' },
    { regex: SyntaxHighlighter.regexLib.doubleQuotedString,     css: 'string' },
    { regex: new RegExp(this.getKeywords(keywords), 'gm'),      css: 'keyword' },
    { regex: new RegExp(this.getKeywords(constants), 'gm'),     css: 'constants' },
    { regex: /[\w._]+[ \t]*(?=\()/gm,               css: 'functions' },
    ];
};
SyntaxHighlighter.brushes.R.prototype   = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.R.aliases = ['r', 's', 'splus'];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接