понедельник, 23 октября 2017 г.

Математика и подсветка кода в Blogger

Давно хотелось писать интересные посты с уравнениями и сопутствующими им кодами, например, вот так:


Статистическая сумма (или статсумма) (обозначается $Z$, от нем. Zustandssumme — сумма по состояниям) — важная величина в статистической физике, содержащая информацию о термодинамических свойствах системы. Свободная энергия, энтропия и давление, могут быть выражены через статистическую сумму и её производные. Рассчитаем для справочной таблицы статсуммы молекулы HD при температурах от 10.0 до 300 К, воспользовавшись справочными данными о моменте инерции молекулы $I=0.61\cdot10^{-47}\text{кг/м}^2$. Вращательная статсумма равна $$ \begin{equation} Z=\sum_{J=0}^{\infty}(2J+1)\cdot\exp(-\frac{J(J+1)\hbar^2}{2IkT}) \end{equation} $$ где $J$ -- номер уровня, $\hbar\approx1.0545718\cdot10^{-34}\text{Дж}\cdot\text{c}$ -- редуцированная постоянная Планка и $k\approx1.38064852\cdot10^{-23}\text{Дж/K}$ -- константа Больцмана. Введём характеристическую вращательную температуру HD $$\theta=\frac{\hbar^2}{2Ik}$$ и вычислим статсумму по формуле $$ \begin{equation} Z(T)=\sum_{J=0}^{\infty}(2J+1)\cdot\exp(-J(J+1)\frac{\theta}{T}) \end{equation} $$
 
/*
  Фундаментальные физические константы 
  http://physics.nist.gov/constants
  k=1.38064852*10^(-23); h=1.054571800*10^(-34);
*/

/* Характеристическая температура */
theta = 1.054571800^2/(2*0.61*1.38064852)*10^(-34*2+47+23)

/* Функция расчёта статсуммы */
define zsum(t,n) {
  sum=1.0
  for(j=1; j<n; j++) {
    p=j*(j+1)*theta/t
    if(p>50) break
    sum+=(2*j+1)*e(-p)
  }
  return sum
}
/* Расчёт справочной таблицы */
for(t=10; t<300; t+=10) {
  print round(zsum(t,50),8),\ 
  " at T =", t, "\n"
}

Вот что понадобилось для этого сделать, по шагам.
  1. В правом верхнем углу страницы https://yourblog.blogspot.ru/ видим строку Новое сообщение  Настроить  Выйти
  2. Идём в меню Настроить
  3. Настраиваем оформление блога. Должны быть слова: "Выберите базовую тему и настройте ее фон, макет, цвета, шрифты и другие элементы оформления."
  4. Жмём кнопку "Изменить HTML"
  5. Видим HTML-код темы. Находим строку <title><data:blog.pageTitle/></title>
  6. После неё вставляем поддержку MathJax
  7. 
    
  8. Сохраняем тему
  9. Идём назад, для настройки темы на мобильных устройствах, жмём шестерёнку
  10. Ставим "Выбор темы для мобильных устройств" - Дополнительно. Оформление для смартфонов сгенерируется по образу темы десктопа.
В качестве источника src="MathJax.js" Вы можете указать src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_CHTML". Более того, пожалуй, это единственная возможность. Я пробовал подсовывать свой MathJax.js пользуясь функционалом Dropbox, но не преуспел в этом.
По аналогии добавляется SyntaxHighlighter:


 




 


Однако, используя его и математику, придётся писать блог главным образом в HTML коде, иначе сложно добиться хорошего результата. Математика вставляется кодом LaTeX:
$$
\begin{equation}
Z=\sum_{J=0}^{\infty}(2J+1)\cdot\exp(-\frac{J(J+1)\hbar^2}{2IkT})
\end{equation}
$$

А программы - внутри тегов
<pre class="brush: bc"> 
/* Функция расчёта статсуммы */
define zsum(t,n) {
  sum=1.0
  for(j=1; j<n; j++) {
    p=j*(j+1)*theta/t
    if(p>50) break
    sum+=(2*j+1)*e(-p)
  }
  return sum
}
</pre>

Комментариев нет:

Отправить комментарий