在我的論文期間,我創建了多個 Git 儲存庫,這些儲存庫使用GitHub 使用 readme.md 作為儲存庫解釋。現在我想將這些文件納入我論文的附錄中。最好的方法是什麼?
我更喜歡一個僅連結readme.md
文件的解決方案,以便自動包含更改。
答案1
最好使用 Markdown-to-LaTeX-Compiler 和 Makefile 來建立專案來完成此操作。以下是如何繼續操作的範例概要:
- 安裝pandoc
使用以下內容建立一個 Makefile 或等效檔案(批次檔、腳本等),為您想要包含的每個項目自述文件重複第一行:
pandoc /path/to/GitHub/project/readme.md -f markdown -t latex -s -o /path/to/GitHub/project/readme.tex pdflatex <arguments> file.tex
\include{/path/to/GitHub/project/readme}
在適用的情況下在 LaTeX 文件中新增語句。- 使用 Makefile 建立您的專案。每次更改 LaTeX 文件後不一定需要執行此操作,只有在更改/新增 GitHub 專案自述文件後才需要執行此操作。
或者,您可以按照這個答案並在 LaTeX 中即時使用 pandoc。我認為這是一個不太優雅的解決方案,但儘管如此,這裡還是如何使用它來完成您想要的事情的快速概述:
- 安裝pandoc
- 複製連結答案中範例文件的序言
要嵌入 Markdown 文件,請將它們嵌入到您的文件中,如下所示:
\begin{markdown} \input{/path/to/GitHub/project/readme.md} \end{markdown}
- 每次編譯文件時,它都應該編譯並嵌入 Markdown 文件。
答案2
我的答案是基於 @Big-Blue 對一些 powershell 自動化的建議。我猜你有一個資料夾,其中所有儲存庫都位於其中,就像專案資料夾一樣。
資料夾結構範例:
-MyProjects
-MardownsToPdfs.ps1 << see script bellow
-ProjectDirA
-ReadmeA.md
-ImageA.png
-ProjectDirB
-ReadmeB.md
-ImageB.png
MardownsToPdfs.ps1 文件內容:
$currendDir=(Get-Item -Path ".\" -Verbose).FullName
#repeat for every *.md file
childitem ../ -include *.md -recurse | foreach ($_) {
$mdPath = $_.FullName
$pdfPath = $_.FullName.Replace(".md", ".pdf")
$pdfFileName = $_.Name.Replace(".md", ".pdf")
cd $_.directory
pandoc --wrap=preserve -f markdown+hard_line_breaks -s -V geometry:margin=1in -o $pdfPath $mdPath
cd $currendDir
}
右鍵單擊 *.ps1 檔案上的“使用 Powershell 運行”,它將在每個同名的 *.md 檔案旁邊建立一個 PDF。
您可以將 PDF 檔案包含在 *.tex 檔案中,如下所示:
%In your latex *.tex file you can embed
\includepdf[pages=-]{MyProjects/ProjectDirA/ReadmeA.pdf}
答案3
我實際上想做同樣的事情,即將該readme.md
文件包含在附錄中。
我找到了markdown
包非常有用。事實上,它有一個修改後的輸入命令,以包含外部.md
文件,您可以按原樣導入。這是\markdownInput{path/to/readme.md}
。
我做了以下事情:
\documentclass{article}
% your packages here
\usepackage{markdown}
\begin{document}
% your content here
\appendix
\markdownInput{path/to/readme.md}
\end{document}
意識到:
- Markdown 的第一個分段層級(單一
#
)對應於\chapter
,依此類推(##
對應於\section
, ...)。因此,您可能需要使用該shiftHeadings
選項來調整切片等級。 - 您必須在啟用 shell 轉義的情況下建立文件(即
pdflatex --shell-escape
)。