2012-01-24 1 views
1

В текстовом поле в HTML-форме я позволяю многоканальные линейные входы, такие как:латекс не отображает возврат каретки из MySQL Query


привет

до свидания


Этой строка затем помещается в базу данных mysql с помощью mysql_real_escape_string. Теперь я хочу взять эту строку и передать ее непосредственно в документ tex, но пустые строки (возврат каретки, я полагаю) не выводятся со строкой. Поэтому, когда это скомпилировано с латексом я получить выход


hellornrngoodbye


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

ответ

2

После нашего разговора в чате, вот что мы выяснили:

Вы использовали

shell_exec("cat ".$PATH."/LatexTemplate.tex | sed -e 's/LatexCode/$latexcode/' > ".$PATH."/TexFiles/Q$id.tex"); 

внутри PHP скрипт, чтобы вставить вход латекса, хранящийся в БД в файл шаблона и сохранить это. Где-то в этом процессе новые линии были отброшены.

Лучшим решением было бы заменить оболочку exec эквивалентом PHP, который загружает файл в строку, выполняет замену строки с помощью строки (unescaped) и сохраняет ее в другом файле.

+0

Я попробовал это: '$ str = str_replace ('\ r \ n', '\\', $ str);' но все, что я получил, было вставлено в мой tex-файл: _hello \ goodbye_. Это неверно. – Geoff

+0

Geoff: Это потому, что вы выполняете замену на языке, который использует '\\' как escape-символ. См. Мое редактирование :) – blubb

+0

Да, я тоже это пробовал, и в этом случае он работает! BUT Предположим, что я хочу продолжить с \ begin {enumerate} (CR) \ item hi (CR) \ end {enumerate}, тогда я получаю \\ в моем tex-файле перед \ item, а затем это не работает. Поэтому в идеале я бы хотел, чтобы пустое пространство/возврат каретки анализировалось в источнике tex, а не симулировало его с помощью \\. – Geoff

Смежные вопросы