________fear_of_underscores

воскресенье, 10 июня 2012 г.

Формулы, подсветка синтаксиса и все-все-все

Так как планирую писать здесь не только о музыке, но и о технике, жизненно необходима поддержка TeX-а и подсветки синтаксиса для языков, которыми пользуюсь или планирую пользоваться: F#, C#, Erlang, Matlab/Octave и Python.

Встроил MathJax:
\[P(E) = {n \choose k} p^k (1-p)^{n-k}\tag{Cthulhu fhtagn!}\label{ref1}\]
Вот таким скриптом:
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
  TeX: { equationNumbers: { autoNumber: "all" } }
});
</script>
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript">
</script>

В комментах тоже, конечно, работает, надо просто писать LaTeX-выражения вот так:
\[ ... \] для отдельных формул
\( ... \) для инлайна
И номера с ссылочками: \ref{ref1}, тоже. С разными — \eqref{ref1}.
А чтобы этот скрипт был вам нормально виден, надо было ещё вот это вставить:
<link href="http://alexgorbatchev.com/pub/sh/current/styles/shCore.css" rel="stylesheet" type="text/css"></link>
<!--SYNTAX HIGHLIGHTER BEGINS-->
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeFadeToGrey.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js' type='text/javascript'/>
<script src='http://sites.google.com/site/lakretsh/home/brushErlang.js' type='text/javascript'/>
<script src='http://sites.google.com/site/lakretsh/home/brushFSharp.js' type='text/javascript'/>
<script language='javascript'>
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.config.clipboardSwf = &#39;http://alexgorbatchev.com/pub/sh/current/scripts/clipboard.swf&#39;;
SyntaxHighlighter.all();
</script>
<style type="text/css">
.syntaxhighlighter { overflow-y: hidden !important; }
</style>
<!--SYNTAX HIGHLIGHTER ENDS-->

Грязный трюк с brush для F# и Erlang я подсмотрел на сайте другого F#-разработчика xD

Кстати, Erlang:
%% qsort:qsort(List)
%% Sort a list of items
-module(qsort).     % This is the file 'qsort.erl'
-export([qsort/1]). % A function 'qsort' with 1 parameter is exported (no type, no name)
 
qsort([]) -> []; % If the list [] is empty, return an empty list (nothing to sort)
qsort([Pivot|Rest]) ->
    % Compose recursively a list with 'Front' for all elements that should be before 'Pivot'
    % then 'Pivot' then 'Back' for all elements that should be after 'Pivot'
    qsort([Front || Front <- Rest, Front < Pivot])
    ++ [Pivot] ++
    qsort([Back || Back <- Rest, Back >= Pivot]).

F#:
let asynctask = async
{
    let req = WebRequest.Create(url)
    let! response = req.GetResponseAsync()
    use stream = response.GetResponseStream()
    use streamreader = new System.IO.StreamReader(stream)
    return streamreader.ReadToEnd()
}

Потом надо будет добавить ещё Matlab, но пока лень и наплевать)

Печалька заключается только в том, что приходится редактировать код в HTML-редакторе, когда пишу посты с кодом — всякое такое:
<pre class="brush:html">
</pre>

<pre class="brush:f#">
</pre>

<pre class="brush:erl">
</pre>
добавлять на другой вкладке + для публикации html надо использовать вот такие штуки. Ну да ничего.

P.S. Для готовящихся постов по PGM я также добавил экспандеры.
Код экспандера в экспандере! :)
JavaScript:
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'/>
<script type='text/javascript'>
$(document).ready(function()
{
  $(&quot;.exp-content&quot;).hide();
  $(&quot;.exp-head&quot;).click(function()
  {
    $(this).next(&quot;.exp-content&quot;).slideToggle(200);
  });
});
</script>
CSS:
.exp-head {
padding: 1px 15px;
cursor: pointer;
margin: 5px 0px;
font-weight: bold;
}

.exp-content {
padding: 2px 15px;
background-color: whiteSmoke;
}

.exp {
margin: 0px 30px;
background-color: whiteSmoke;
color: black;
}
Использование:
<div class="exp">
<div class="exp-head">Заголовок</div>
<div class="exp-content">Текст</div>
</div>

1 комментарий:

  1. Пример инлайнового выражения: \(\frac{x+y}{y-z}\) в комментарии.

    ОтветитьУдалить