Как отформатировать формулы LaTeX с двойными знаками доллара (`$$`) в запросе PostgreSQL? - PullRequest
0 голосов
/ 08 марта 2019

Я создаю запрос PostgreSQL с помощью скрипта, который возвращает отформатированные формулы LaTeX, окруженные двойными знаками доллара, такие как следующий:

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

Кроме того, эти формулы принадлежат массиву, так чтополный INSERT запрос будет выглядеть примерно так:

INSERT INTO table("array")
VALUES (
'{"$$6 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}$$",
"$$2 x^{13} + \frac{52 x^{12}}{3} + \frac{65 x^{4}}{9} + \frac{3}{2}$$"}'
)

Однако после INSERT обратная косая черта (\), предшествующая frac, исчезнет в базе данных (я получаю frac вместо\frac. Следовательно, мои формулы плохо отображаются в моем приложении.

Вот содержимое ячейки:

{"$$6 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}$$",
"$$2 x^{13} + frac{52 x^{12}}{3} + frac{65 x^{4}}{9} + frac{3}{2}$$"}

Я использую модуль sympy в Pythonавтоматически генерировать формулы, поэтому вручную удваивать обратную косую черту перед каждым frac - это , а не вариант.

Что я должен сделать, чтобы предотвратить такое поведение?

1 Ответ

0 голосов
/ 08 марта 2019

Обратная косая черта - это escape-символ в строках, представляющих массив строк:

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

Если обратная косая черта не предшествует символу со специальным значением, она игнорируется.

Двойнойвсе обратные косые черты внутри строкового представления массива строк в PostgreSQL, чтобы получить то, что вы хотите.

Если такие обратные косые черты являются единственными, встречающимися в вашей строковой константе, вы можете выполнить следующее:

SELECT replace(
          '{"$$6 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}$$",
           "$$2 x^{13} + \frac{52 x^{12}}{3} + \frac{65 x^{4}}{9} + \frac{3}{2}$$"}',
          '\',
          '\\'
       )::text[];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...