diff options
-rw-r--r-- | .gitmodules | 6 | ||||
-rw-r--r-- | assets/css/local.css (renamed from local.css) | 0 | ||||
-rw-r--r-- | ikiwiki.yaml | 8 | ||||
-rwxr-xr-x | lib/IkiWiki/Plugin/mathjax.pm | 74 | ||||
-rw-r--r-- | meta.md | 2 | ||||
-rw-r--r-- | research/computing/suckless/sites.md | 7 | ||||
-rw-r--r-- | research/economics/valor-social.md | 60 | ||||
-rw-r--r-- | templates/page.tmpl | 6 | ||||
m--------- | vendor/MathJax | 0 | ||||
-rw-r--r-- | vendor/bootstrap/css/bootstrap-responsive.css (renamed from bootstrap/css/bootstrap-responsive.css) | 0 | ||||
-rw-r--r-- | vendor/bootstrap/css/bootstrap-responsive.min.css (renamed from bootstrap/css/bootstrap-responsive.min.css) | 0 | ||||
-rw-r--r-- | vendor/bootstrap/css/bootstrap.css (renamed from bootstrap/css/bootstrap.css) | 0 | ||||
-rw-r--r-- | vendor/bootstrap/css/bootstrap.min.css (renamed from bootstrap/css/bootstrap.min.css) | 0 | ||||
-rw-r--r-- | vendor/bootstrap/img/glyphicons-halflings-white.png (renamed from bootstrap/img/glyphicons-halflings-white.png) | bin | 8777 -> 8777 bytes | |||
-rw-r--r-- | vendor/bootstrap/img/glyphicons-halflings.png (renamed from bootstrap/img/glyphicons-halflings.png) | bin | 12799 -> 12799 bytes | |||
m--------- | vendor/ikiwiki-plugin-mathjax | 0 |
16 files changed, 126 insertions, 37 deletions
diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..46a8d54 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "vendor/ikiwiki-plugin-mathjax"] + path = vendor/ikiwiki-plugin-mathjax + url = https://github.com/bk/ikiwiki-plugin-mathjax +[submodule "vendor/MathJax"] + path = vendor/MathJax + url = https://github.com/mathjax/MathJax.git diff --git a/local.css b/assets/css/local.css index b94d3f7..b94d3f7 100644 --- a/local.css +++ b/assets/css/local.css diff --git a/ikiwiki.yaml b/ikiwiki.yaml index 4780ec4..3467f1e 100644 --- a/ikiwiki.yaml +++ b/ikiwiki.yaml @@ -1,10 +1,10 @@ # IkiWiki::Setup::Yaml - YAML formatted setup file # # Setup file for ikiwiki. -# +# # Passing this to ikiwiki --setup will make ikiwiki generate # wrappers and build the wiki. -# +# # Remember to re-run ikiwiki --setup any time you edit this file. # # name of the wiki @@ -44,6 +44,7 @@ add_plugins: - sidebar - teximg - favicon +- mathjax # plugins to disable disable_plugins: - openid @@ -90,7 +91,7 @@ umask: 2 # group for wrappers to run in #wrappergroup: ikiwiki # extra library and plugin directory -libdir: '' +libdir: 'lib' # environment variables ENV: {} # time zone name @@ -212,6 +213,7 @@ pingurl: [] # mdwn plugin # enable multimarkdown features? #multimarkdown: 0 +multimarkdown: 1 # disable use of markdown discount? #nodiscount: 0 diff --git a/lib/IkiWiki/Plugin/mathjax.pm b/lib/IkiWiki/Plugin/mathjax.pm new file mode 100755 index 0000000..99b74c3 --- /dev/null +++ b/lib/IkiWiki/Plugin/mathjax.pm @@ -0,0 +1,74 @@ +package IkiWiki::Plugin::mathjax; + +use warnings; +use strict; +use IkiWiki 3.00; +use MIME::Base64; + +# Strategy: +## - filter replaces normal TeX delimiters with imath and dmath directives +## (perhaps while considering a mathconf directive); also, it adds a script +## block if there is any math on the page relevant. +## - preprocess handles the directives themselves. +## +## Later: config hooks for mathjax script tag and mathjax config block +## + +sub import { + hook(type => "filter", id => "mathjax", call => \&filter); + hook(type => "format", id=>"mathjax", call=> \&format); +} + +sub format { + my %params = @_; + my $content = $params{content}; + return $content unless $content =~ /\!\!mathjaxbegin/; #]/{{ + $content =~ s{\!\!mathjaxbegin-i!! (.*?)\s\!\!mathjaxend-i\!\!}{'\('.decode_base64($1).'\)'}ges; #{ + $content =~ s{\!\!mathjaxbegin-d!! (.*?)\s\!\!mathjaxend-d\!\!}{'\['.decode_base64($1).'\]'}ges; #{ + my $scripttag = _scripttag(); + $content =~ s{(</body>)}{$scripttag\n$1}i; #}{ + return $content; +} + +sub filter (@) { + my %params=@_; + my $content = $params{content}; + return $content unless $content =~ /\$[^\$]+\$|\\[\(\[][\s\S]+\\[\)\]]/; + # first, handle display math... + $content =~ s{(?<!\\)\\\[(.+?)(?<!\\)\\\]}{_escape_mathjax('d', $1)}ges; #};[} + $content =~ s{(?<!\\)\$\$(.+?)(?<!\\)\$\$}{_escape_mathjax('d', $1)}ges; #};[} + # then, the inline math -- note that it must stay on one line + $content =~ s{(?<!\\)\\\((.+?)(?<!\\)\\\)}{_escape_mathjax('i', $1)}ge; #};[} + # note that the 'parsing' of $..$ is extremely fragile + $content =~ s{(?<!\\)\$(.+?)(?<!\\)\$}{_escape_mathjax('i', $1)}ge; #};[} + return $content; +} + +sub _escape_mathjax { + my ($mode, $formula) = @_; + my %modes = qw/i inline d display/; + my $directive = "!!mathjaxbegin-$mode!! "; + $formula =~ s/"/"/g; + $formula =~ s/&/&/g; #"/}[{ + $formula =~ s/</</g; + $formula =~ s/>/>/g; #{" + $directive .= encode_base64($formula, " "); + $directive .= "!!mathjaxend-$mode!!"; + return $directive; +} + +sub _scripttag { + my $config = 'TeX-AMS_HTML'; # another possibility: TeX-AMS-MML_HTMLorMML + return '<script type="text/x-mathjax-config">' + . 'MathJax.Hub.Config({ TeX: { equationNumbers: {autoNumber: "AMS"} } });' + . '</script>' + . '<script async="async" type="text/javascript" ' + # Serving MathJax script locally + #. 'src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/MathJax.js?config=' + #. 'src="/js/MathJax.js?config=' + . 'src="/vendor/MathJax/es5/tex-chtml.js?config=' + . $config + . '"></script>'; +} + +1; @@ -33,7 +33,7 @@ See [keys](/keys). ### Technology -* This is a [statically-generated website](/static). +* This is a [statically-generated website](/research/suckless/sites). * That tries to implement [IndieWebCamp principles](http://indiewebcamp.com/principles). <!-- * Using the same tags from [Fluxo de Links](https://links.fluxo.info) so diff --git a/research/computing/suckless/sites.md b/research/computing/suckless/sites.md index 67149d5..5ca19d2 100644 --- a/research/computing/suckless/sites.md +++ b/research/computing/suckless/sites.md @@ -56,6 +56,13 @@ You can create passwordless SSH keys and use [rrsync](http://www.guyrutenberg.co Now simply run `make web_deploy` with the above mentioned `Makefile` do sync your static site! +## MathJax + +* [Setup Instructions for MathJax on Ikiwiki](https://www.math.cmu.edu/~gautam/sj/blog/20130930-ikiwiki/010-setup.html). +* [GitHub - bk/ikiwiki-plugin-mathjax: MathJax plugin for IkiWiki](https://github.com/bk/ikiwiki-plugin-mathjax). +* [GitHub - mathjax/MathJax: Beautiful and accessible math in all browsers](https://github.com/mathjax/MathJax). +* [MathJax documentation](https://docs.mathjax.org). + ## Ikiwiki references * [Ikiwiki](http://ikiwiki.info). diff --git a/research/economics/valor-social.md b/research/economics/valor-social.md index f12280c..7a68f88 100644 --- a/research/economics/valor-social.md +++ b/research/economics/valor-social.md @@ -118,10 +118,10 @@ perguntas, podemos recorrer a um mínimo de sistematização. Considerando um grupo social de _m_ pessoas, podemos definir a função *valor social* como sendo -[[!teximg code="S = \displaystyle\sum_{p=1}^{m}\frac{\left(p\ n_p\right)^{v}}{mr}"]] +$$S = \displaystyle\sum_{p=1}^{m}\frac{\left(p\ n_p\right)^{v}}{mr}$$ -onde [[!teximg code="n_p"]] é a quantidade de acordos existentes envolvendo _p_ -pessoas[4], cada acordo com viralidade[5] _v_ e _r < m_ é o número de +onde $n_p$ é a quantidade de acordos existentes envolvendo $p$ +pessoas[4], cada acordo com viralidade[5] $v$ e $r < m$ é o número de pessoas que *poderiam* [6] ter efetuado acordos mas que ficaram de fora (isto é, não fizeram acordo nenhum). O valor social assim definido exibe uma série de propriedades interessantes sob o ponto de vista das @@ -137,15 +137,15 @@ múltiplas partes possui maior ação coletiva (maior participação coletiva, maior coletividade) do que uma sociedade com acordos entre apenas poucas partes. -Já a quantidade _m_ de pessoas do grupo e o total _r_ de pessoas que não +Já a quantidade $m$ de pessoas do grupo e o total $r$ de pessoas que não participaram de nenhum tipo de acordo contribuem na diminuição do valor -social: se poucas pessoas (em relação ao total _m_) fazem acordo, temos -uma sociedade com pouca ajuda múltipla e, portanto, para que _S_ atinja -valores significativos, é preciso que _m_ se torne quantitativamente -menor em relação aos valores dos componentes [[!textimg code="\left(p\ n_p\right)^{v}"]]. -O mesmo vale para _r_: os componentes devem ser mais significativos do +social: se poucas pessoas (em relação ao total $m$) fazem acordo, temos +uma sociedade com pouca ajuda múltipla e, portanto, para que $S$ atinja +valores significativos, é preciso que $m$ se torne quantitativamente +menor em relação aos valores dos componentes $\left(p\ n_p\right)^{v}$. +O mesmo vale para $r$: os componentes devem ser mais significativos do que a quantidade de pessoas que poderiam estar em acordos mas que -ficaram de fora, ou seja, _S_ leva em conta a inclusão ou exclusão +ficaram de fora, ou seja, $S$ leva em conta a inclusão ou exclusão social da ação coletiva[7]. Por fim, a viralidade potencializa a multiplicação de acordos: quanto @@ -165,25 +165,25 @@ sistemas dinâmicos. Por simplificação, podemos reescrever a equação anterior como -[[!teximg code="S = k\displaystyle\sum_{p=1}^{m}\left(p\ n_p\right)^{v}"]] +$$S = k\displaystyle\sum_{p=1}^{m}\left(p\ n_p\right)^{v}$$ -onde [[!teximg code="k = \frac{1}{mr}"]]. É claro que o valor de _k_ +onde $k = \frac{1}{mr}$. É claro que o valor de $k$ pode mudar num dado grupo social – por exemplo: mais pessoas ingressando ou saindo do grupo ou então com um aumento ou diminuição de protagonistas de acordos – mas podemos considerá-lo como constante num dado momemto, ou seja, -[[!teximg code="k = k(t)"]] e independente de outras variáveis. +$k = k(t)$ e independente de outras variáveis. O que realmente nos interessa agora, no entanto, é que chega um momento em que o grupo social está com tantos acordos que, da forma como -definimos na equação [eq:simples], _S_ começa a crescer absurdamente e +definimos na equação [eq:simples], $S$ começa a crescer absurdamente e já não passa a representar o valor efetivo de um corpo social onde a ajuda múltipla se faz presente. Em outras palavras: chega um momento em que as pessoas já estão tão endividadas de acordos a cumprir que mais dívidas não afetarão consideravelmente no seu comportamento de ajuda -múltipla. Para refrear o crescimento indiscriminado de _S_, +múltipla. Para refrear o crescimento indiscriminado de $S$, redefiniremos nossa função como -[[!teximg code="S = k\ ln\displaystyle\sum_{p=1}^{m}\left(p\ n_p\right)^{v}"]] +$$S = k\ ln\displaystyle\sum_{p=1}^{m}\left(p\ n_p\right)^{v}$$ onde _ln_ cumpre um amortecimento no crescimento da somatória, mostrando que o valor efetivo do grupo cresce logaritmicamente: temos um rápido @@ -191,16 +191,16 @@ crescimento do valor conforme os acordos se iniciam e se multiplicam e, conforme o endividamento social cresce, a sociedade atinge patamares de valor altos demais para que um maior acréscimo se torne significativo. -Temos que, pela própria definição, _S_ é uma função de estado, uma vez +Temos que, pela própria definição, $S$ é uma função de estado, uma vez que, definido um grupo social e suas interações a partir das variáveis -_n_, _m_, _v_, _r_, etc, temos que _S_ é um indicativo do estado do +$n$, $m$, $v$, $r$, etc, temos que $S$ é um indicativo do estado do sistema – indicando, por exemplo, se ele possui mais ou menos acordos (e qual a potência e alcance dos acordos) do que outro grupo social igualmente caracterizado. Além disso, obedece a -[[!teximg code="\frac{dS}{dt} \geq 0"]] +$$\frac{dS}{dt} \geq 0$$ -Portanto, chamaremos nossa última definição de _S_ (equação [eq:valor]) +Portanto, chamaremos nossa última definição de $S$ (equação [eq:valor]) como *entropia econômica do grupo social*. Tal entropia mede, inicialmente, *o grau de endividamento do corpo social.* O endividamento é então a única forma de acúmulo possível: uma vez que alguém ajuda @@ -231,7 +231,7 @@ tem um aumento indesejável, aqui se torna o comportamento almejado. Sendo os acordos diretos, isto é, não mediados, temos ainda mais descontrole: é importantíssimo que tais acordos não sejam mediados por bancos de dados. Por banco de dados entendemos qualquer iniciativa de -tentar *efetivamente* calcular _S_ para um dado grupo social (e não o +tentar *efetivamente* calcular $S$ para um dado grupo social (e não o registro pessoal que cada indivíduo mantiver a respeitodos acordos que participou). A mera existência de um banco de dados centralizado capaz de calcular a cada instante o valor social tem os seguintes riscos: @@ -254,7 +254,7 @@ de calcular a cada instante o valor social tem os seguintes riscos: É com esse sentido de oposição aos bancos de dados que estabelecemos o conceito de valor social: não nos interessa calcular efetivamente o -valor de _S_ para um dado grupo social e muito menos caracterizar cada +valor de $S$ para um dado grupo social e muito menos caracterizar cada grupo em função desses parâmetros, o que além de policialesco não representa o real valor social do grupo (afinal, nem discutimos as diferenças qualitativas de cada acordo). Queremos, ao contrário, mostrar @@ -305,30 +305,30 @@ Referências ou apoio mútuo (mas que eventualmente possa ter o mesmo significado). -2. É claro que o valores de _v_ podem ser estipulados em cada acordo. +2. É claro que o valores de $v$ podem ser estipulados em cada acordo. 3. Por *conservar valor* não queremos dizer que a moeda não sofre valorização e desvalorização, mas sim que a moeda “congela” trabalho. -4. Começamos nossa somatória com _p = 1_ pois, apesar de ser um caso +4. Começamos nossa somatória com $p = 1$ pois, apesar de ser um caso em princípio bizarro (uma pessoa fazendo acordo consigo mesmo), não deixa de ser uma possibilidade: posso, por exemplo, fazer um acordo comigo mesmo e, caso o cumpra, ajudarei mais pessoas, sendo caso clássico disso é a solidariedade de ex-viciados, por exemplo. Outro - argumento para manter _p = 1_ é a simplicidade. + argumento para manter $p = 1$ é a simplicidade. 5. Poderíamos, é claro, supor um sistema onde cada acordo tivesse uma - viralidade _v_ própria, mas a complexidade do cálculo seria + viralidade $v$ própria, mas a complexidade do cálculo seria desnecessária para esta primeira exposição do assunto. -6. Que fique claro: _r_ não inclui pessoas que não podem ajudar, mas +6. Que fique claro: $r$ não inclui pessoas que não podem ajudar, mas apenas as que podem mas que ficaram de fora dos acordos. -7. Alternativamente, poderíamos definir o divisor como _m^r_ ao invés - de _mr_, o que faria com que _S_ fosse muito mais sensível à +7. Alternativamente, poderíamos definir o divisor como $m^r$ ao invés + de $mr$, o que faria com que $S$ fosse muito mais sensível à inclusão ou exclusão social. Optamos, no entanto, por uma abordagem - em que _m_ e _r_ contribuem com igual teor. + em que $m$ e $r$ contribuem com igual teor. 8. Num sistema mais próximo da realidade teríamos trocentas outras variáveis. diff --git a/templates/page.tmpl b/templates/page.tmpl index 424d923..9fc2611 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -15,12 +15,12 @@ <TMPL_IF FAVICON> <link rel="icon" href="<TMPL_VAR BASEURL><TMPL_VAR FAVICON>" type="image/x-icon" /> </TMPL_IF> -<link rel="stylesheet" href="<TMPL_VAR BASEURL>bootstrap/css/bootstrap.min.css" type="text/css" /> -<link rel="stylesheet" href="<TMPL_VAR BASEURL>bootstrap/css/bootstrap-responsive.min.css" /> +<link rel="stylesheet" href="<TMPL_VAR BASEURL>vendor/bootstrap/css/bootstrap.min.css" type="text/css" /> +<link rel="stylesheet" href="<TMPL_VAR BASEURL>vendor/bootstrap/css/bootstrap-responsive.min.css" /> <TMPL_IF LOCAL_CSS> <link rel="stylesheet" href="<TMPL_VAR BASEURL><TMPL_VAR LOCAL_CSS>" type="text/css" /> <TMPL_ELSE> -<link rel="stylesheet" href="<TMPL_VAR BASEURL>local.css" type="text/css" /> +<link rel="stylesheet" href="<TMPL_VAR BASEURL>assets/css/local.css" type="text/css" /> </TMPL_IF> <TMPL_IF EDITURL> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="<TMPL_VAR EDITURL>" /> diff --git a/vendor/MathJax b/vendor/MathJax new file mode 160000 +Subproject 1335230503dddfeb0e07687308a55795d9c005e diff --git a/bootstrap/css/bootstrap-responsive.css b/vendor/bootstrap/css/bootstrap-responsive.css index fcd72f7..fcd72f7 100644 --- a/bootstrap/css/bootstrap-responsive.css +++ b/vendor/bootstrap/css/bootstrap-responsive.css diff --git a/bootstrap/css/bootstrap-responsive.min.css b/vendor/bootstrap/css/bootstrap-responsive.min.css index d1b7f4b..d1b7f4b 100644 --- a/bootstrap/css/bootstrap-responsive.min.css +++ b/vendor/bootstrap/css/bootstrap-responsive.min.css diff --git a/bootstrap/css/bootstrap.css b/vendor/bootstrap/css/bootstrap.css index 2f56af3..2f56af3 100644 --- a/bootstrap/css/bootstrap.css +++ b/vendor/bootstrap/css/bootstrap.css diff --git a/bootstrap/css/bootstrap.min.css b/vendor/bootstrap/css/bootstrap.min.css index c10c7f4..c10c7f4 100644 --- a/bootstrap/css/bootstrap.min.css +++ b/vendor/bootstrap/css/bootstrap.min.css diff --git a/bootstrap/img/glyphicons-halflings-white.png b/vendor/bootstrap/img/glyphicons-halflings-white.png Binary files differindex 3bf6484..3bf6484 100644 --- a/bootstrap/img/glyphicons-halflings-white.png +++ b/vendor/bootstrap/img/glyphicons-halflings-white.png diff --git a/bootstrap/img/glyphicons-halflings.png b/vendor/bootstrap/img/glyphicons-halflings.png Binary files differindex a996999..a996999 100644 --- a/bootstrap/img/glyphicons-halflings.png +++ b/vendor/bootstrap/img/glyphicons-halflings.png diff --git a/vendor/ikiwiki-plugin-mathjax b/vendor/ikiwiki-plugin-mathjax new file mode 160000 +Subproject 25435b6a1462626a2f713b78b2a348377b9ecaf |