无需替换 href url 中的 Latex 代码

无需替换 href url 中的 Latex 代码

在我制作数学搜索网站 URL 的文档中,我需要生成如下 URL:

https://website.xyz/search/?q=%24\frac{\pi r^2}{2}%24

我正在使用 pylatex 并且发现它按照我的预期生成了 tex 代码:

\href{https://approach0.xyz/search/?q=%24\frac{m^2}{s}%24}{$\frac{d m_s}{ct^{2}}$}

但在生成的 pdf 中我得到了修改后的 url:

https://approach0.xyz/search/?q=%24\protect {\begingroup m^2\endgroup \over s}%24

以下是生成它的 Python 代码:

formula_with_href = pl.NoEscape('\\href{https://approach0.xyz/search/?q=%24' + '\\frac{m^2}{s}' + '%24' + '}{' + '$' + formula_latex + '$' + '}')

脚本太大,无法显示,因此这里是最小化的 LaTeX 文档:

\documentclass{article} 
\usepackage{hyperref} 
\begin{document} 
\href{https://approach0.xyz/search/?q=%24\frac{m^2}{s}%24}{$\frac{d m_s}{ct^{2}}$} 
\end{document}

所以问题是如何创建正确的 url。

答案1

为了\href工作,你必须对 URL 进行编码百分比编码,python 可以帮你做以下事情urllib.parse

import urllib.parse

domain = "https://approach0.xyz/search/?q="
formula = r"$\frac{d m_s}{ct^{2}}$"
query = urllib.parse.quote(formula)
formula_with_href = r"\href{" + domain + query + "}{" + formula + "}"

其结果是正确转义的字符串:\href{https://approach0.xyz/search/?q=%24%5Cfrac%7Bd%20m_s%7D%7Bct%5E%7B2%7D%7D%24}{$\frac{d m_s}{ct^{2}}$}

在此处输入图片描述

如果你点击该公式,网站就会正确打开:

在此处输入图片描述

相关内容