我正在尋找圍繞 Markdown 文件中的某些文字創建一個框。沒什麼特別的,只是圍繞著一段文字的一個框框。
我使用 Markdown 處理純文本,然後使用 Pandoc 將其轉換為 PDF。我正在使用 eisvogel.tex 模板進行轉換。對於在 Markdown 文字中新增框框有什麼快速簡便的建議嗎?
謝謝。
答案1
我想出來了,並在這裡分享結果。大部分內容都是從以下頁面收集的:
https://github.com/chdemko/pandoc-latex-environment
https://github.com/Wandmalfarbe/pandoc-latex-template
首先,我在 Docker 檔案中運行 pandoc,因此我需要下載一些額外的軟體包才能使其正常工作。以下是我在“Dockerfile”中下載的一小部分軟體包,以及我如何啟動它:
FROM pandoc/latex:2.10
#RUN tlmgr option repository http://ctan.math.washington.edu/tex-archive/systems/texlive/tlnet \
RUN tlmgr option repository http://ctan.math.utah.edu/tex-archive/systems/texlive/tlnet \
&& tlmgr update --self \
&& tlmgr install adjustbox awesomebox babel-german background bidi collectbox csquotes
everypage environ etoolbox filehook fontawesome5 footmisc footnotebackref framed fvextra
letltxmacro ly1 mdframed mweights needspace pagecolor pgf sourcecodepro sourcesanspro
tcolorbox titling tools trimspaces ucharcat ulem unicode-math upquote xcolor xecjk xurl
zref
RUN apk --no-cache add \
ghc cabal libc-dev zlib-dev python3 py3-pip
RUN cabal update
#RUN cabal --global --prefix=/usr/local v2-install cabal-install
#RUN cabal --global --bindir=/usr/local/bin v2-install pandoc-include-code-1.4.0.0
#RUN pip3 install pandoc-extract-code pandocfilters
RUN pip3 install pandoc-extract-code pandocfilters pandoc-latex-environment
這裡的關鍵要素是包含 tcolorbox for eisvogel 所需的所有必要軟體包,即 install、tools、xcolor、tcolorbox 等,還要下載並在語句「RUN pip3 install...」中包含 pandoc-latex-environment .. 」
接下來,我需要將參數「--filter pandoc-latex-evironment」加入我的 pandooc 指令。我使用的 shell 腳本已經針對我的環境進行了高度定制,因此我只是添加了額外的一行來使用過濾器“pandoc-latex-environment”。
然後我必須在 Markdown 文件的序言中添加一些行:
header-includes:
- |
```{=latex}
\usepackage{tcolorbox}
\newtcolorbox{info-box}{colback=cyan!5!white,arc=0pt,outer arc=0pt,colframe=cyan!60!black}
\newtcolorbox{warning-box}{colback=orange!5!white,arc=0pt,outer arc=0pt,colframe=orange!80!black}
\newtcolorbox{error-box}{colback=red!5!white,arc=0pt,outer arc=0pt,colframe=red!75!black}
然後,在下面的序言中加入以下內容:
pandoc-latex-environment:
tcolorbox: [box]
info-box: [info]
warning-box: [warning]
error-box: [error]
一旦程式碼出現在序言中,我就可以開始加入到 Markdown 文字本身。以我從 StackExchange 的各個頁面收集的範例為例,我新增了以下內容:
## Standard Box
\begin{tcolorbox}
\abovedisplayskip=0pt%
\belowdisplayskip=0pt%
%\vspace{-1\baselineskip}
\begin{align}
\sigma & = \beta_{0} \label{eq:Model0} \\
\sigma & = \beta_{0} + \beta_{1}K + \beta_{2}K^2
\label{eq:Model1} \\
\sigma & = \beta_{0} + \beta_{1}K + \beta_{2}K^2 + \beta_{3}(T-t) + \beta_{5}K(T-t)
\label{eq:Model2} \\
\sigma & = \beta_{0} + \beta_{1}K + \beta_{2}K^2 +
\beta_{3}(T-t) + \beta_{4}(T-t)^2 + \beta_{5}K(T-t)
\label{eq:Model3}
\end{align}
\end{tcolorbox}
然後我開始自訂每個盒子的顏色:
::: info
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam aliquet libero
quis lectus elementum fermentum.
:::
::: warning
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam aliquet libero
quis lectus elementum fermentum.
:::
::: error
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam aliquet libero
quis lectus elementum fermentum.
:::
現在,當我將 Markdown 文件轉換為 PDF 文件時,我可以渲染出以下圖像。
非常感謝在 StackExchange 上發布一小部分解決方案的每個人。我能夠從大約 5-6 頁中收集到部分解決方案。