在我制作数学搜索网站 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}}$}
如果你点击该公式,网站就会正确打开: