在 Latex 中嵌入 Github readme.md

在 Latex 中嵌入 Github readme.md

在我的論文期間,我創建了多個 Git 儲存庫,這些儲存庫使用GitHub 使用 readme.md 作為儲存庫解釋。現在我想將這些文件納入我論文的附錄中。最好的方法是什麼?

我更喜歡一個僅連結readme.md文件的解決方案,以便自動包含更改。

答案1

最好使用 Markdown-to-LaTeX-Compiler 和 Makefile 來建立專案來完成此操作。以下是如何繼續操作的範例概要:

  1. 安裝pandoc
  2. 使用以下內容建立一個 Makefile 或等效檔案(批次檔、腳本等),為您想要包含的每個項目自述文件重複第一行:

    pandoc /path/to/GitHub/project/readme.md -f markdown -t latex -s -o /path/to/GitHub/project/readme.tex
    pdflatex <arguments> file.tex
    
  3. \include{/path/to/GitHub/project/readme}在適用的情況下在 LaTeX 文件中新增語句。

  4. 使用 Makefile 建立您的專案。每次更改 LaTeX 文件後不一定需要執行此操作,只有在更改/新增 GitHub 專案自述文件後才需要執行此操作。

或者,您可以按照這個答案並在 LaTeX 中即時使用 pandoc。我認為這是一個不太優雅的解決方案,但儘管如此,這裡還是如何使用它來完成您想要的事情的快速概述:

  1. 安裝pandoc
  2. 複製連結答案中範例文件的序言
  3. 要嵌入 Markdown 文件,請將它們嵌入到您的文件中,如下所示:

    \begin{markdown}
      \input{/path/to/GitHub/project/readme.md}
    \end{markdown}
    
  4. 每次編譯文件時,它都應該編譯並嵌入 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)。

相關內容