這是極簡化的排版軟體,功能是將具有特定格式的 txt 檔轉為網頁檔。
這程式參考 Tex 的概念,支援純 html 語法,以及 Markdown 的粗體、斜體、粗斜體、刪除線。
基本概念
txt檔的語法只有這幾個概念。
用簡單的代號與一到三個 tag 來表示文章的結構, 以 # 開頭,以 | 區隔 tag。
除了 #anchor、#lnk,其他代號有開頭就結束,類似html的概念。
每個檔案的第一行是 #chaper,最後一行是 #endchapter
一個指令是一行,指令與指令之間要空一行,指令與文字內容之間要空一行。
目前全部的指令如下
#chapter ~ #endchapter: 檔案(章節)的開始與結束,相當於html 的 <h1>
#sec ~ #endsec:檔案裡的段落,會自動將第一個 tag 作成超鏈結 hyperlink 放到所有 #sec 之前,相當於 <h2>。
#subsec ~ #endsubsec : 比較大的段落裡的子段落,除了隸屬於 #sec,其餘皆與 #sec 相同,相當於 <h3>。
#anchor: 超鏈結錨點,會自動蒐集所有錨點,製作成 topics.html
#lnk: 超鏈結,一個超鏈結是一行,
第一個 tag 是目標種類:
f : 檔案,如果有第四個
i : 圖片,第三個 tag 可以省略
w : 網際網路裡的網頁
第二個 tag 是 要顯示的文字
第三個 tag 是 url
如果有第四個 tag,第四個 tag 是要鏈結的的段落,相當於 html <a href 裡的 #
#cmt ~ #endcmt: 僅供文章作者使用的註釋,也就是各種程式語言的 comment,轉成 html 時,這個指令所佔用各行都會被刪除,不會影響原始檔。
除了指令與粗斜體之類的變化,整個txt檔是所見即所得,txt 空幾行,產出的網頁就會空幾行, txt 裡的所有半行空白都會被轉譯成 html 的 全形空白則是  
一個目錄是一本書,用 .book 檔組織篇章順序,用txt檔名作為章節名稱,用這八個指令組織章節裡的段落(txt檔案架構)。
除了這八個概念,使用者可專注在書寫,連段落之間的格式都不必理會,txt 檔看起來幾乎就是純粹的 text。
檔案與目錄
目錄
請將所有與書籍相關的檔案放在同一個目錄,程式檔不在此限。這個目錄裡,必需有三個字目錄
_source: 存放 txt 檔的地方,一本書是一個子目錄
_share: 所有書本產出時會用到的檔案,目前只有 styles.css
html: 產出的網頁檔,一本書是一個目錄
無論是來源或產出,書本目錄底下都會有一個子目錄: img。所有的圖片都放在 img 裡,產出 html 的 styles.css 也會被放在 img 裡。
一個 .book 檔,許多章節 .txt 檔,加上一個子目錄 img 放圖片,這就是整個書籍目錄的全部內容。使用者只要專注在 .txt 檔即可。
.book檔
第一行是書本名稱,用四個空白縮排的是篇章名稱。.book 檔裡的篇章順序就是產生網頁的順序。
沒被加到 .book 檔裡的篇章不會被轉繹。
以我的 UglyDeeds 為例,我的 UglyDeeds.book 的內容是這樣的。
UglyDeeds
Real Life
Ugly Deeds
Ugly Twitter
Twitter
Announcement
Topics
縮排的內容代表固定的架構,一組固定的架構是一個單元,我使用的單元是「月份」。
而單元「月份」會表現在檔名裡。
檔名
主是名稱,單元名稱,後綴,這三者用底線 _ 連接之後,加上副檔名,就是我們的檔名。
例如:RealLife_2312_7.txt
這三者連起來是一個章節(chapter)名稱,一個章節是一個檔案,所以每個檔案的第一行會與檔名相同。
例如:RealLife_2312_7.txt 這個檔案的第一行會是 #chapter|RealLife|2312|7
產出的首頁是 Home.html
工具
Window
如果你使用的是 window, 建議為每個目錄建立一個指向程式檔的捷徑,將目錄路徑當作參數,用捷徑的名稱來區隔不同的目錄。
Linux
如果你使用的是 linux,建議為常用的目錄建立一個 .bashrc 裡的 alias。
或者是安裝 zenity 用 --file-select --directory 來選擇。
也可修改 class Paths 的 self.source
Visual Studio Code (VSCODE)
建議安裝 TODO Tree 這個 extension。
編輯 settings.jon 將指令加入 customHighlight,
每個指令都加入: "type": "line",
例如,這是我的 settings.jon (部分):
"todo-tree.general.tags": [
"#chapter",
"#endchapter",
"#sec",
"#endsec",
"#subsec",
"#endsubsec",
"#q",
"#endq",
"#log",
"#endlog",
"#cmd",
"#endcmd",
"#anchor",
"#lnk"
],
"todo-tree.highlights.customHighlight": {
"#chapter": {
"foreground": "#ffae00",
"iconColour": "#ffae00",
"icon": "fold-down",
"type": "line",
"gutterIcon": true,
},
"#endchapter": {
"foreground": "#a37000",
"iconColour": "#a37000",
"icon": "fold-up",
"type": "line",
"gutterIcon": true,
},
在 todo-tree.highlights.customHighlight 裡加入每一個指令之後,
從此,畫面上有顏色那行就是指令,打字時請無視所有的色塊。
引言、分段落、加 anchor,加註解,加編輯紀錄時再理會即可。
如果再加上 snippet 與 placeholder,只要熟悉概念與字體 markdown 即可,無需背頌指令。
這是我的 vscode 畫面(Annoucement_2312_1.txt)
使用程式
執行程式的指令:
python3 easyWebBook.py "位於_source裡的目錄(完整路徑)"
至於 window 捷徑的語法,我不熟,請 google。
範例
這是 Announcement_2312_1.txt 的完整內容
這內容會編繹出大家看得到的 Announcement_2312_1.html
之前的名字是 Announcement.html
#chapter|Announcement|2312|1
#log|Proofreading
<p class="log">1. <b>1214</b> : 校錯字:『應盡』</a>
#endlog
#sec|14-1|Password Url
密碼公佈網址:
~password
預約於 1 月 6 日 00:01 分發佈。
(https://uglydeeds.substack.com/p/password)
(https://holydamn20beta.wixsite.com/ugly-deeds/post/password)
#endsec
#sec|14-2|Download Agreement
這就是我深信不疑的,我的版本的正確姿勢。
從今日起,下載我上傳並公開的加密檔代表你同意這六點:
一、加密與密碼強度不是我的義務。
二、九個字的密碼已遠超我應盡的義務。
三、加密發佈代表我無意散佈內容,直到我公佈密碼為止。
四、你會在完成下載的同時,取得你透過下載得到的那份檔案的所有權。
五、以不散佈被解開的檔案內容為前題,依你的自由意志對屬於你自己的檔案所為之所有行為,都是你的隱私,只與你自己有關。
六、你同意我公佈密碼之前不散佈被解開的檔案內容。
#endsec
#sec|14-3|Manual of File
檔案可以單獨看。
請用新檔覆蓋舊檔。
每個檔案都會涵蓋之前的內容,不會因為錯過之前的下載而錯過之前的內容。
明年1月5日天黑至1月6日日出之間,會再發佈一次包含所有檔案的完整版。
如果是密碼公佈前,檔案會加密。
#endsec
#sec|14-4|Share Folder
目前公佈於 google driver :
https://drive.google.com/drive/folders/1ZH1KexHSDEKVXncZ-5tjZMR2uxWTyEM8?usp=sharing
會陸續增追加他網站
#endchapter
還沒寫完。
寫完會再更新。
Comentarios