vscode的markdown preview enhanced插件的主題并不一定符合每個(gè)人的審美,所以有的時(shí)候需要自定義,下面給出兩種在windows下MPE自定義CSS的方法。
注:MPE更新過后,界面出現(xiàn)了變更,不清楚此時(shí)的方法是否還有效。
方法一:更換自定義CSS
本來想要嘗試增設(shè)Preview Theme中的默認(rèn)值,從而直接將自定義的相同名字css移動(dòng)到指定位置,后來發(fā)現(xiàn)默認(rèn)值列表不可更改(個(gè)人水平不足),退一步選擇下面的方法。
注:由于某些原因,MPE插件會(huì)更新主題文件,所以建議自己將自己的主題css進(jìn)行備份,失效后替換
首先了解一下MPE的主題位置
首先進(jìn)入C:\Users\${你的用戶名}\.vscode\extensions\shd101wyy.markdown-preview-enhanced-${版本號(hào)}\node_modules\@shd101wyy\mume\styles
,在這個(gè)目錄下有兩個(gè)文件夾preview_theme和prism_theme。
其中preview_theme為Markdown排版樣式,prism_theme為代碼塊排版樣式。
主題下載
這方面本人確實(shí)沒有什么好方法,typora有很多的免費(fèi)主題,但是經(jīng)過測(cè)試和MPE的css并不兼容。這邊建議還是通過原有的css進(jìn)行修改,此處需要的css語法可以自行學(xué)習(xí)。
由于原有的css在windows上打開全是一行css,更改并不方便,建議自行更改為適合閱讀的格式,這邊提供一段格式轉(zhuǎn)換的代碼。
input_css = '' # 這里用自己要format的css文件路徑
output_css = 'format.css'
out_contents = ''
with open(input_css, 'r') as f:
in_contents = f.read()
depth = 0
for ch in in_contents:
if len(out_contents) > 0 and out_contents[-1] == '\n':
out_contents += depth * '\t'
if ch == '{':
out_contents += ch + '\n'
depth += 1
elif ch == ';':
out_contents += ch + '\n'
elif ch == '}':
depth -= 1
out_contents += '\n' + depth * '\t' + ch + '\n'
else:
out_contents += ch
with open(output_css, 'w') as f:
f.write(out_contents)
補(bǔ)充:如果用的是vscode,自帶Format功能,只需要右鍵,選擇Format Document即可。
主題自定義
這邊采用Maserhe的自定義css進(jìn)行講解。 (主要是類mac的代碼塊很好看)
將mystyle.css丟進(jìn)上面說的preview_theme文件夾,codeblock.css丟進(jìn)prism_theme文件夾。如果想要和原本的預(yù)設(shè)css進(jìn)行區(qū)分,可以在里面再創(chuàng)建一個(gè)文件夾,再丟進(jìn)去,這樣方便管理。
接下來使用命令ctrl+shift+p
,選擇Preferences: Open User Settings(JSON) 打開 settings.json,當(dāng)然不一定有User,只是我個(gè)人這邊是User的。
在JSON中找到以下兩條(如果沒有就自己增加)
后面填寫的是相對(duì)路徑,分別是相對(duì)于preview_theme和prism_theme文件夾的相對(duì)路徑。在這里填寫絕對(duì)路徑是沒有用的,個(gè)人測(cè)試過,估計(jì)作者會(huì)拼接成絕對(duì)路徑進(jìn)行查找。這樣就能夠更改主題了。
方法二:直接更改style.less
這方面需要參考作者的文檔。
打開style.less
使用ctrl+shift+p
,選擇MPE: Customize CSS,打開style.less
修改style.less
按照css進(jìn)行編寫就行,比如這邊我想整體更改圖片大小,同時(shí)使得圖片居中。
.markdown-preview.markdown-preview {
img {
max-width: 50%;
// 圖片居中
display: block;
margin: 0 auto;
}
}
效果如下