如何在 PostgreSQL 查询中使用双美元符号 (`$$`) 格式化 LaTeX 公式?

How to format LaTeX formulas with double dollar signs (`$$`) in PostgreSQL query?

我正在通过脚本构建 PostgreSQL 查询,该脚本 returns 格式化了由双美元符号包围的 LaTeX 公式,例如以下:

$ x^{14} + \frac{7 x^{13}}{5} + \frac{13 x^{8}}{7} + \frac{5 x^{5}}{6}$$

此外,这些公式属于一个数组,因此完整的 INSERT 查询将如下所示:

INSERT INTO table("array")
VALUES (
'{"$ x^{14} + \frac{7 x^{13}}{5} + \frac{13 x^{8}}{7} + \frac{5 x^{5}}{6}$$",
"$$\frac{9 x^{11}}{13} + \frac{13 x^{9}}{7} + x^{8} + \frac{x^{6}}{3}$$",
"$ x^{13} + \frac{52 x^{12}}{3} + \frac{65 x^{4}}{9} + \frac{3}{2}$$"}'
)

但是,在插入之后,frac 之前的反斜杠 (\) 在数据库中消失了(我得到 frac 而不是 \frac。因此我的公式在我的应用程序中呈现效果不佳。

单元格内容如下:

{"$ x^{14} + frac{7 x^{13}}{5} + frac{13 x^{8}}{7} + frac{5 x^{5}}{6}$$",
"$$frac{9 x^{11}}{13} + frac{13 x^{9}}{7} + x^{8} + frac{x^{6}}{3}$$",
"$ x^{13} + frac{52 x^{12}}{3} + frac{65 x^{4}}{9} + frac{3}{2}$$"}

我使用 Python 中的 sympy module 来自动生成公式,所以在每个 frac 之前手动加倍反斜杠是 而不是 一个选项。

我应该怎么做才能防止这种行为发生?

反斜杠是表示字符串数组的字符串中的转义字符:

SELECT ('{a,"b\"c\d"}'::text[])[2];
 text  
-------
 b"c\d
(1 row)

如果反斜杠前面没有特殊含义的字符,则会被忽略。

将 PostgreSQL 中字符串数组的字符串表示形式中的所有反斜杠加倍以获得您想要的结果。

如果您的字符串常量中只出现这样的反斜杠,您可以按如下方式进行:

SELECT replace(
          '{"$ x^{14} + \frac{7 x^{13}}{5} + \frac{13 x^{8}}{7} + \frac{5 x^{5}}{6}$$",
           "$$\frac{9 x^{11}}{13} + \frac{13 x^{9}}{7} + x^{8} + \frac{x^{6}}{3}$$",
           "$ x^{13} + \frac{52 x^{12}}{3} + \frac{65 x^{4}}{9} + \frac{3}{2}$$"}',
          '\',
          '\'
       )::text[];