我正在尝试使用在运行时在生成图形的 LaTeX/MarkDown 代码块中呈现的上下文变量。原则上,我希望允许将图像的动态路径包含在图形中。
这是一段有效的代码:
\begin{figure}
\centering
\IfFileExists{path/to/my_image.png}
{\includegraphics[width=0.9\textwidth]{path/to/my_image.png}
{\includegraphics[width=0.2\textwidth]{path/to/image_not_available.png}
\caption{My caption.}
\label{Figure.1}
\end{figure}
现在,我有一个在运行时设置的上下文变量:
Path to the image folders: {{images_folder}}
这在“普通”MarkDown 中有效,但我找不到在图形代码块中使用此变量的方法。我试过(没有成功):
{\includegraphics[width=0.9\textwidth]{{{images_folder}}/my_image.png}
or
{\includegraphics[width=0.9\textwidth]{'{{images_folder}}'/my_image.png}
我是否需要以某种方式逃避{{ }}
构造?您能给我一些建议吗?谢谢
编辑:按照@Marijn的要求,对步骤顺序提供更多的见解:
- 我在处理所有数据 ETL 和上下文渲染的 Python 模块中使用 JSON 文件作为输入
- 一旦数据被解析并加载到字典中,就会使用所有元数据和数据初始化 RenderContext 对象,以填充生成的报告中使用的所有上下文变量。
- 然后,这些变量根据其特定的键从 RenderContext 字典输入到 MarkDown 模板中(即,RenderContext <key,value> 对 "number": 10 在 MarkDown 纯文本中变为 {{number}})。
- 我还有一个
header.txt
首页文件,其中有这样的条目:“标题:“这是关于{{title}}的报告”和日期:“{{date}}” - 我也尝试过将其添加
\graphicspath{{path/to/images}}
到我的主.tex
文件中,但由于某种原因,它被忽略了。 - 我还尝试向文件中添加
.tex
承载此路径的环境变量(例如,IMAGES="/absolute/path/to/images/"
以下这个帖子但没有成功。不想识别新定义的命令。
如上所述,在纯 MarkDown 文本中,我可以很好地访问变量,但当涉及到图形或表格块时,我无法让它检索变量值。我还尝试过,
\includegraphics[width=.....]{$images_folder$}
因为我看到它在主.tex
模板中实现,尝试用等来转义它\
。等等。但没有成功。
使用一个 Jinja 上下文变量的纯 MarkDown 文本示例如下:
This sample was found to have a contamination of {{contamination or '\\notset'}}.
如果在 RenderContext 中找不到污染的键值对,我会用红色显示自定义的 [not_set] 文本,以让我意识到出了问题。
再次感谢您的帮助!