К своей статье
Калькуляторы с обратной польской нотацией мне хотелось сделать красивую иллюстрацию с графиками аппроксимирующего полинома синуса. При этом мне было мало одного gnuplot, так как в подписи осей мне хотелось добавить живую формулу.
Попутно мне нужна была красивая таблица расчёта тригонометрических функций и их десятичные значения. Такую таблицу тоже пришлось делать самому.
Чтобы это реализовать мне пришлось разобраться с Latex. Много раз пытался освоить эту систему вёрстки, и постоянно не хватало мотивации. Как я понял, лучший способ что-то освоить - это иметь конкретную задачу и в рамках неё уже производить освоение.
В общем рассказываю о своём вливании в тему.
1. График синуса и аппроксимирующего полинома
Первое с чего я начал - это с графика синуса. Мне нужно было, чтобы в легендах была формула того, что отображается. И начал я с того что начал искать готовый пример.
И нашел его тут. Смысл в том, что часть функционала брал на себя gnuplot, который генерировал tex-файл, который компилировался уже pdflatex
Там достаточно много символов в строке Makefile. Самое сложное было это установить корректно LATEX и заставить его работать. Это прям отдельный квест, я гуглил каждую ошибку и доустанавливал недостающие пакеты. Это единственная программа с которой у меня было столько проблем и танцев с бубном, чтобы просто заставить её работать. Сейчас уже не вспомню всех телодвижений, но даже повторить этот make у меня ушло часа два гуглежа. Сейчас попробовал на другой системе, и второй раз этот путь пройти не готов. Но приведу пример файла test.plt, который содержал график.
set grid
set yrange [-5:5]
set xrange [-3*pi:3*pi]
plot sin(x) title "$\\sin(x)$", \
x * ( 1 + x**2 * (0.00761 * x**2 - 0.16605)) title "$sin(x) = x \\cdot (1+x^{2}\\cdot(0,00761\\cdot x^{2}-0,16605))$"
Но мне показалось, что как-то муторно иметь два файла, и фактически всё равно вызывается LATEX. Плюс, мне хотелось получить точки -π/2 и π/2, что показать место где полином расходится с синусом и показать подписи на графике функций. Поэтому я решил немного почитать матчасть "
Набор и вёрстка в системе
LATEX" и сделал следующий скрипт.
\documentclass[8pt,a4paper,dvipsnames]{article}
\usepackage[utf8]{inputenc}
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm]{geometry}
\usepackage{graphicx,gnuplottex,amsmath}
\usepackage{xcolor}
\begin{document}
\begin{figure}[htp]
\centering
\begin{gnuplot}[scale=1.3, terminal=epslatex, terminaloptions=color dashed]
set grid
set yrange [-5:5]
set xrange [-3*pi:3*pi]
set xtics ("-2$\\pi$" -2*pi, "-$\\pi$" -pi, "-$\\dfrac{\\pi}{2}$" -pi/2, 0, "$\\dfrac{\\pi}{2}$" pi/2,"$\\pi$" pi, "2$\\pi$" 2*pi)
plot sin(x) title "$\\sin(x)$", \
x * ( 1 + x**2 * (0.00761 * x**2 - 0.16605)) title "$sin(x) = x \\cdot (1+x^{2}\\cdot(0,00761\\cdot x^{2}-0,16605))$"
\end{gnuplot}
\end{figure}
\end{document}
И всё успешно получилось.
2. Таблица
С таблицей синусов всё было проще и сложнее одновременно. Таблицу синусов я
нашёл сразу готовой. Надо было только в начале и в конце добавить:
% Automatically added code
\documentclass{article}
\usepackage{amsmath}
...
\end{document}
% End of automatically added code
И получился такой вот чудесный результат.
Как можно видеть, что таблица готовая. Но сложности начались тогда, когда мне захотелось изменить размеры ячеек по высоте, ширине и выравнивание в ячейке. Чтение мануалов мне мало помогло, а погружаться в глубины латеха мне не хотелось. Поэтому решил, что и так сойдёт, и вышел у меня такой вот скрипт.
% Automatically added code
\documentclass{article}
\usepackage{amsmath}
\begin{document}
% End of automatically added code
\subsubsection*{Values of sine functions for common angles.}
%\begin{tabular*}{\linewidth}[b]{*{6}{|c @{\extracolsep\fill}}|}
\begin{tabular*}{\linewidth}[b]{*{6}{|c @{\extracolsep\fill}}|}
\hline Angle in Degrees &0$^\circ$& 30$^\circ$ & 45$^\circ$ & 60$^\circ$ & 90$^\circ$\\
\hline Angle in Radians &0$^c$ & $\dfrac{\pi}{6}$& $\dfrac{\pi}{4}$ & $\dfrac{\pi}{3}$ & $\dfrac{\pi}{2}$\\
\hline $\sin \theta$ & 0 & $\dfrac{1}{2}$ &$\dfrac{1}{\sqrt{2}}$ & $\dfrac{\sqrt{3}}{2}$& 1\\[15pt]
\hline $\sin \theta$, Calculated values & 0 & 0,5 & 0,7071.. & 0,8660.. & 1\\
\hline
\end{tabular*}
% Automatically added code
\end{document}
% End of automatically added code
В общем, вёрстка LATEX у меня вызвала противоречивые чувства. После подхода linux, что всё скриптовое - это намного более удобного того же MS Word. Но, куча проблем с совместимостями, непонимание что же происходит, отсутствие мгновенного просмотра результата сильно ограничивают применение инструмента. Но мне понравилось, что можно делать крутые научные статьи, крутую вёрстку, прям как в даташитных пдфках.