2016-11-06 112 views
1

我已经编写了几个与reveal.js演示文稿在同一个存储库中的C++程序。我想要做的只是将C++源文件包含到我的文档中。如何将逐字源代码包含到html文档中

首先,我发现了一个伟大的方式来包括一个文件到使用以下功能的HTML文件(感谢计算器):

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
$(function(){ 
    $("#awesomecpp").load("../src/awesome.cpp"); 
}); 
</script> 

然后我把它给我的reveal.js介绍是这样的:

<pre><code data-trim> 
<div id="awesomecpp"></div> 
</code></pre> 

然而,这是没有布埃诺,因为我结束了<div id="awesomecpp>在源代码的顶部,加上源代码片断结束了一堆其他垃圾标签。我非常不喜欢复制和粘贴代码,因为我发现我经常对代码进行更改,并且可能不会更改表示代码。此外,我发现如果有任何特殊字符如'&',坏事情也会发生。有没有人有任何建议使用的JavaScript库,可以处理我想要做的正确?我只是想将代码格式化的文件逐字地加入到我的reveal.js演示文稿中。那是过分的要求?

+0

通过javascript嵌入C++是不可能的 –

+0

没有试图“嵌入”它,只是想显示实际的c + +逐字(或任何语言)。 – user985030

回答

3

尝试这样:

$.ajax({ 
    url : "../src/awesome.cpp", 
    dataType: "text", 
    success : function (data) { 
    $("#awesomecpp").text(data); 
    } 
}); 
+2

最好设置'text'属性可能与html不同,因为html可能会导致字符(如< and >)被解释为HTML标签导致问题 – Brian

2

的问题是,reveal.js使用highlight.js的语法高亮和将要使用code标记的内容(div在这种情况下) 。

您很可能需要将ID放在code标记上。

<pre><code data-trim id="awesomecpp"> 
</code></pre> 

您可能还需要防止初始化语法高亮显示当它的reveal.js并手动将AJAX加载后运行。

+0

这几乎可以工作,但它仍然会处理“<>”,因为它不是很好的标签。在我的C++代码中,我有很多模板参数,一旦呈现给html,就会产生很多混乱。 – user985030

相关问题