рисование в TeX

рисование в TeX

от Людмила Татарникова -
Количество ответов: 16

Здравствуйте, уважаемые форумчане!

На Moodle 2.6.2 включен фильтр Формулы в формате TeX. Никаких дополнительных приложений не установлено.

Проблема возникла с рисованием отрезков. Пыталась строить их по этой справке командой (20,0){ \line(180,0)} -- пишет прямо в графическом боксе forbidden keyword. Приходится строить отрезки командой \bezier - получается и код длиннее, и нормальную горизонтальную линию не построишь (способ есть, но уж больно кривой), да ещё и среднюю точку приходится вычислять.

Подскажите, пожалуйста, куда копать. Может, я что-то в настройках недонастроила?

Использую рисунки TeX в тестовых вопросах типа Formulas -- в код TeX можно вставить значения переменных, уж больно "вкусная" возможность для обучающих задач.

С уважением, Людмила

В ответ на Людмила Татарникова

Re: рисование в TeX

от Vadim Tabunshchik -
Изображение пользователя Developers
пишет прямо в графическом боксе forbidden keyword

Это следствие того, что в Мудл команда \line занесена в черный список ($tex_blacklist).

Посмотреть весь список можно в файле /filter/tex/lib.php

Удалите \line из этого списка и сможете пользоваться командой улыбаюсь

В ответ на Vadim Tabunshchik

Re: рисование в TeX

от Людмила Татарникова -

Вадим, спасибо Вам огромное! Помогло улыбаюсь 

Ни за что не догадалась бы, что такая безобидная команда может оказаться в чёрном списке. Да и о чёрном списке, честно говоря, не подозревала )))

Спасибо! 

С уважением, Людмила

(приплясывая от радости, пошла исправлять картинки, благо, успела создать всего три штуки )))

В ответ на Vadim Tabunshchik

Re: рисование в TeX

от Alexey Piguzov -

Вадим, а зачем такой список нужен? Как-то влияет на производительность? Там ведь много еще команд, как узнать какие еще могут понадобиться пользователям? Можно ли его весь отключить и чем это грозит?

В ответ на Alexey Piguzov

Re: рисование в TeX

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Это грозит тем, что любой пользователь сможет включить в текст любой из системных файлов, в том числе файл с паролями и натройками веб-сервера и moodle. Попробуйте вставить в формулу \input{/var/www/config.php}

В ответ на Vadim Tabunshchik

Re: рисование в TeX

от Игорь М -

У меня с  графикой по прежнему нелады какие то - то ли что то не установил, то ли еще что...

Вообще все сделано как тут раньше описывал https://moodle.org/mod/forum/discuss.php?d=318384#p1277313 - включен только фильтр TeX, формулы отображаются без проблем, во всяком случае, которые я смог "изобрести". Но что касается графики - банально окружность или прямая - ни в какую. Попробовал отсюда же https://docs.moodle.org/26/en/Using_TeX_Notation_3#Lines - ни одна команда не срабатывает, даже 

$$ \circle(150) $$

 

 Во, он и тут не рисует... Кстати, с изменением цвета такая же ерунда - не меняет, выдает прямоугольники, как будто ссылка есть на картинку, а самой картинки нет

Вообще было бы очень здорово, если б подробно где то попунктно было написано, что нужно установить (и как) на сервер мудла, чтобы тех нормально все отображал. А то с бубном попляшешь - вроде заработало, потом кинешься в самый неподходящий момент - а что то не работает...

В ответ на Игорь М

Re: рисование в TeX

от Людмила Татарникова -

Надеюсь, опытные коллеги меня поправят, если я ошибаюсь. Пишу из своего опыта:

Чтобы рисовалась картинка, надо весь "код рисования" поместить в директиву \picture(150,100){код}. 

Для рисования окружности показанного Вами кода мало, надо перед ним ещё точку начала добавить: (100,100){\circle(50)}. Вообще, любая команда рисования начинается с указания начальной точки.

Проверьте вот такой код: $.$\picture(100){(50,50){\circle(80)} (10,10){\line(80,80)}}$.$ (только точки между долларами уберите).

Здесь, на этом форуме, насколько я понимаю, работает фильтр MathJax, который команды рисования не понимает.


Добавлено:

С цветом тоже работает: $.$\red \picture(100){(50,50){\circle(80)} (10,10){\line(80,80)}}$.$

Если речь о цвете символов в формулах, то во всех фильтрах работает команда \color. Пример: $.$\color{Blue}{x^2}+{\color{DarkRed}{2x}}-{\color{Green}1}$.$. В ней намного больше цветов и раскрашивать можно части формулы. Нашла где-то в вики, здесь процитировала таблицу из вики и вывела цвета, которые "сработали".


В ответ на Игорь М

Re: рисование в TeX

от Vadim Tabunshchik -
Изображение пользователя Developers
Попробовал отсюда же https://docs.moodle.org/26/en/Using_TeX_Notation_3#Lines - ни одна команда не срабатывает

На той странице команды для "огрызка" mimetex. В LaTeX/TexLive команды будут другие.

Например, для вывода линии под 45°: \begin{picture}(100,100)\put(0,0){\line(1,1){40,45}}\end{picture}

Людмила частично направила вас на путь истинный :)

Почитайте книгу Львовского "Набор и вёрстка в системе LATEX", глава 5 посвящена псевдографике

Вообще было бы очень здорово, если б подробно где то попунктно было написано, что нужно установить (и как) на сервер мудла, чтобы тех нормально все отображал

Уже всё давно подробно описано в оф. документации. Если что-то не работает, то это проблема отсутствующих (недоустановленных) пакетов/шрифтов в LaTeX/TexLive, неверной преамбулы в настройках фильтра Tex moodle, неверного синтаксиса при написании конструкции Tex.

Что касается "Во, он и тут не рисует..", то MathJax не работает с графикой без доп. расширения, например, такого: http://sonoisa.github.io/xyjax/xyjax.html

На "почитать": https://github.com/mathjax/MathJax-third-party-extensions/blob/master/xyjax/README.md

https://forum.dokuwiki.org/thread/12374

В ответ на Vadim Tabunshchik

Re: рисование в TeX

от Игорь М -

УРА! По книге Львовского все примеры из книги сработали, псевдографика рисуется. MathJax я в итоге вовсе отключил, оставил только фильтр ТеХ, чтобы не было путаницы с синтаксисами. Уж если я сколько бьюсь с этим, то преподавателям математики, которые это впервые сейчас увидят, вообще сложно будет. А одна уже "работу на дом, на праздники" взяла.

А вот что касаемо $.$\color{Blue}{x^2}+{\color{DarkRed}{2x}}-{\color{Green}1}$.$ - с этим увы - ни в какую не создается. Как и с кириллицей ничего не получается грущу 

В итоге набранное вот так (попробовал разные варианты, парочка и из http://izido.ru/mod/book/view.php?id=5726&chapterid=1311#%D0%A6%D0%B2%D0%B5%D1%82%D0%B0):

 

Отображается вот так

 

Может, что с синтаксисом, действительно? 

Вообще устанавливал все по apt-get install imagemagick ghostscript texlive texlive-fonts-extra texlive-lang-cyrillic cm-super 

Единственное - преамбула осталась старой, может, в ней или черном списке что то подправить? Но почему то когда я преамбулу ставлю как, например, тут https://moodle.org/mod/forum/discuss.php?d=228882#p995273 То у меня вовсе ничего не отображается. Ставлю по умолчанию - возвращаемся к тому, что есть. И, кстати, когда выполняю 

apt-get install imagemagick ghostscript texlive texlive-fonts-extra texlive-lang-cyrillic cm-super

То "Исправить в /etc/texmf/texmf.d/05TexMF" не получается, т.к. такого файла там в принципе нет. 

 

 

 

В ответ на Игорь М

Re: рисование в TeX

от Vadim Tabunshchik -
Изображение пользователя Developers
\color{Blue}{x^2}+{\color{DarkRed}{2x}}-{\color{Green}1}

Это будет криво работать с mimetex (криво, т. к. вся формула будет зеленая), но не с LaTeX. LaTeX нужно настраивать, т. е., прописать в преамбуле использование пакета \usepackage{color} и определить нестандартные цвета, стандартные (blue, red, green, etc) и так будут работать. Свой цвет прописывается так: \definecolor{darkorchid}{rgb}{0.6, 0.2, 0.8} (цвета см. http://latexcolor.com/) Названия цветов писать с маленькой буквы. Включите режим отладки на сайте и проверяйте синтаксис на странице /filter/tex/texdebug.php. Там видно и ошибку, по ней можно погуглить.

Пример:

ris 1

 

Кириллица в LaTeX работает без всяких \cyr с транслитом и \text. \cyr+транслит - это для mimetex, \text - нужен для переключения в режим набора простого текста для смены шрифта, начертания и т. д. Естественно, в LaTeX должны быть установлены кириллические шрифты.

Пример:

  1. При наборе $$Может, что с синтаксисом, действительно?$$ результатом будет ris
    Чтобы слова не сливались, нужно тильду между ними вставлять: Может, что~с~синтаксисом, действительно?
  2. При наборе $$\text{Может, что с синтаксисом, действительно?}$$ результат такой: 02

Разница понятна? Т. е., при наборе формул, где символы, индексы могут быть кириллические, не нужно никакого \text, при вставке текстового пояснения между формулами переключаемся в набор простого текста, чтобы шрифт отличался.

И последнее: нужно, чтобы mimetex тоже работал, проверить можно опять же на странице /filter/tex/texdebug.php. Тогда то, что не может обработать LaTeX, попытается сделать mimetex. У меня есть страницы, где половина формул выводится LaTeX-ом, половина - mimetex. Попробуйте команду \calendar улыбаюсь))

Да, забыл сказать: в суммах, лимитах, интегралах при использовании LaTeX перед индексами добавляйте \limits, вот так: \sum\limits_{i=1}^n

Формула будет красивше улыбаюсь

В ответ на Vadim Tabunshchik

Re: рисование в TeX

от Игорь М -

Уффф... Блин блинский...

В общем, оказывается, у меня не был прописан путь к mimetex. Прописал /var/www/mimetex/mimetex.linux - вроде все заработало, кроме... 

\color{Blue}{x^2}+{\color{DarkRed}{2x}}-{\color{Green}1}

Это стало отображаться, но действительно - только зеленым. Установка преамбулы \usepackage{color} ничего не дала. Попытка протестировать в texdebug.php приводит к тому, что по пункту Show a graphic image of the algebraic expression rendered with mimetex. - выдает зеленую формулу, а по пункту 4.Show a graphic image of the algebraic expression rendered with Tex/Ghostscript. выдает ошибку Error creating image, see command execution output for more details.  Попытался погуглить, но вышли куча англоязычных сайтов, даже форум по Мудл https://moodle.org/mod/forum/discuss.php?d=196726 , но если я правильно понял - там говорят установить ImageMagick или Ghostscript - но у меня Ghostscript и так установлен... Проверка по $$\text{Может, что с синтаксисом, действительно?}$$ выдает ту же самую ошибку. Через cyr нормально стало работать. В общем, я так понимаю, где то в LaTEX надо что то настроить, но где - не понимаю.  

 

Так, стоп... По \color{blue}{x^2}+{\color{red}{2x}}-{\color{green}1} заработало... Видимо, я с синтаксисом нагрубил где то раньше... А вот \text{Может, что с синтаксисом, действительно?} ну, в общем, по русски - по прежнему не хочет. Как шрифты ставить - я же и так полный пакет латекса ставил, а там все шрифты есть, если я правильно понимаю?

В ответ на Игорь М

Re: рисование в TeX

от Vadim Tabunshchik -
Изображение пользователя Developers
по пункту 4.Show a graphic image of the algebraic expression rendered with Tex/Ghostscript. выдает ошибку Error creating image

Ещё раз прочтите первый абзац моего пред. сообщения. DarkRed не распознается Tex-ом, пока вы не определите этот цвет в преамбуле (в настройках фильтра Tex в админке). Только стандартные цвета будут работать без доп. указания в преамбуле: white, black, red, green, blue, cyan, magenta, yellow. Всё. Остальное нужно прописывать: \definecolor{DarkRed}{rgb}{0.55, 0.0, 0.0}, тогда сработает и \color{DarkRed}{2x}

texdebug же пишет ошибку: ! LaTeX Error: Undefined color `DarkRed'.

Проверка по $$\text{Может, что с синтаксисом, действительно?}$$ выдает ту же самую ошибку.

Выполните пункт 5 texdebug и внимательно прочтите весь вывод, там будет написано, что нет шрифта. См. тут: https://moodle.org/mod/forum/search.php?id=25&search=%2Fvar%2Ftmp%2Ftexfonts

В ответ на Vadim Tabunshchik

Re: рисование в TeX

от Игорь М -

Да да да, сейчас со шрифтами разбираюсь

В ответ на Игорь М

Re: рисование в TeX

от Игорь М -

Кстати, 5 пункт дебагера выдал

Checking executables

latex executable (/usr/bin/latex) is readable
dvips executable (/usr/bin/dvips) is readable
convert executable (/usr/bin/convert) is readable
dvisvgm executable (/usr/bin/dvisvgm) is readable

base filename for expression is 'a639d8413a91bb74c765a368664edb4f'

Processing TeX expression:

\text{Может, что с синтаксисом, действительно?}
$ '/usr/bin/latex' --interaction=nonstopmode --halt-on-error /var/www/moodledata/temp/latex/a639d8413a91bb74c765a368664edb4f.tex
OUTPUT: This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian)
 restricted \write18 enabled.
entering extended mode
(/var/www/moodledata/temp/latex/a639d8413a91bb74c765a368664edb4f.tex
LaTeX2e <2011/06/27>
Babel <3.9h> and hyphenation patterns for 78 languages loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo))
(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty
(/usr/share/texlive/texmf-dist/tex/latex/base/latin1.def))
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty
For additional information on amsmath, use the `?' option.
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty))
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty)
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty))
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty)
(/usr/share/texlive/texmf-dist/tex/latex/base/latexsym.sty)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/dvips.def)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/dvipsnam.def))
(./a639d8413a91bb74c765a368664edb4f.aux)
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd)
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd)
(/usr/share/texlive/texmf-dist/tex/latex/base/ulasy.fd)

! LaTeX Error: Command \DH unavailable in encoding OT1.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H   for immediate help.
 ...

l.9 ...�ксисом, действительно?}
                                                   $
No pages of output.
Transcript written on a639d8413a91bb74c765a368664edb4f.log.
RETURN CODE: 1
$ '/usr/bin/dvips' -E /var/www/moodledata/temp/latex/a639d8413a91bb74c765a368664edb4f.dvi -o /var/www/moodledata/temp/latex/a639d8413a91bb74c765a368664edb4f.ps
OUTPUT: 
RETURN CODE: 1
$ '/usr/bin/convert' -density 240 -trim /var/www/moodledata/temp/latex/a639d8413a91bb74c765a368664edb4f.ps /var/www/moodledata/temp/latex/a639d8413a91bb74c765a368664edb4f.png 
OUTPUT: 
RETURN CODE: 1
В ответ на Игорь М

Re: рисование в TeX

от Vadim Tabunshchik -
Изображение пользователя Developers
(/usr/share/texlive/texmf-dist/tex/latex/base/latin1.def))

Преамбулу свою покажите. Вы её, наверное, по умолчанию оставили, раз latex пытается использовать кодировку latin и шрифт OT1.

Для использования кириллицы нужно менять преамбулу на такое, приблизительно:

\usepackage[utf8x]{inputenc}
\usepackage[warn]{mathtext}
\usepackage[T1,T2A]{fontenc}
\usepackage{color}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[english,russian]{babel}
\RequirePackage{mathtext,amsmath,amssymb,latexsym}

Поищите по форуму, для Debian преамбулу выкладывал Вадим Дворовенко

Потом, если выдаст сообщение типа "! Font T2A/cmr/m/n/12=larm1200 at 12.0pt not loadable: Metric (TFM) file not found.", попробуйте сгенерировать недостающий шрифт командой mktextfm larm1200

Если не выйдет, см. тут

В ответ на Vadim Tabunshchik

Re: рисование в TeX

от Игорь М -

Да, преамбула стандартная, только я добавил \usepackage{color}

У меня серверная Убунта, что Вы предложили - у меня почему то все наперекосяк стало генерироваться, а которую выкладывал Вадим Дворовенко я находил, но по ней не генерируется вообще ничего... Все, перехожу в ту тему, тут все таки по графике...