要將程式碼貼到 PowerPoint 上, 又想要有語法標示的效果, 有很簡單的方法,如果是使用 Visual Studio, 可以直接從程式編輯器複製程式碼, 然後以『保持來源格式』的方法貼到 PowerPoint 上。如果沒有安裝 Visual Studio, 也可以使用 Notepad++這個程式碼編輯器,預設安裝有 NppExport 外掛,可以使用『外掛模組/NppExport/Copy RTF To Clipboard』功能表指令將編輯中的程式碼以 RTF 格式複製到剪貼簿上, 就可以貼到 PowerPoint 了。
不過上述方式貼到 PowerPoint 的程式碼, 雖然可以正確保留語法標示的顏色, 可是每個單字都會加上白色螢光筆的強調效果, 如果你的投影片背景不是白色, 就會造成像是以下的狀況:
這些白色的底就是螢光筆效果造成的, 可是遺憾的是在 PowerPoint 中, 並沒有操控螢光筆效果的工具, 因此無法直接移除螢光筆效果。要解決這個問題, 有兩種作法, 一種是先將程式碼貼到 Word 中, 利用 Word 的螢光筆工具先將螢光筆顏色改為『無色彩』:
之後在重新複製到剪貼簿上, 回到 PowerPoint 貼上即可。另一種作法則是在 PowerPoint 安裝善心人士開發的 Lightsaber 增益集, 即可在 PowerPoint 中新增螢光筆工具, 直接選取剛剛貼上的程式碼, 再取消附加在上面的螢光筆效果即可:
取消螢光筆效果後, 在 PowerPoint 中看到的就是正常的文字了:
highlight.js
星期日, 12月 27, 2015
星期一, 2月 18, 2013
InDesign 的印刷體引號 (typographer’s quotes)
今天同事反應用 InDesign 匯入我給的 Word 檔文稿後, 幾乎所有的半形引號 (就是 ' 與 ") 都自動變成全形的配對引號 (就是 ‘ 與 ’, 以及 “ 與 ”), 查了一下 google, 根據
Get Smart with Smart Quotes 這篇文章, 原來 InDesign 在置入 Word 檔時有個選項是「使用印刷體引號」, 會「很聰明」的自動把引號都轉成配對的引號, 只要在匯入 Word 檔時, 勾選「顯示選項」, 並在「匯入選項」的交談窗中不要勾選「使用印刷體引號」就可以了!
Get Smart with Smart Quotes 這篇文章, 原來 InDesign 在置入 Word 檔時有個選項是「使用印刷體引號」, 會「很聰明」的自動把引號都轉成配對的引號, 只要在匯入 Word 檔時, 勾選「顯示選項」, 並在「匯入選項」的交談窗中不要勾選「使用印刷體引號」就可以了!
補充一下, 這個功能就跟 Word 中的「智慧引號 (smart quotes)」一樣討厭, Word 預設在「自動校正」的交談窗中, 會在「輸入時自動套用格式」的頁次中勾選「將一般引號取代為智慧引號」, 也會再你輸入時即時自動轉換引號, 每次我安裝 Office 軟體後, 第一次使用 Word 時最先做的事情就是把這個選項取消, 避免看到討厭的配對引號。
星期四, 2月 19, 2009
取出WORD文件中所有文字框的文字
我的工作因為要整理作者提供的稿件,因此一直有個需求就是把WORD文件中所有文字框(有加上文字的快取圖形、水平或是垂直的文字框)中的文字取出來,這樣我就不需要一個一個文字框作Copy貼的動作,今天剛好找到了一個合用的範例如下:
只要把MsgBox那行換成你需要的動作,就可以將取出的文字再利用了,我自己是把所有文字匯集到一個跟WORD文件同名,但加上 "_shape" 字尾的文字檔:
延伸閱讀:
Dim sh As Shape
Dim txt As String
For Each sh In ActiveDocument.Shapes
If sh.TextFrame.HasText Then
txt = sh.TextFrame.TextRange.Text
MsgBox (txt)
End If
Next sh
只要把MsgBox那行換成你需要的動作,就可以將取出的文字再利用了,我自己是把所有文字匯集到一個跟WORD文件同名,但加上 "_shape" 字尾的文字檔:
Sub 匯出文字框的文字()
'
fname = ActiveDocument.FullName 'Word檔名
txtFname = Left(fname, Len(fname) - 4) & _
"_shapes.txt" 'txt檔名
Set fs = CreateObject("Scripting.FileSystemObject")
Set txtfile = fs.CreateTextFile(txtFname, True) '建立文字檔
Dim sh As Shape
Dim txt As String
For Each sh In ActiveDocument.Shapes
If sh.TextFrame.HasText Then
txt = sh.TextFrame.TextRange.Text
txtfile.writeline txt
End If
Next sh
txtfile.Close
End Sub
延伸閱讀:
訂閱:
意見 (Atom)



