全程快捷鍵給1700頁數學筆記配圖!硬核小哥上手LaTeX+Inkscape

2021-01-10 量子位

之前,我們介紹了一位神奇的本科生,他在數學課上用Vim+LaTeX,全程手打出1700頁課堂筆記,速度直追老師的板書。

現在,這位Gilles小哥又開課了,上次他只教了大家手打公式的方法,這次他展示了數學筆記裡的畫圖技巧。

他用到的神器是Inkscape+LaTeX,再加上自定義的快捷鍵,一個Ctrl+F,直接完成原來的六個步驟。

讓你在電腦上畫圖也能追得上老師。

無論是複分析、微分幾何、電動力學,還是小哥目前正在準備的橢圓曲線畢業論文,都能用這些神器輕鬆搞定。

為何選擇Inkscape

小哥說,其實不用圖形軟體,他也能畫圖。

給LaTeX文檔添加圖形可以用TikZ。用TikZ繪製一個向量A的圖形只需要5行代碼:

\begin{tikzpicture}\coordinate (A) at (1, 3);\draw[thick, ->] (0, 0) — (A);\node[above right] at (A) };\end{tikzpicture}

運行以上代碼就畫出矢量A的圖形。(注,A應等於(1,3) ,原文錯誤。)

TikZ優點是繪製圖形只需要寫代碼。但是它的缺點也在於此,因為是代碼所以無法實時看到圖像,運行代碼的速度也會比較慢。

因此,用一個能實時繪圖的軟體Inkscape比TikZ方便很多。

Inkscape是一個開源的矢量圖形編輯器,Linux、Windows、Mac平臺都可以使用。雖然比Adobe Illustrator功能少,但是勝在免費。圖形軟體Inkscape與LaTeX代碼並不衝突,Inkscape仍具有LaTeX的排版功能。

下面開始介紹如何把Inkscape和LaTeX兩件武器結合起來。

給LaTeX文檔加上圖形

Inkscape可以選擇使用LaTeX渲染圖形中的文本,只需在保存時把圖形導出為pdf和LaTeX文件。

其中,pdf文檔包含剝離了文字的圖形,LaTeX文件則包含了將文字放在正確位置所需的代碼。

如果我們要在LaTeX中插入下面這張圖:

需要轉到「文件」→「另存為」,選擇pdf作為擴展名。然後點擊保存,會彈出以下對話框:

選擇「Omit text in PDF and create LaTeX file」(在pdf中省略文本並創建LaTeX文件),將圖形保存為pdf+LaTeX。

假設生成的文件都存儲在figures文件夾下,最後生成的目錄應該像這樣:

figures/figure1.pdf_tex figure1.svg figure1.pdf

要在LaTeX文檔中插入Inkscape圖形,只要在開頭加入以下代碼:

\usepackage{import}\usepackage{xifthen}\usepackage{pdfpages}\usepackage{transparent}\newcommand{\incfig}[1]{%\def\svgwidth{\columnwidth}\import{./figures/}{#1.pdf_tex}}

假設圖形的路徑是figures/riemmans-theorem.svg,輸入以下代碼將圖片插入文檔中:

\begin{figure}[ht]\centering\incfig{riemmans-theorem}\caption{Riemmans theorem}\label{fig:riemmans-theorem}\end{figure}

編譯上面的文檔,就獲得插入圖形的LaTeX排版結果:

上面的圖形文本由LaTeX渲染,可以根據需求更改字體,圖形也會相應地更新:

也就是說用Inkscape繪製的圖形,仍然保留的LaTeX的排版功能

快速創建包含圖形的LaTeX文檔

上面的步驟顯然過於繁瑣,如果在做課堂筆記的時候,急急忙忙打開Inkscape,搜索目錄在插入圖形,肯定是跟不上節奏的。

要知道Gilles小哥可是能同步跟上老師板書的大神,所以他還有「快捷方式」的秘技。

Gilles用一個自定義的Ctrl+F快捷鍵,把上面的步驟簡化為一鍵搞定。

Ctrl+F背後的腳本應該滿足下面六個要求:

1、根據LaTeX文件的位置查找圖形目錄;

2、然後檢查是否存在具有相同名稱的圖形(與pdf_tex文件同名的svg文件);

3、如果沒有同名文件,圖形模板將被複製到圖形目錄下;

4、將包含圖形標題的當前行替換為插入圖形的LaTeX代碼;

5、在Inkscape中打開新圖;

6、設置文件觀察器,每當通過按下Ctrl+S將圖形保存為svg文件時,也自動保存為pdf+LaTeX,讓之前的保存對話框不再彈出。

Gilles已經給出了在VimTeX中的設置:

inoremap <C-f> <Esc>: silent exec '.!inkscape-figures create "'.getline('.').'" "'.b:vimtex.root.'/figures/"'<CR><CR>:w<CR>nnoremap <C-f> : silent exec '!inkscape-figures edit "'.b:vimtex.root.'/figures/" > /dev/null 2>&1 &'<CR><CR>:redraw!<CR>

下面感受一下實際效果:

按下Ctrl+F,LaTeX開頭插入圖形的代碼部分自動完成。

如果想編輯一個圖形,可以按下Ctrl+F打開一個選擇對話框,搜索當前文檔中的圖形。選擇其中一個後,它會顯示Inkscape中的圖形。保存圖形時,會將插入圖形的代碼複製到剪貼板。

這些快捷方式使得添加和打開圖形變得輕而易舉,不必記每次手動將圖形保存為pdf+LaTeX格式。具體的腳本可以去GitHub項目頁下載,地址附在文末。

繪製圖形

小哥說,在大多數情況下,用Inkscape來繪製圖形,要比使用TikZ要快得多。

但是與手工繪製相比,還是要慢很多,就算用上Inkscape內置的快捷方式能夠加快速度,但也很難達到目標。

因此,小哥用Python編寫了一個定製的快捷方式管理器,來完全控制每個按鍵的「解釋」方式。

他說,這給自己畫圖帶來了很大的靈活性。

繪製形狀

從Inkscape內置的鍵盤快捷鍵開始說起。比如說,按下R,可以激活矩形繪製工具,E可以用來繪製橢圓等等。

就實現而言,這意味著快捷方式管理器會「重播」這些「鍵盤事件」,也就是說,將它們傳遞到Inkscape中,然後執行命令。

在小哥的設定中,用W和F替代了Inkscape默認的鉛筆快捷鍵和曲線工具的快捷鍵P和B。

他說,在自己右手使用滑鼠的時候,使用這些快捷鍵的會更舒服、更順手一些。

基於用左手按快捷鍵的思路,他還將Z鍵設定為「取消」,Shift+Z設定為「刪除」,X設定為很難按到的%等等。

組合鍵與常用樣式

設定繪圖樣式, 是小哥使用Inkscape做的第二件事。他用來繪圖樣式很簡單:

形狀,比如矩形或者圓形,多為黑色、淺灰色、白色或透明的,在操作的時候,可以選擇輪廓的線條。線條(包括輪廓)大多是實線、點線或虛線。它們有些非常寬,有些也帶著箭頭。整體如下圖所示:

這些繪圖的樣式是小哥經常用到的,他希望能夠快速調用起來。但是,使用Inkscape的快捷方式太麻煩了,需要很長的時間。比如,將下面的圓和方框的樣式從黑色實邊轉換成灰色虛邊:

你需要按下Ctrl+Shift+F打開樣式面板,然後通過滑鼠點擊相應的按鈕,來改變每個對象的樣式。而且,在Inkscape的快捷方式設定中,根本無法通過鍵盤做到這一點。

小哥認為,這太討人嫌了。理想情況下,完成這一操作應該只需要幾分之一秒。

這就是組合鍵發揮作用的地方。一個組合鍵就是一個快捷方式,有兩個或多個按鍵組成。

比如,小哥同時按下S和F的時候,他的快捷方式管理器,就會對選定的對象使用實線筆畫並進行灰色填充。想要筆劃變粗?同時按下S+F+G就行了。

在這樣的設定下,每個樣式屬性,都對應一個按鍵:S代表正常筆劃,F代表灰色填充,G代表加粗,A代表加粗,D代表點線等等。

這些表格中的某些樣式只響應一個鍵,比如左上角的樣式:F代表只填充灰色而不改變筆劃。這可能帶來快捷鍵衝突的問題。

比如按F也是用來調用曲線工具的快捷鍵。解決方式是空格+F,用空格來充當一個佔位符。

使用這些組合鍵,之前的問題可以通過按幾個鍵來解決了:

F+S,能夠使矩形變成灰色,並應用實線邊框。

F+H+E代表填充灰色和使用非常粗的虛線。

A+G+D則是增加箭頭,並應用點線樣式。

添加文本

繪圖的另一個重要部分是添加文本。圖形中通常會包含數學公式,小哥就想著能夠使用自己在Vim裡面設定好的「代碼片段」。

為了實現這一點,他設定按T來打開一個小的Vim窗口,在這裡可以輸入LaTeX代碼。在退出的時候,可以在Inkscape中插入一個文本節點:

正如上文所述,在文檔中插如圖時,可以用LaTeX來輸入文本。如果想要立即插入文本怎麼辦?小哥說,可以用Shift+T來做到這一點:

這兩種選擇各有優缺點。小哥主要選擇第一種方法, 因為文本是由LaTeX文檔呈現的。

這意味著字體將始終匹配,並且可以使用文檔中定義的宏。然而,一個缺點是文本的定位有時有點困難。

由於在Inkscape上很難看到最終結果,有時需要從Inkscape跳轉到PDF閱讀器上看結果,然後再回來微調。

保存和較少使用的樣式

雖然組合鍵能夠滿足90%的使用需求。但小哥有時候還想玩點新花樣:使用自定義的樣式。

比如繪製光學領域的圖形,就需要一個玻璃和射線的樣式了。想要實現這一點,首先要在Inkscape 使用默認的快捷方式創建樣式:

選擇其中的一個對象,然後按下Shift+S就可以保存這些樣式了。然後鍵入新樣式的名稱,比如「glass」,然後按回車鍵確認,之後就可以使用它了。

之後,只需要選擇一個對象,按下S,並鍵入「glass」,就可以將相應的樣式應用到這一對象上。而且,也沒必要輸入全名,如果「g」沒有其快捷鍵,只需要輸入「g」就行了,如果有,可以輸入「gl」或者「gla」。

添加和保存對象

在小哥的設置中,最後一個部分是添加和保存對象。他說,自己可以用A來添加,然後用Shift+A來保存。例如,按A並輸入「ec」,會添加一個橢圓曲線:

另一個例子是,按A並輸入「dg」,會添加一個「鍵孔」,也可以使用「Ctrl+-」從給定的形狀對其進行細分:

此外,還有一些圖像涉及到2D和3D軸圖像,在複分析以及微分幾何中,會經常用到。

相關焦點

  • 1700頁數學筆記火了!全程敲代碼,速度飛快,硬核小哥教你上手
    數學課上,全程鍵盤手打1700頁筆記。速度緊追老師板書,公式、圖形一個不落。效果?請看下圖:不僅排版媲美教科書,而且還能夠批註,檢索關鍵詞……筆記被他Po到網上之後,便引來大量圍觀。不到一天,相關推文就已經有2000多贊,Hacker News論壇上蓋了200多樓。
  • 數學公式編輯神器——LaTeX
    LaTeX的幾個優點:排版質量高,數學公式精美格式自動處理,版式、樣式、字體、對齊等格式,無需手動修改參考文獻的創建和管理可擴展,允許用戶對功能進行擴充和新增安全穩定靈活具備註釋功能免費開源LaTeX的編輯與編譯過程如圖
  • Latex數學公式教程
    對於生成複雜表格和數學公式,效果拔群。因此它非常適用於生成高印刷質量的科技和數學類文檔。筆者撰寫本文的目的在於簡單總結LaTex數學公式的語法,本文面向那些想用Markdown做數學筆記的初學者。因此本文不涉及與數學公式不相關的LaTex內容。概述LaTex使用一種特有的模式來排版數學符號和公式。
  • 清華學子筆記大賞 聽說你們還想看
    又一彈新筆記來咯!06線性代數2由於數學不好就很認真地在記數學筆記qwq!有機化學A1每當看到有機化學的筆記,就讓我想到厚厚幾百頁的課本;每當想起厚厚幾百頁布滿反應式的課本,就讓我回憶起上學期在鄴架軒極限複習到天亮直接去考有機A2的經歷……——任雪怡  化學工程系12
  • 高考數學丨「全國卷」壓軸解答題解題策略+58頁導數解題筆記
    全國卷對於導數應用的考查,其難點一直圍繞函數的單調性、極值和最值展開,以導數為工具探究函數的性質,藉此研究不等式、方程等問題,著重考查分類討論、數形結合、化歸與轉化的數學思想方法,意在考查學生的運算求解能力、推理論證能力,充分體現數學理性思維的特點,從思維的層次性、深刻性和創新性等方面進行考查
  • 資料| 1800頁33章數學方法精要筆記 —深入數學建模, 機器學習和...
    from=leiphonecolumn_res07091 書籍介紹  · · · · · ·在信息爆炸的當今,大到企業巨頭的經營方向, 小到和日常生活相關的人工駕駛等領域,數學建模和人工智慧都對信息數據的收集、處理、解釋以及做出決策將起到至關重要的作用。負責開發模型和算法的一線科學家和工程師, 都需要有堅實的數學基礎。
  • 菜鳥必看 Windows鍵盤快捷鍵入門指南
    禍兮福所倚,福兮禍所伏,滑鼠操作的通用性雖然帶來了老少鹹宜易於上手的優點,但導致其在操作效率上出現一定的下降。尤其是在多個窗口之間進行切換或程序內進行大量操作時,滑鼠操作這種缺點暴露的更為徹底。CTRL+W鍵 可以關閉大多數窗口程序和窗口程序中的標籤頁
  • 中科院院士數學筆記曝光:全英文工整如印刷體
    「微分方程」筆記走紅,工整得如印刷品4月13日,東南大學檔案館副館長李宇青向記者展示了黃緯祿院士的數學筆記——一本練習冊,封面用英文標註了課程名稱「微分方程」,翻開筆記本,裡面是用全英文做的微分方程式筆記,大概有二十多頁。「挺震撼的!」李宇青跟記者形容了見到筆記時的直觀感受。
  • 康奈爾法、思維導圖法等做筆記,提高做筆記效率!看完還想再寫三頁
    還可以酌情增加一部分頁面來記錄反饋,如在《微習慣》中我預留出一頁空白用來記錄自己的實踐反饋效果。——文學院張藝線性代數作為一名線性代數的入門級學生,有些剛剛接觸的定義非常重要,這時就需要將定義全部抄下來。這個「抄」可有點不同,要找出整個句子或者段落的「主謂賓」,最後畫出一個小型框架,把內容填進去。
  • 電腦快捷鍵大全,請收藏
    >Alt+Shift+F 插入合併域8.用於處理 Web 頁的快捷鍵快捷鍵 作用Ctrl+K 插入超級連結Alt+← 返回一頁Alt+→前進一頁F9 刷新9.用於列印和預覽文檔的按鍵Ctrl+P 列印文檔Alt+Ctrl+I 切換至或退出列印預覽箭頭鍵在放大的預覽頁上移動
  • 四年級數學上冊《平行四邊形和梯形》學霸手抄課文筆記 實拍版
    我們都知道,一到三年級的數學內容大部分以計算為主,難度並不大,但是,到了四年級慢慢出現混合運算、簡便計算,其中所學的圖形:平面圖形,平行四邊形和梯形的認識,就是為五六年級進入立體圖形(如長文體和正文體、圓柱和圓錐),甚至以後初中數學的學習打基礎
  • 中科院院士80年前大學數學筆記曝光:全英文工整如印刷體
    黃緯祿院士筆記「微分方程」筆記走紅,工整得如印刷品4月13日,東南大學檔案館副館長李宇青向記者展示了黃緯祿院士的數學筆記——一本練習冊,封面用英文標註了課程名稱「微分方程」,翻開筆記本,裡面是用全英文做的微分方程式筆記,大概有二十多頁。「挺震撼的!」
  • 與印象筆記最搭的智能滑鼠:EverMOUSE 上手體驗
    這一點對於大手的我來講,在剛上手時,有點不適;隊友小手反而適應的不錯。EverMOUSE 左右各有一個功能鍵,剛上手的人會發生誤觸的情況。 不過,在持續使用了一段時間之後,有了一定肌肉記憶後,整體感覺滑鼠的握持、左右兩側的功能鍵不會影響到正常的滑鼠左右鍵的操作,對於日常辦公室使用沒有問題。
  • PS-學會有關Ctrl的快捷鍵(大大提高工作效率)
    上一章我們講了有關Shift的快捷鍵的主要用法;這一章我們來講一下有關Ctrl的快捷鍵:①②快捷鍵「Ctrl加+」,可以把圖片放大。③快捷鍵「Ctrl加-」,可以把圖片縮小。④快捷鍵「Ctrl加1」快捷鍵「Ctrl+1」,就可以把圖片按圖片100%
  • 「不可能」的數學問題突破數學世界的邊界,打破了對數學的認識
    這個問題可以改變數學的思維模式。那些狹義地考慮特定條件的人,現在必須廣義地考慮這些條件如何結合在一起。那些在系統內部工作的人現在必須退後一步,檢查系統本身。這個問題在數學史上被問了一遍又一遍,問題的範圍從圓周率到環繞哥尼斯堡城。這個問題幫助我們塑造了什麼是數學以及我們如何理解它。
  • Excel高效率辦公快捷鍵,高手快捷鍵一覽匯總
    工作中要想有效率,又不被煩死,我們得學習掌握軟體提供給我們的功能快捷鍵,下面就講講平常幾個最平凡用到的快捷鍵,是工作中最最最常用、最實用的,對於好多新手可能還不一定知道,哪我們就一起來掌握一下吧。1、CtrL+ F1一鍵切換功能區是否顯示,幾乎每天都要用N次,好煩人的鍵。
  • uoolatex(猶拉緹)乳膠枕如何 泰國十大乳膠枕品牌
    近期,一個名為「uoolatex」的品牌暢銷全國各地,吸引了眾多消費者的眼球,越來越多的消費者開始爭相諮詢uoolatex是泰國的品牌嗎?因此廣大消費者在看到uoolatex這個品牌之後,才會一再諮詢這個品牌是不是來源於泰國。事實上,uoolatex這個品牌是真正起源於泰國的實力乳膠製品品牌,自成立至今已經有著30多年的歷史,因為品牌實力強勁還成功入駐了泰國首都曼谷KINGPOWER王權免稅店。  當時為了紀念uoolatex成功入駐KINGPOWER王權免稅店,該品牌還特別召開了發布會。
  • 地下工作者進駐澳洲,CAT R1700 井下硬巖採礦機交付使用
    近日,一臺最新型號的 CAT R1700 地下硬巖採礦機在澳洲交付使用,這也是澳洲僅有的2臺 R1700 之一
  • latex-tikz物理作圖1
    (\a1)$); %取0.5對稱點 } \draw[-latex](0,0)node[left]{$0$}--(5,0)node[below]{$t$}; \draw[-latex](0,-2)--(0,3)node[left]{$v$}; \node at (1.6,-2){圖(b)}; \draw(0,0)--(\a1); \draw(\a1)[dashed]--(0,\ay1)node[left
  • 競品分析報告:有道雲筆記與印象筆記
    這樣的設計方式很像將主頁作為一塊畫布,用戶的筆記都是畫布上的圖案,用戶個人信息、APP設置和除了「新建筆記」外的其它所有功能都放在畫布外,以導航形式出現,比如頂部導航、以及左側需要點擊調出為節省屏幕空間的導航欄。新建按鈕出現在屏幕右下角,點擊之後各種新建筆記的方式會逐一展開。這樣的布局比較新穎,突出了主頁面,但是對於新用戶可能增加了上手難度。