2014-06-23

Wyrażenia matematyczne na stronach WWW - MathJAX


Biblioteka javascriptowa MathJAX umożliwia w łatwy sposób zamieszczanie wyrażeń matematycznych na stronach WWW, używając składni LaTeX-owej (możliwe jest także używanie składni MathML oraz ASCIIMathML, ale zostańmy przy LaTeX-u). MathJAX powstał w 2009 roku i jest rozwijany pod egidą Amerykańskiego Towarzystwa Matematycznego (American Mathematical Society, AMS - to ci od pakietu amsmath). Obecnie jest używany na wielu stronach WWW, m.in. na Wikipedii, arXiv, czy stronie Physical Review.

MathJAX ma tą przewagę nad standardem MathML że:
  • działa na większej ilości przeglądarek,
  • posługuje się prostą składnią LaTeX-ową a nie lasem znaczników jak MathML - przykład: odpowiednikiem LaTeX-owego $E=mc^2$ w MathML jest <math><mi>E</mi><mo>=</mo><mi>m</mi><msup><mi>c</mi><mn>2</mn></msup></math> (skonwertowane za pomocą edytora WIRIS)

Aby zacząć zabawę/pracę z MathJAX należy wpierw umieścić w kodzie HTML odnośnik do biblioteki:

<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script>

Oczywiście można ściągnąć bibliotekę MathJax.js (licencja Apache) na swój serwer i odpowiednio zmodyfikować ścieżkę, ale w przypadku Bloggera ta opcja odpada.

Dalej jest prosto - para znaczników \( i \) umożliwia wstawianie formuł matematycznych umieszczanych w linii tekstowej, zaś pary znaczników $$...$$ lub \[...\] umożliwiają wstawianie formuł matematycznych eksponowanych.

Przykład - poniższy kod:

Hamiltonian dla układu <i>N</i>-elektronowego ma postać:
\[ \hat H = \sum_{i=1}^N \hat h(i) + \sum_{i>j=1}^N \hat V_{ij} \]
gdzie \( \hat h(i) \) jest hamiltonianem jednoelektronowym zaś \( \hat V_{ij} \) jest operatorem oddziaływania elektron-elektron.

Macierze Pauliego:
$$
\sigma_x=
\begin{pmatrix}
0 & 1 \\
1 & 0\\
\end{pmatrix}
\qquad
\sigma_y=
\begin{pmatrix}
0 & -i \\
i & 0\\
\end{pmatrix}
\qquad
\sigma_z=
\begin{pmatrix}
1 & 0 \\
0 & -1\\
\end{pmatrix}
$$

daje w wyniku

Hamiltonian dla układu N-elektronowego ma postać:
\[ \hat H = \sum_{i=1}^N \hat h(i) + \sum_{i>j=1}^N \hat V_{ij} \]
gdzie \( \hat h(i) \) jest hamiltonianem jednoelektronowym zaś \( \hat V_{ij} \) jest operatorem oddziaływania elektron-elektron.

Macierze Pauliego:
$$
\sigma_x=
\begin{pmatrix}
0 & 1 \\
1 & 0\\
\end{pmatrix}
\qquad
\sigma_y=
\begin{pmatrix}
0 & -i \\
i & 0\\
\end{pmatrix}
\qquad
\sigma_z=
\begin{pmatrix}
1 & 0 \\
0 & -1\\
\end{pmatrix}
$$


Strona domowa projektu: www.mathjax.org

2014-06-13

Tworzenie wykresów naukowych w LaTeX-u za pomocą pgfplots, cz. 1

Jak wiadomo LaTeX potrafi wiele rzeczy związanych ze składem tekstu. Pakiet pgf/tikz umożliwia łatwe i eleganckie tworzenie różnorakich diagramów, rysunków i wykresów w kodzie LaTeXa. Powstał nawet pakiet pgfplots, będący rozszerzeniem pgf/tikz specjalnie poświęconym generowaniu wykresów. I ten właśnie pakiet chciałbym omówić.

Oczywiście chociaż pobieżne omówienie podstawowych funkcji pakietu pgfplots przerasta możliwości tego posta (a raczej serii postów, gdyż, jak można wywnioskować z tytułu, planuję ich więcej niż jeden) - w końcu oficjalny manual liczy sobie ponad 300 stron. Dlatego też postanowiłem stworzyć kilka przykładowych, "życiowych", wykresów i omówić pokrótce ich kod, tak aby każdy mógł dostosować go do swoich potrzeb.

Na pierwszy ogień idzie chemia :-)

Oto wykres (użyłem danych z Wikipedii)...


...a oto kod:


\begin{tikzpicture}[scale=1.5]
\begin{axis}[
title={Zależność rozpuszczalności NaCl oraz CuSO$_4\cdot$5H$_2$O od temperatury},
title style={text width=16em},
xlabel={Temperatura [\textcelsius]},
ylabel={Rozpuszczalność [g/100~g wody]},
xmin=0,xmax=100,
ymin=0,ymax=120,
legend pos=north west,
ymajorgrids=true,grid style=dashed
]

\addplot[color=red,mark=*]
coordinates {
(0,35.65)
(10,35.72)
(20,35.89)
(30,36.09)
(40,36.37)
(50,36.69)
(60,37.04)
(70,37.46)
(80,37.93)
(90,38.47)
(100,38.99)
};

\addplot[color=blue,mark=square]
coordinates {
(0,23.1)
(10,27.5)
(20,32)
(30,37.8)
(40,44.6)
(60,61.8)
(80,83.8)
(100,114)
};

\legend{NaCl,CuSO$_4\cdot$5H$_2$O}
\end{axis}
\end{tikzpicture}