2016-11-06 52 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

相關問題