Initial dev (look at history of master for older)

This commit is contained in:
Yann Esposito (Yogsototh) 2010-10-05 16:17:54 +02:00
parent 97426fab5f
commit e091be8557
30219 changed files with 117496 additions and 0 deletions

1
Rakefile Normal file
View file

@ -0,0 +1 @@
require 'nanoc3/tasks'

116
Rules Normal file
View file

@ -0,0 +1,116 @@
#!/usr/bin/env ruby
# engendrement des fichiers html
# page d'Accueil
#route '/' do
# '/index.html'
#end
# CSS
compile '/css/*' do
filter :no_custom_css
filter :sass
filter :rainpress
end
route '/css/*' do
'/Scratch/assets' + item.identifier.chop + '.css'
end
# compile '/css/*', :rep => :mozilla do
# filter :mozilla
# filter :sass
# filter :rainpress
# end
# route '/css/*', :rep => :mozilla do
# '/Scratch/assets' + item.identifier.chop + '_mozilla.css'
# end
# compile '/css/*', :rep => :webkit do
# filter :webkit
# filter :sass
# filter :rainpress
# end
# route '/css/*', :rep => :webkit do
# '/Scratch/assets' + item.identifier.chop + '_webkit.css'
# end
compile '/img/*' do
end
route '/img/*' do
'/Scratch/assets' + item.identifier.chop + '.png'
end
compile '/css/raw/*' do
end
route '/css/raw/*' do
'/Scratch' + item.identifier.sub(/raw\//,'').chop + '.css'
end
# JS
compile '/js/*' do
end
route '/js/*' do
'/Scratch/assets' + item.identifier.chop + '.js'
end
compile '/html/*' do
# item[:extension] returns 'html.erb' for multi-dotted filename
ext = item[:extension].nil? ? nil : item[:extension].split('.').last
filter :ultraviolet # must be before kramdown
filter :graph
filter :description
if ext == 'erb'
filter :erb
elsif ext == 'haml' || ext.nil?
filter :haml
elsif ext == 'md' || ext == 'markdown'
filter :erb
filter :kramdown
filter :math_repair # after kramdown
else
raise "Filter is not configured for #{item.identifier} in Rules file."
end
filter :multicorps # must be before firsthi
filter :firsthi # must be after multicorps
filter :frenchspace
filter :ytypo
# filter :yabbreviations
filter :footnotes
if item[:kind] == 'article'
layout 'article'
elsif not item[:layout].nil?
layout item[:layout]
else
layout 'default' unless item[:layout] == "none"
end
end
route '/html/*' do
'/Scratch' + item.identifier.sub('/html','') + 'index.html'
end
# feed
compile '/xml/*' do
layout 'feed'
end
route '/xml/en/*' do
'/Scratch/en/blog/feed/feed.xml'
end
route '/xml/fr/*' do
'/Scratch/fr/blog/feed/feed.xml'
end
compile '/sitemap/*' do
layout 'sitemap'
end
route '/sitemap/*' do
'/Scratch/sitemap.xml'
end
layout '*', :erb

48
config.ru Normal file
View file

@ -0,0 +1,48 @@
require 'rubygems'
require 'rack'
require 'rack/contrib'
require 'rack-rewrite'
require 'mime/types'
use Rack::Deflater
use Rack::ETag
module ::Rack
class TryStatic < Static
def initialize(app, options)
super
@try = ([''] + Array(options.delete(:try)) + [''])
end
def call(env)
@next = 0
while @next < @try.size && 404 == (resp = super(try_next(env)))[0]
@next += 1
end
404 == resp[0] ? @app.call : resp
end
private
def try_next(env)
env.merge('PATH_INFO' => env['PATH_INFO'] + @try[@next])
end
end
end
use Rack::Rewrite do
r302 %r{/(Softwares.*)}, 'http://web.me.com/yann.esposito/$1'
r302 %r{/(Perso.*)}, 'http://web.me.com/yann.esposito/$1'
end
use Rack::TryStatic,
:root => "output", # static files root dir
:urls => %w[/], # match all requests
:try => ['.html', 'index.html', '/index.html'] # try these postfixes sequentially
errorFile='output/Scratch/en/error/404-not_found/index.html'
run lambda { [404, {
"Last-Modified" => File.mtime(errorFile).httpdate,
"Content-Type" => "text/html",
"Content-Length" => File.size(errorFile).to_s
}, File.read(errorFile)] }

88
config.yaml Normal file
View file

@ -0,0 +1,88 @@
---
data_sources:
- items_root: /
layouts_root: /
type: filesystem_unified
output_dir: output
ultraviolet_theme: "twilight"
base_url: "http://yannesposito.com"
author_uri: "http://yannesposito.com"
# les langues
languages:
- fr
- en
# les formats de date en fonction de la langue
dateFormat:
fr: "%d/%m/%Y"
en: "%m/%d/%Y"
# le dictionnaire pour les mots communs
translations:
author:
fr: "auteur"
en: "author"
langue:
fr: "langue"
en: "language"
switchTo:
fr: "en Français"
en: "in English"
clickForComment:
fr: "Commentaires"
en: "Comments"
liens:
fr: "liens"
en: "links"
telecharger:
fr: "télécharger"
en: "download"
nojsclickme:
fr: "Javascript semble désactivé ;<br/> cliquez ici"
en: "Javascript seems disabled <br/> click on me"
nextArticles:
fr: "articles suivants"
en: "next entries"
next:
fr: "suivant"
en: "next"
previousArticles:
fr: "articles précédents"
en: "previous entries"
previous:
fr: "précédent"
en: "previous"
comment:
fr: "commentaires"
en: "comments"
onlyin:
fr: "Seulement en"
en: "Only in"
whatsthis:
fr: "Qu'est-ce que c'est ?"
en: "What's this?"
loading:
fr: "Chargement en cours..."
en: "loading..."
entirely_done_with:
en: "Entirely done with"
fr: "Site entièrement réalisé avec"
and:
en: "and"
fr: "et"
created_at:
en: "Created"
fr: "Écrit le "
last_modified:
en: "Modified"
fr: "modifié le "
copyright:
en: "<a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/3.0/\">Copyright ©, Yann Esposito</a>"
fr: "<a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/3.0/deed.fr\">Droits de reproduction ©, Yann Esposito</a>"
subscribe:
en: "Subscribe"
fr: "s'abonner"
enableJavascriptToComment:
en: "You must enable javascript to comment."
en: "Vous devez activer javascript pour commenter."

219
layouts/article.html Normal file
View file

@ -0,0 +1,219 @@
-----
-----
<%
# -- init variables --
class LocalConf
attr_accessor :blog, :article, :languages, :language, :indent, :containMaths
def to_s
instance_variables.map{ |x|
if instance_variable_get(x).class == Array
%{#{x.intern}= [#{instance_variable_get(x).join(', ')}]}
else
%{#{x.intern}= #{instance_variable_get(x)}}
end
}
end
end
conf=LocalConf.new
language=@item_rep.path.sub(/\/Scratch\//,'').sub(/\/.*$/,'')
conf.language=language
containMaths=yield.match(/<p>([^<]|\n)*\$([^<]|\n)*\$/)
conf.containMaths=containMaths
# the current item is an article
article=( ( not @item[:kind].nil? ) && @item[:kind] == 'article' )
conf.article=article
# the current item is a blog entry page
blog=( ( not @item[:kind].nil? ) && @item[:kind] == 'blog' )
conf.blog=blog
# all supported languages
languages=@config[:languages]
conf.languages=languages
self.instance_variable_set(:@conf, conf)
# puts '--- conf ---'
# puts conf.to_s
%><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<% t=tags %>
<% if t.length > 0 %>
<meta name="keywords" content="<%= t %>">
<% end %>
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocom<%= language %>"/>
<%
languages.each do |lang|
item_for_lang=item_of_language(lang)
if not item_for_lang.nil? %>
<link rel="alternate" lang="<%= lang %>" xml:lang="<%= lang %>" title="<%= item_for_lang[:title] %>" type="text/html" hreflang="<%= lang %>" href="<%= item_for_lang.reps[0].path %>" /> <%
end
end %>
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<% if containMaths %>
<script type="text/javascript" src="/Scratch/js/MathJax/MathJax.js"></script>
<% end %>
<title><%= @item[:title] %></title>
</head>
<body lang="<%= language %>">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="<%= tradOf(:loading) %>"/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<%= languages.map do |l|
dest=@item_rep.path.sub(/^\/Scratch\/..\//, %{/Scratch/#{l}/})
if @item_rep.path != dest
%{<a href="#{dest}" onclick="setLanguage('#{l}')">#{ tradOfKeywordIn(:switchTo,l)}</a>}
else
nil
end
end.join() %>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
<%= @item[:title] %>
</h1>
<% unless @item[:subtitle].nil? %>
<h2>
<%= @item[:subtitle] %>
</h2>
<% end %>
</div>
<div class="flush"></div>
<% if @item[:content_for_summary] %>
<div class="corps summary">
<% @item[:content_for_summary] %>
</div>
<% end %>
<%= generateSubMenu %>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<%= yield %>
</div>
<% depth = depthOf(@item) %>
<% if depth > 2 or ( depth == 2 and @item.children.length > 0 ) %>
<div class="navigation">
<div class="navigationprev"><%= previousFor(@item) %></div>
<div class="navigationnext"><%= nextFor(@item) %></div>
</div>
<div class="flush"></div>
<% end %>
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocom<%= language %>">
<%= tradOf(:subscribe) %>
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#comment').hide();
$('#clickcomment').click(showComments);
});
function showComments() {
$('#comment').show();
$('#clickcomment').fadeOut();
}
document.write('<div id="clickcomment"><%= tradOf(:clickForComment) %></div>');
</script>
<div class="flush"></div>
<div class="corps" id="comment">
<h2 class="first"><%= tradOf(:comment) %></h2>
<noscript>
<%= tradOf(:enableJavascriptToComment) %>
</noscript>
<%= generateIntenseDebateThread %>
</div>
<div id="entete" class="corps_spaced">
<div id="liens">
<%= generateMenu %>
</div>
<div class="flush"></div>
<hr/>
<div id="next_before_articles">
<div id="previous_articles">
<%= tradOf(:previousArticles) %>
<%
(1..3).each do |n|
a=article_brother(-n)
if not a.nil?
%>
<div class="previous_article">
<%= link_to( %{<span class="nicer">«</span>&nbsp;}+ a[:title], a) %>
</div>
<% end %>
<% end %>
</div>
<div id="next_articles">
<%= tradOf(:nextArticles) %>
<%
(1..3).each do |n|
a=article_brother(n)
if not a.nil?
%>
<div class="next_article">
<%= link_to(a[:title] + %{&nbsp;<span class="nicer">»</span>}, a) %>
</div>
<% end %>
<% end %>
</div>
<div class="flush"></div>
</div>
</div>
<div id="bottom">
<div>
<%=tradOf(:copyright) %>
</div>
<div id="lastmod">
<%=tradOf(:created_at)%>: <%= @item[:created_at].strftime(@config[:dateFormat][language.intern]) %>
<%=tradOf(:last_modified)%>: <%= gitmtime.strftime(@config[:dateFormat][language.intern]) %>
</div>
<div>
<%= tradOf(:entirely_done_with) %>
<a href="http://www.vim.org">Vim</a>
<%= tradOf(:and) %>
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/<%=language%>/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/<%=language%>/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
</body>
</html>

148
layouts/default.html Normal file
View file

@ -0,0 +1,148 @@
-----
-----
<%
# -- init variables --
class LocalConf
attr_accessor :blog, :article, :languages, :language, :indent
def to_s
instance_variables.map{ |x|
if instance_variable_get(x).class == Array
%{#{x.intern}= [#{instance_variable_get(x).join(', ')}]}
else
%{#{x.intern}= #{instance_variable_get(x)}}
end
}
end
end
conf=LocalConf.new
language=@item_rep.path.sub(/\/Scratch\//,'').sub(/\/.*$/,'')
conf.language=language
# the current item is an article
article=( ( not @item[:kind].nil? ) && @item[:kind] == 'article' )
conf.article=article
# the current item is a blog entry page
blog=( ( not @item[:kind].nil? ) && @item[:kind] == 'blog' )
conf.blog=blog
# all supported languages
languages=@config[:languages]
conf.languages=languages
self.instance_variable_set(:@conf, conf)
# puts '--- conf ---'
# puts conf.to_s
%><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<% t=tags %>
<% if t.length > 0 %>
<meta name="keywords" content="<%= t %>">
<% end %>
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocom<%= language %>"/>
<%
languages.each do |lang|
item_for_lang=item_of_language(lang)
if not item_for_lang.nil? %>
<link rel="alternate" lang="<%= lang %>" xml:lang="<%= lang %>" title="<%= item_for_lang[:title] %>" type="text/html" hreflang="<%= lang %>" href="<%= item_for_lang.reps[0].path %>" /> <%
end
end %>
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<title><%= @item[:title] %></title>
</head>
<body lang="<%= language %>">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="<%= tradOf(:loading) %>"/></div>');
// ]]>
</script>
<div id="content">
<div id="entete">
<div id="choix">
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocom<%= language %>">
<%= tradOf(:subscribe) %>
</a>
</div>
<div id="choixlang">
<%= languages.map do |l|
dest=@item_rep.path.sub(/^\/Scratch\/..\//, %{/Scratch/#{l}/})
if @item_rep.path != dest
%{<a href="#{dest}" onclick="setLanguage('#{l}')">#{ tradOfKeywordIn(:switchTo,l)}</a>}
else
nil
end
end.join() %>
</div>
<div id="liens">
<%= generateMenu %>
</div>
</div>
</div>
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
<div id="titre">
<h1>
<%= @item[:title] %>
</h1>
<% unless @item[:subtitle].nil? %>
<h2>
<%= @item[:subtitle] %>
</h2>
<% end %>
</div>
<div class="flush"></div>
<% if @item[:content_for_summary] %>
<div class="corps summary">
<% @item[:content_for_summary] %>
</div>
<% end %>
<%= generateSubMenu %>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<%= yield %>
<div class="return"><a href="#entete" onclick="fastShowMenu()">&uarr;</a></div>
</div>
<div id="bottom">
<div>
<%=tradOf(:copyright) %>
</div>
<div id="lastmod">
<%=tradOf(:last_modified)%>: <%= gitmtime.strftime(@config[:dateFormat][language.intern]) %>
</div>
<div>
<%= tradOf(:entirely_done_with) %>
<a href="http://www.vim.org">Vim</a>
<%= tradOf(:and) %>
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/<%=language%>/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/<%=language%>/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
</body>
</html>

73
layouts/error.html Normal file
View file

@ -0,0 +1,73 @@
-----
-----
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<% t=tags %>
<% if t.length > 0 %>
<meta name="keywords" content="<%= t %>">
<% end %>
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<script type="text/javascript" src="/Scratch/js/menu.js"></script>
<title><%= @item[:title] %></title>
</head>
<body>
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="<%= tradOfKeywordIn(:loading,"en") %>"/></div>');
// ]]>
</script>
<div id="content">
<a href="/">
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
</a>
<h1>
<%= @item[:title] %>
</h1>
<% unless @item[:subtitle].nil? %>
<div id="titre">
<h2>
<%= @item[:subtitle] %>
</h2>
</div>
<% end %>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<%= yield %>
</div>
<div id="bottom">
<div>
<%=tradOfKeywordIn(:copyright,"en") %>
</div>
<div id="lastmod">
<%=tradOfKeywordIn(:last_modified,"en")%>: <%= gitmtime.strftime(@config[:dateFormat][:en]) %>
</div>
<div>
<%= tradOfKeywordIn(:entirely_done_with,"en") %>
<a href="http://www.vim.org">Vim</a>
<%= tradOfKeywordIn(:and,"en") %>
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/en/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/en/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
</body>
</html>

16
layouts/feed.html Normal file
View file

@ -0,0 +1,16 @@
-----
-----
<%
language=@item_rep.path.sub(/\/Scratch\//,'').sub(/\/.*$/,'')
number_of_char_for_resume=800
%><%= atom_feed( {
:articles => articles.select { |a| a.reps[0].path =~ /\/#{language}\// },
:content_proc =>lambda { |a|
repair_html(
excerptize(
a.compiled_content(:snapshot => :pre),
{:length => number_of_char_for_resume} ))
},
:limit => 40
}) %>

3
layouts/sitemap.html Normal file
View file

@ -0,0 +1,3 @@
-----
-----
<%= xml_sitemap %>

15
lib/analytics.rb Normal file
View file

@ -0,0 +1,15 @@
# All files in the 'lib' directory will be loaded
# before nanoc starts compiling.
def genAnalytics
%{<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-10612400-1");
pageTracker._trackPageview();
} catch(err) {}</script>}
end

15
lib/calendar.rb Normal file
View file

@ -0,0 +1,15 @@
# All files in the 'lib' directory will be loaded
# before nanoc starts compiling.
def calendar_for( d, language="en" )
if language == "fr"
monthnames=[nil]+%w(Jan Fév Mar Avr Mai Jui Jul Aoû Sep Oct Nov Déc)
else
monthnames=[nil]+%w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
end
%{<span class="date">
<span class="day">#{d.day}</span>
<span class="month">#{monthnames[ d.mon ]}</span>
<span class="year">#{d.year}</span>
</span> }
end

32
lib/css.rb Normal file
View file

@ -0,0 +1,32 @@
class NoCustomCSS < Nanoc3::Filter
identifier :no_custom_css
def run(content, params={})
res=""
content.each do |line|
res <<= line if not res=~/^\s*-(moz|webkit)/
end
return res
end
end
class MozillaCSS < Nanoc3::Filter
identifier :mozilla
def run(content, params={})
res=""
content.each do |line|
res <<= line if not res=~/-webkit/
end
return res
end
end
class WebkitCSS < Nanoc3::Filter
identifier :webkit
def run(content, params={})
res=""
content.each do |line|
res <<= line if not res=~/-moz/
end
return res
end
end

14
lib/gitmtime.rb Normal file
View file

@ -0,0 +1,14 @@
def gitmtime
filepath=@item.path.sub('/Scratch/','content/html/').sub(/\/$/,'')
ext=%{.#{@item[:extension]}}
filepath<<=ext
if not FileTest.exists?(filepath)
filepath.sub!(ext,%{/index#{ext}})
end
str=`git log -1 --format='%ci' -- #{filepath}`
if str.nil? or str.empty?
return Time.now
else
return DateTime.parse( str )
end
end

29
lib/graph.rb Normal file
View file

@ -0,0 +1,29 @@
class Graph < Nanoc3::Filter
identifier :graph
@@tmpfic="/tmp/graphtemp.dot"
def run(content, params={})
content.gsub(%r{<graph( title="([^"]*)")?>(.+?)</graph>}m) do |full|
# FileUtils.rm(@@tmpfic)
title=$2
str=$3
filename=title.gsub(/[^a-zA-Z0-9_]/,"_")
File.open(@@tmpfic,'w') do |f|
f.write %[ digraph Source {
fontsize=10;
rankdir="LR";
graph [truecolor bgcolor="#ffffff00"];
node [width=0, height=0, fontname="Optima Bold", shape="Mrecord", color="#663300", style="filled" fillcolor="#f9f1dd", fontcolor="#280000"] ;
edge [arrowsize=.5, color="#280000"] ; ]
f.write str
f.write %[}]
end
FileUtils.mkdir_p('output'+@item.path+'graph')
webpath=@item.path + 'graph/' + filename + '.png'
path='output'+webpath
puts "dot -Tpng -o #{path} /tmp/graphtemp.dot"
system("dot -Tpng -o #{path} /tmp/graphtemp.dot")
puts %{<img alt="#{title}" src="#{webpath}"/>}
%{<img alt="#{title}" src="#{webpath}"/>}
end
end
end

17
lib/helpers.rb Normal file
View file

@ -0,0 +1,17 @@
# All files in the 'lib' directory will be loaded
# before nanoc starts compiling.
# Utilisation des helper
#
# ecrire
# <% content_for :summary do %>
# Sommaire que je veux ecrire
# <% end %>
#
# Pour remplir à la fois le texte et le sommaire
include Nanoc3::Helpers::Capturing
include Nanoc3::Helpers::LinkTo
include Nanoc3::Helpers::Blogging
include Nanoc3::Helpers::Text
include Nanoc3::Helpers::XMLSitemap

26
lib/intenseDebate.rb Normal file
View file

@ -0,0 +1,26 @@
def getMainpage
if @item.parent.nil? or @item.parent.parent.nil?
return
end
if @item.parent.parent.parent.nil?
return @item
else
return @item.parent
end
end
def generateIntenseDebateThread
mainpage=getMainpage
protectedPath=mainpage.path.gsub(/'/,"%27")
protectedTitle=mainpage[:title].gsub(/'/,"%27")
%{
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '#{protectedPath}';
var idcomments_post_url = 'http://yannesposito.com#{protectedPath}';
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
}
end

7
lib/macros.rb Normal file
View file

@ -0,0 +1,7 @@
def tldr
%{<span class="sc"><abbr title="Too long; don't read">tl;dr</abbr>: </span>}
end
def tlal
%{<span class="sc"><abbr title="Trop long à lire">tlàl</abbr> : </span>}
end

3
lib/mail.rb Normal file
View file

@ -0,0 +1,3 @@
def mail_perso
%{<a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#121;&#097;&#110;&#110;&#046;&#101;&#115;&#112;&#111;&#115;&#105;&#116;&#111;&#064;&#103;&#109;&#097;&#105;&#108;&#046;&#099;&#111;&#109;">&#121;&#097;&#110;&#110;&#046;&#101;&#115;&#112;&#111;&#115;&#105;&#116;&#111;&#064;&#103;&#109;&#097;&#105;&#108;&#046;&#099;&#111;&#109;</a>}
end

32
lib/multi.rb Normal file
View file

@ -0,0 +1,32 @@
def tradOf(keyword)
language=@item.path
language.match('/Scratch/(..)')
language=$1
tradOfKeywordIn(keyword, language )
end
def tradOfKeywordIn(keyword, language)
begin
@config[:translations][keyword][language.intern]
rescue
if @config[:translations].nil?
puts %{ERROR (lib/multi.rb) Please make a 'translations' hash table in config.yaml}
elsif @config[:translations][keyword].nil?
puts %{ERROR (lib/multi.rb) in config.yaml,
in the 'translations' hash, I can't find the keyword #{keyword}}
elsif @config[:translations][keyword][language.intern].nil?
puts %{ERROR (lib/multi.rb) in config.yaml,
in the 'translations' hash, I can't find the translation
in #{language} for the keyword #{keyword}}
else
puts %{ERROR (lib/multi.rb) erreur inconnue}
end
return '[Sorry Translation Error]'
end
end
def item_of_language(language)
searched_path=@item_rep.path.sub(@conf.language,language)
# puts %{source path = #{@item_rep.path}, searched_path = #{searched_path}}
@items.find { |i| i.reps[0].path == searched_path }
end

171
lib/multiMenu.rb Normal file
View file

@ -0,0 +1,171 @@
def homepage
@items.find do |i|
i.reps[0].path == %{/Scratch/#{@conf.language}/}
end
end
def sortedChildrenByMenuPriority(item)
item.children.reject{|p| p[:isHidden]}.
sort!{|x,y| x[:menupriority] <=> y[:menupriority]}
end
def generateMenu
home=homepage
liste=[]
liste<<=link_to_unless_current(home[:title],home.reps[0])
sortedChildrenByMenuPriority(home).each do |page|
liste <<= link_to_unless_current(page[:title],page.reps[0])
end
"<ul><li>"+liste.join("</li>\n<li>")+"</li></ul>"
end
def depthOf(item)
res=0
while item.parent != nil
res+=1
item=item.parent
end
return res
end
def getSortedChildren(parent)
if parent[:kind] == "blog"
return parent.children.reject{|p| p[:isHidden]}.sort!{|x,y| x[:created_at] <=> y[:created_at] }
else
return parent.children.reject{|p| p[:isHidden]}.sort!{|x,y| x[:menupriority] <=> y[:menupriority] }
end
end
def generateBlogSubMenu(language)
year=0
res=""
liste=getSortedChildren(@item).reverse!.collect! do |p|
if p[:created_at].strftime("%Y") != year
if year != 0
res<<=%{</ul><script type="text/javascript">$('#archives_#{year}').hide()</script>}
end
year=p[:created_at].strftime("%Y")
res<<=%{<h4 style="cursor: pointer;" onclick="$('#archives_#{year}').slideToggle()">[#{year}]</h4><ul id="archives_#{year}">}
end
res<<='<li>'
res<<=calendar_for(p[:created_at],language)+link_to_unless_current(p[:title],p)
res<<='</li>'
end
res<<=%{</ul><script type="text/javascript">$('#archives_#{year}').hide()</script>}
if ! liste.empty?
'<div id="sousliens" class="archive">'+res+'</div>'
else
return
end
end
def generateSubMenu()
if @item[:noSubMenu]
return
end
depth=depthOf(@item)
if depth == 0
return
end
if @item.children.length == 0 and not @item.parent[:kind].to_s == "blog"
page=@item.parent
else
page=@item
end
if @item[:kind].to_s == "article"
key=:subtitle
else
key=:title
end
liste=getSortedChildren(page).collect do |p|
link_to_unless_current(p[key]+' <span class="nicer">&raquo;</span>',p)
end
if ! liste.empty? then
liste = [ link_to_unless_current(page[key]+' <span class="nicer">&raquo;</span>',page) ].concat( liste )
'<div id="sousliens"><ul><li>'+liste.join('</li><li>')+'</li></ul></div>'
else
return
end
end
# =======================
def blogimage(val,title="no name")
if depthOf( @item ) == 3
imgpath=@item.parent.path
else
imgpath=@item.path
end
imgpath=imgpath.sub(%r{/Scratch/../},'/Scratch/img/')+val
return %{<img alt="#{title}" src="#{imgpath}"></img>}
end
def leftblogimage(val,title="no name")
if depthOf( @item ) == 3
imgpath=@item.parent.path
else
imgpath=@item.path
end
imgpath=imgpath.sub(%r{/Scratch/../},'/Scratch/img/')+val
return %{<img class="left" alt="#{title}" src="#{imgpath}"></img>}
end
def lnkto(title,item)
language=@item_rep.path.sub(/\/Scratch\//,'').sub(/\/.*$/,'')
link_to(title, "/Scratch/#{language}"+item)
end
def nextFor(page)
depth=depthOf(page)
case depth
when 0..1 then return nil
when 2 then target=getSortedChildren(page)[0]
else
sorted_children=getSortedChildren(page.parent)
index=sorted_children.index(page)
target=sorted_children[ index + 1]
if target.nil?
return nil
end
end
link_to(tradOf(:next)+%{&nbsp;<span class="nicer">»</span>}, target)
end
# return the previous page of a post containing many
def previousFor(page)
if depthOf(page) < 3
return nil
end
sorted_children=getSortedChildren(page.parent)
index=sorted_children.index(page)
if index==0
target=page.parent
else
target=sorted_children[ index - 1 ]
end
link_to(%{<span class="nicer">«</span>&nbsp;}+tradOf(:previous), target)
end
def brother_for_at(page,n)
brothers=getSortedChildren(page.parent)
i=brothers.index(page)
if i.nil?
return nil
end
brothers[ brothers.index(page) + n ]
end
def article_brother(n)
if depthOf(@item) > 2
page=@item.parent
else
page=@item
end
brother_for_at(page,n)
end

30
lib/repair_html.rb Normal file
View file

@ -0,0 +1,30 @@
# All files in the 'lib' directory will be loaded
# before nanoc starts compiling.
# repair cutted XML code by closing the tags
# work even if the XML is cut into a tag.
# example:
# transform '<div> <code> toto </code> <p> hello <a href="http://tur'
# into '<div> <code> toto </code> <p> hello </p></div>'
def repair_html( html )
parents=[]
depth=0
html.scan( %r{<(/?)(\w*)[^>]*(/?)>} ).each do |m|
if m[2] == "/"
next
end
if m[0] == ""
parents[depth]=m[1]
depth+=1
# puts '<'+m[0]+m[1]+'> ' + depth.to_s
# puts 'parents='+parents.join('; ')
else
depth-=1
# puts '<'+m[0]+m[1]+'> ' + depth.to_s
end
end
res=html.sub(/<[^>]*$/m,'')
depth-=1
depth.downto(0).each { |x| res<<= %{</#{parents[x]}>} }
res
end

68
lib/syntaxColorize.rb Normal file
View file

@ -0,0 +1,68 @@
module Nanoc3::Helpers
module SyntaxColorize
require 'nanoc3/helpers/capturing'
include Nanoc3::Helpers::Capturing
def syntax_colorize(lang, type=:ultraviolet, &block)
# Capture block
data = capture(&block)
# Remove whitespace
lines = data.split("\n")
min_indent = lines.inject(nil) do |memo, line|
next memo if line =~ /^\s*$/
next memo if line !~ /^(\s*)/
[ memo, $1.size ].compact.min
end
lines.each do |line|
line[0,min_indent] = ''
end
data = lines.join("\n")
# Process
case type
when :ultraviolet
begin
require 'uv'
if lang =~ /^(zsh|bash|sh|csh|shell)$/
lang='shell-unix-generic'
end
filtered_data = Uv.parse(data, 'xhtml', lang, false, 'twilight')
rescue LoadError
unless $_WARNED_ABOUT_ULTRAVIOLET
warn "WARNING: Couldn't load uv; please install the ultraviolet gem. This message will not appear again."
end
$_WARNED_ABOUT_ULTRAVIOLET = true
filtered_data = '<pre class="no-uv">' + h(data) + '</pre>'
end
# Convert to HTML
filtered_data = filtered_data.strip.sub(%r{/ ?>}, '>') # convert to HTML
# Add missing <code> in <pre>
filtered_data.sub!(/^\s*(<pre class="[^<]+">)\s*/) { |m| "#{m}<code>" }
filtered_data.sub!(/\s*(<\/pre>)\s*$/) { |m| "</code>#{m}" }
when :coderay
# Find filter
klass = Nanoc3::Filter.named(:coderay)
filter = klass.new(@item_rep.assigns)
# Filter captured data
filtered_data = filter.run(data, :language => lang).strip
else
raise ArgumentError, "invalid type: #{type}"
end
# Append filtered data to buffer
buffer = eval('_erbout', block.binding)
buffer << '<pre><code>' if type == :coderay
buffer << filtered_data
buffer << '</code></pre>' if type == :coderay
end
end
end

104
lib/tag.rb Normal file
View file

@ -0,0 +1,104 @@
# All files in the 'lib' directory will be loaded
# before nanoc starts compiling.
# module Tags
def tags
if @item[:tags].nil?
return ''
end
@item[:tags].join(', ')
end
def alltags
language=@item.path
language =~ %r{/Scratch/([^/]*)/}
language = $1
@items.select {|p| p.path =~ %r{/Scratch/#{language}/} and p[:kind].to_s == "article" and p.parent[:kind].to_s == 'blog'}
end
def tagNumber
tags={}
alltags.each do |p|
if p[:tags].nil?
next
end
p[:tags].each do |t|
if tags[t]
tags[t]+=1
else
tags[t]=1
end
end
end
return tags
end
def tagRefs
tagLinks={}
alltags.each do |p|
if p[:tags].nil?
next
end
p[:tags].each do |t|
if tagLinks[t].nil?
tagLinks[t]=[ p ]
else
tagLinks[t] <<= p
end
end
end
return tagLinks
end
def tagCloud(minval=0)
tags=tagNumber.reject { |k,v| v<minval }
tagLinks=tagRefs.reject { |k,v| tags[k].nil? }
max=tags.values.max
min=tags.values.min
minSize=1.0
maxSize=2.5
tagSize={}
tags.each do |t,n|
# valeur normalisée entre 0 et 1
if ( max == min )
tagSize[t]=minSize
else
tagSize[t]=[ ( n - min + 0.0 ) / ( max - min ) , (n - min) / 10.0 ].min
# valeur adaptée entre minSize et maxSize
tagSize[t]=( tagSize[t] ) * (maxSize - minSize) + minSize
end
end
tagCloud=%{<script type="text/javascript">
$(document).ready( function(){$('.list').hide();$('#tagcloud a').removeAttr("href")} );
function tagSelected(id) {
$('.list').hide();
$('#'+id).fadeIn();
$('.tag.selected').removeClass('selected');
$('#tag_'+id).addClass('selected');
}
</script><div id="tagcloud">}
tagSize.sort{|a,b| a[0].downcase <=> b[0].downcase}.each do |t,s|
protected=t.gsub(/\W/,'_')
grouped=t.gsub(/&/,'&amp;').gsub(/ /,'&nbsp;').gsub(/</,'&lt;').gsub(/>/,'&gt;')
tagCloud <<= %{<a href="##{protected}" style="font-size: #{s}em;" class="tag" onclick="tagSelected('#{protected}')" id="tag_#{protected}">#{grouped}</a> }
end
tagCloud <<= %{</div><div id="hiddenDivs" >}
language=@item.path
language =~ %r{/Scratch/([^/]*)/}
language = $1
tagLinks.sort{|a,b| a[0].downcase <=> b[0].downcase}.each do |t,l|
protected=t.gsub(/\W/,'_')
tagCloud <<= %{<div id="#{protected}" class="list"><h4>#{t} <a href="#tagcloud">&uarr;</a></h4><ul style="list-style-type: none; margin: 0;">}
l.sort{|x,y| y[:created_at] <=> x[:created_at]}.each do |p|
tagCloud <<= %{
<li style="line-height: 3em; margin: 0;">
#{calendar_for(p[:created_at], language)}
<a href="#{p.path}">#{p[:title]}</a>
</li>\n}
end
tagCloud <<= %{</ul></div>}
end
tagCloud <<= %{</div>}
return tagCloud
end
# end

40
lib/ultraviolet.rb Normal file
View file

@ -0,0 +1,40 @@
class UltraVioletFilter < Nanoc3::Filter
identifier :ultraviolet
def run(content, params={})
require 'rubygems'
require 'uv'
code_rule = %r{(<code class="([^"]+?)"( file="([^"]+?)")?>(.+?)</code>)}m
new_content=content.gsub(code_rule) do |full|
@lang, @filename, @code = $2, $4, $5
if @lang =~ /^(zsh|bash|sh|csh|shell)$/
@lang='shell-unix-generic'
end
@codeprefix=''
@codesuffix=''
if not @filename.nil? and @filename != ""
create_file_for_code
end
@codeprefix+
Uv.parse(@code, "xhtml", @lang, false, @config[:ultraviolet_theme])+
@codesuffix
end
return new_content
end
private
def create_file_for_code
# Create a plaintext file version for download.
webpath = @item.path
url = webpath + 'code/' + @filename
@codeprefix=%{<div class="code"><div class="file"><a href="#{url}"> &#x27A5; #{@filename} </a></div><div class="withfile">\n}
@codesuffix=%{\n</div></div>}
code_path = "output#{webpath}code"
puts %{\t\tEcriture de #{code_path}/#{@filename}}
FileUtils.mkdir_p code_path
File.open(%{#{code_path}/#{@filename}}, 'w'){|f|f.write(@code)}
end
end

166
lib/y.rb Normal file
View file

@ -0,0 +1,166 @@
# All files in the 'lib' directory will be loaded
# before nanoc starts compiling.
def allExceptCode( f, content )
regexp=/<code[^>]*>.*?<\/code>/m
tmp=""
mem=[]
content.scan(regexp).each do |c|
mem <<= c
end
i=0
content.split(regexp).each do |x|
tmp <<= send(f,x)
if not mem[i].nil?
tmp <<= mem[i]
i+=1
end
end
tmp
end
module Nanoc3::Filters
class MathJaxKramdownRepair < Nanoc3::Filter
identifiers :math_repair
def description(content)
content.gsub(/<div class="math">(.+?)<\/div>/m) do
return %{$$ #{$1} $$}
end
end
def run(content, params={})
allExceptCode( :description , content )
end
end
class Description < Nanoc3::Filter
identifiers :description
def description(content)
content.gsub(/^\s*<desc( [^>]*)?>(.+?)<\/desc>/m) do
n=0
if $1 then
summary=$1
summary.slice!(0)
else
summary="no description"
end
'<div><table class="description" summary="'+summary+'">'+$2.gsub(/([^:]+):(.+?)::/m) do
n+=1
if n % 2 == 0
sombre=' class="assombris10"'
else
sombre=' class="assombris20"'
end
'<tr'+sombre+'><td class="definitionCell">'+$1+'</td><td class="valueCell">'+$2+'</td></tr>'
end+'</table></div>'
end
end
def run(content, params={})
allExceptCode( :description , content )
end
end
class FrenchSpace < Nanoc3::Filter
identifiers :frenchspace
def ameliorate(content)
content.gsub(/ ([:;!?]|&eq;|&ne;)/) { "&nbsp;"+$1 }
end
def run(content, params={})
allExceptCode( :ameliorate, content )
end
end
class Footnotes < Nanoc3::Filter
identifiers :footnotes
def hr_before_footnote(content)
content.gsub(/<div class="footnotes">/) { %{<hr/>#{$&}} }
end
def run(content, params={})
allExceptCode( :hr_before_footnote, content )
end
end
class FirstHierarchy < Nanoc3::Filter
identifiers :firsthi
def run(content, params={})
content.gsub(/\A(\s|\n)*<h[1-4]/m)do
$& + ' class="first"'
end.gsub(/<div[^>]*class="corps"[^>]*>(\s)*<h[1-4]/m) do
$& + ' class="first"'
end.gsub(/class="first" class="first"/) do
'class="first"'
end
end
end
class YTypography < Nanoc3::Filter
identifiers :ytypo
def ytypofunc(content)
content.gsub(/<sc>(.*?)<\/sc>/m) do
%{<span class="sc">}+$1+%{</span>}
end.gsub(/''(.*?)''/m)do
%{<code>}+$1+%{</code>}
end.gsub(/\(c\)/) do
%{<small>&copy;</small>}
end.gsub(/\(r\)/) do
%{<small>&reg;</small>}
end.gsub(/-(&gt;|>)/) do
%{&rarr;}
end.gsub(/(&lt;|<)-/) do
%{&larr;}
end
end
def run(content, params={})
allExceptCode( :ytypofunc, content )
end
end
class YAbbreviations < Nanoc3::Filter
identifiers :yabbreviations
def makeabbreviations(text)
{
'WebDav' => 'Web-based Distributed Authoring and Versionning',
'cms' => 'Content Management System',
'xml' => 'eXtended Markup Language',
}.each do |keyword,abbreviation|
text=text.gsub(/\b#{keyword}\b/i) do
%{<abbr title="#{abbreviation}"><span class="sc">#{keyword}</span></abbr>}
end
end
return text
end
def run(content, params={})
allExceptCode(:makeabbreviations, content )
end
end
class MultiCorps < Nanoc3::Filter
identifiers :multicorps
def run(content, params={})
content.gsub(/^.*newcorps.*$/) do
%{\n</div>\n\n<div class="corps">\n}
end.gsub(/^.*begindiv\((.*)\).*$/) do
%{\n<div class="#{$1}">\n}
end.gsub(/^.*enddiv.*$/) do
%{\n</div>\n}
end
end
end
end
def block(title, url, text, position="left")
return %{<div class="block #{position}">
<h3>
<a href="#{url}"> #{title}
<span class="nicer">»</span>
</a>
</h3>
<p>
#{text}
</p>
</div>}
end

View file

216
output/Scratch/css/blue.css Normal file
View file

@ -0,0 +1,216 @@
/* pour supprimer les warnings */
#choixlang, #entete, #sousliens {
color: #000;
}
/* body */
body {
margin: 0 10px;
background-color: #fff;
color: #000;
font-size: 1em ;
}
/* links */
a:link {
color: #00f;
text-decoration: none;
}
a:visited {
color: #00a;
text-decoration: none;
}
a:hover {
color: #f60;
text-decoration: underline;
}
a:active {
color: #f60;
text-decoration: underline;
}
/* html tags */
th, td, ul, ol, li {
font-size: 1em ;
}
code, pre {
font-size: .8em;
}
/* Work around IE/Win code size bug - courtesy Jesper, waffle.wootest.net */
* html code {
font-size: 101%;
}
* html pre {
font-size: 101%;
}
h1 code, h2 code, h3 code, h4 code, th code, ol.faq li code { font-size: 95%; font-weight: normal; }
h1 {
margin: 0 0 15px 0;
padding: 0.5em;
font-size: 2em ;
font-weight: bold;
color: #000;
}
h2 {
margin: 0 0 5px 0;
padding: 0;
font-size: 1.3em;
color: #000;
}
#header h2 {
margin: 0;
}
p + h2 {
margin: 20px 0 5px 0;
}
ol + h2 {
margin: 20px 0 5px 0;
}
ul + h2 {
margin: 20px 0 5px 0;
}
h6 {
margin: 0;
padding: 0;
font-size: 1em ;
color: #000;
}
p {
margin: 0 0 10px 0;
padding: 0;
font-size: 1em ;
color: #000;
}
cite {
font-style: italic;
}
th {
font-weight: bold;
text-align: left;
vertical-align: top;
}
form {
margin: 0;
}
button {
margin: 3px 0 10px 0;
}
/* lists */
ul {
list-style: square outside;
margin: 0 0 0 30px;
padding: 0 0 1em 0;
}
li {
margin-top: 3px;
}
ul ul {
margin-left: 40px;
}
ul.compressed {
margin-top: -10px;
}
ul.compressed li {
margin-top: 0;
}
ul.marketing {
padding-left: 0;
margin: 0 0 16px 0;
list-style: none;
}
ul.marketing li {
margin-top: 0;
margin-left: 0;
margin-bottom: 2px;
font-size: .8em;
}
ol {
margin: 0 0 10px 1.5em;
padding-left: 1.5em;
}
ul.inline, ol.inline, p.inline {
margin-top: -7px;
}
ul.inline ul, ul.inline ol, ol.inline ul, ol.inline ol {
margin-top: 0;
}
ol.faq li {
font-weight: bold;
}
ol.steps li {
font-weight: bold;
}
ul.nav {
margin: 8px 0 0;
padding: 0;
list-style-type: none;
}
ul.nav li {
margin-top: 4px;
padding-left: 0;
}
ul.nobullet {
list-style-type: none;
margin-left: 0;
padding-left: 0;
}
ul.nobullet li {
margin: 3px 0 5px;
padding-left: 0;
}
/* images */
.leftinline {
margin: 0 10px 5px 0;
float: left;
}
.rightinline {
margin: 0 0 5px 10px;
float: right;
}
#choixlang, #choix, #liens, #sousliens, #address, #presentation, #Menu, #bottom, #entete, h4 {
border-color: #000 ;
}
#presentation, #Menu, #entete {
background-color : #f1F7F9;
}

View file

@ -0,0 +1,229 @@
/* pour supprimer les warnings */
#choixlang, #entete, #sousliens {
color: #000;
}
/* body */
body {
margin: 0 10px;
background-color: #fff;
color: #000;
font-size: 1em ;
}
.highlight {
color: #f60;
}
/* links */
a:link {
color: #00f;
text-decoration: none;
}
a:visited {
color: #00a;
text-decoration: none;
}
a:hover {
color: #f60;
text-decoration: underline;
}
a:active {
color: #f60;
text-decoration: underline;
}
/* html tags */
th, td, ul, ol, li {
font-size: 1em ;
}
code, pre {
font-size: .8em;
}
/* Work around IE/Win code size bug - courtesy Jesper, waffle.wootest.net */
* html code {
font-size: 101%;
}
* html pre {
font-size: 101%;
}
h1 code, h2 code, h3 code, h4 code, th code, ol.faq li code { font-size: 95%; font-weight: normal; }
h1 {
margin: 0 0 15px 0;
padding: 0.5em;
font-size: 2em ;
font-weight: bold;
color: #000;
}
h2 {
margin: 0 0 5px 0;
padding: 0;
font-size: 1.3em;
color: #000;
}
#header h2 {
margin: 0;
}
p + h2 {
margin: 20px 0 5px 0;
}
ol + h2 {
margin: 20px 0 5px 0;
}
ul + h2 {
margin: 20px 0 5px 0;
}
h6 {
margin: 0;
padding: 0;
font-size: 1em ;
color: #000;
}
p {
margin: 0 0 10px 0;
padding: 0;
font-size: 1em ;
color: #000;
}
cite {
font-style: italic;
}
th {
font-weight: bold;
text-align: left;
vertical-align: top;
}
form {
margin: 0;
}
button {
margin: 3px 0 10px 0;
}
/* lists */
ul {
list-style: square outside;
margin: 0 0 0 30px;
padding: 0 0 1em 0;
}
li {
margin-top: 3px;
}
ul ul {
margin-left: 40px;
}
ul.compressed {
margin-top: -10px;
}
ul.compressed li {
margin-top: 0;
}
ul.marketing {
padding-left: 0;
margin: 0 0 16px 0;
list-style: none;
}
ul.marketing li {
margin-top: 0;
margin-left: 0;
margin-bottom: 2px;
font-size: .8em;
}
ol {
margin: 0 0 10px 1.5em;
padding-left: 1.5em;
}
ul.inline, ol.inline, p.inline {
margin-top: -7px;
}
ul.inline ul, ul.inline ol, ol.inline ul, ol.inline ol {
margin-top: 0;
}
ol.faq li {
font-weight: bold;
}
ol.steps li {
font-weight: bold;
}
ul.nav {
margin: 8px 0 0;
padding: 0;
list-style-type: none;
}
ul.nav li {
margin-top: 4px;
padding-left: 0;
}
ul.nobullet {
list-style-type: none;
margin-left: 0;
padding-left: 0;
}
ul.nobullet li {
margin: 3px 0 5px;
padding-left: 0;
}
/* images */
.leftinline {
margin: 0 10px 5px 0;
float: left;
}
.rightinline {
margin: 0 0 5px 10px;
float: right;
}
#choixlang, #choix, #liens, #sousliens, #address, #presentation, #Menu, #bottom, #entete, h4 {
border-color: #000 ;
}
#presentation, #Menu, #entete {
background-color : #f1F7F9;
}
/*
h1, h2, #choixlang, #choix, #liens, #sousliens {
background-color: #F0F5F9 ;
}
h3, h4, h5, h6 {
background-color: #FFF ;
}
*/

View file

@ -0,0 +1,48 @@
#disqus_thread .dsq-by img {
display: inline;
float: right;
text-align: right;
border: none;
padding: 0;
margin: 0;
}
#disqus_thread img {
display: inline;
border: none;
padding: 0;
margin: 0;
}
.dsq-post-avatar {
float: left;
margin-left: 0;
margin-right: 3em;
margin-top: 1em;
margin-bottom: 1em;
}
#disqus_thread ul {
margin-left: 8em;
}
#dsq-toolbar-item {
clear: both;
}
#disqus_thread input.dsq-trackback-url {
width: 30em;
}
#disqus_thread #dsq-content #dsq-post-add iframe {
width: 100%;
height: 18em;
}
#disqus_thread h3 {
clear: none;
}
.dsq-item-feed a {
background-image: url("/Scratch/img/bullet-feed.png");
background-repeat: no-repeat;
width: 12px;
height: 12px;
display: inline-block;
position: relative;
}
#disqus_thread .dsq-item-feed a img {
display: none;
}

View file

@ -0,0 +1,2 @@
#content { width: 100%; font-size: 20px; }
.corps { padding-right: 2px; padding-left: 2px;}

View file

@ -0,0 +1,8 @@
#idc-container-parent h3 {
display: inline;
left: auto;
border: none;
box-shadow: none;
-moz-box-shadow: none;
-webkit-box-shadow: none;
}

77
output/Scratch/css/ie.css Normal file
View file

@ -0,0 +1,77 @@
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
body { line-height: 1; }
ol, ul { list-style: none; }
blockquote, q { quotes: none; }
blockquote:before, blockquote:after,
q:before, q:after { content: ''; content: none; }
/* remember to define focus styles! */
:focus { outline: 0; }
/* remember to highlight inserts somehow! */
ins { text-decoration: none; }
del { text-decoration: line-through; }
/* tables still need 'cellspacing="0"' in the markup */
table { border-collapse: collapse; border-spacing: 0; }
/* --- recuperation des couleurs --- */
body {
font-family: "Sabon LT Std","Hoefler Text","Palatino Linotype","Book Antiqua",serif;
background-color: #fff;
color: #000; }
a {
font-weight: bold;
text-decoration: none; }
a, a:link {
color: #a00;
outline: none; }
a:visited {
color: #a00;
outline: none; }
a:active, a:hover {
color: #f00;
outline: none; }
ul {
list-style: square; }
.corps {
text-align: justify;
border: solid 1px #ccc;
line-height: 1.8em;
background-color: #eee;
}
pre {
margin-top: 1em;
margin-bottom: 1em;
background-color: #000;
}
#iemessage {
margin-bottom: 1em;
line-height: 1.5em;
}
#liens ul{list-style:none;}
#liens ul li{width: 22%; display: inline}

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -0,0 +1,4 @@
.en, .fr {
display: none;
}

View file

@ -0,0 +1,21 @@
.navigationprev, .navigationnext {
text-shadow: 0 0 8px #666;
}
.corps, #bottom, #sousliens {
box-shadow: 0px 5px 20px #333;
-moz-box-shadow: 0px 5px 20px #333;
-webkit-box-shadow: 0px 5px 20px #333;
}
#titre {
box-shadow: 0px 0px 20px #000;
-moz-box-shadow: 0px 0px 20px #000;
-webkit-box-shadow: 0px 0px 20px #000;
}
#entete {
position: relative;
top: -1.5em;
}
#content {
margin-top: 2em;
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
.navigationprev, .navigationnext {
text-shadow: 0 0 3px #aaa; }
#titre, h1 {
text-shadow: 0px 0px 3px #333; }
.corps, #bottom, #sousliens, .date{
box-shadow: 0px 2px 5px #333; }
#titre, #entete {
box-shadow: 0px 0px 5px #000; }

View file

@ -0,0 +1,141 @@
pre.twilight {
padding: .8em;
}
pre.twilight .DiffInserted {
/* background-color: #253B22; */
color: #F8F8F8;
}
pre.twilight .DiffHeader {
/* background-color: #0E2231; */
color: #F8F8F8;
font-style: italic;
}
pre.twilight .CssPropertyValue {
color: #F9EE98;
}
pre.twilight .CCCPreprocessorDirective {
color: #AFC4DB;
}
pre.twilight .Constant {
color: #CF6A4C;
}
pre.twilight .DiffChanged {
/* background-color: #4A410D; */
color: #F8F8F8;
}
pre.twilight .EmbeddedSource {
/* background-color: #A3A6AD; */
}
pre.twilight .Support {
color: #9B859D;
}
pre.twilight .MarkupList {
color: #F9EE98;
}
pre.twilight .CssConstructorArgument {
color: #8F9D6A;
}
pre.twilight .Storage {
color: #F9EE98;
}
pre.twilight .line-numbers {
/* background-color: #DDF0FF; */
color: #000000;
}
pre.twilight .CssClass {
color: #9B703F;
}
pre.twilight .StringConstant {
color: #DDF2A4;
}
pre.twilight .CssAtRule {
color: #8693A5;
}
pre.twilight .MetaTagInline {
color: #E0C589;
}
pre.twilight .MarkupHeading {
color: #CF6A4C;
}
pre.twilight .CssTagName {
color: #CDA869;
}
pre.twilight .SupportConstant {
color: #CF6A4C;
}
pre.twilight .DiffDeleted {
/* background-color: #420E09; */
color: #F8F8F8;
}
pre.twilight .CCCPreprocessorLine {
color: #8996A8;
}
pre.twilight .StringRegexpSpecial {
color: #CF7D34;
}
pre.twilight .EmbeddedSourceBright {
/* background-color: #9C9EA4; */
}
pre.twilight .InvalidIllegal {
/* background-color: #241A24; */
color: #F8F8F8;
}
pre.twilight .SupportFunction {
color: #DAD085;
}
pre.twilight .CssAdditionalConstants {
color: #CA7840;
}
pre.twilight .MetaTagAll {
color: #AC885B;
}
pre.twilight .StringRegexp {
color: #E9C062;
}
pre.twilight .StringEmbeddedSource {
color: #DAEFA3;
}
pre.twilight .EntityInheritedClass {
color: #9B5C2E;
font-style: italic;
}
pre.twilight .CssId {
color: #8B98AB;
}
pre.twilight .CssPseudoClass {
color: #8F9D6A;
}
pre.twilight .StringVariable {
color: #8A9A95;
}
pre.twilight .String {
color: #8F9D6A;
}
pre.twilight .Keyword {
color: #CDA869;
}
pre.twilight {
/* background-color: #141414; */
color: #F8F8F8;
}
pre.twilight .CssPropertyName {
color: #C5AF75;
}
pre.twilight .DoctypeXmlProcessing {
color: #494949;
}
pre.twilight .InvalidDeprecated {
color: #D2A8A1;
font-style: italic;
}
pre.twilight .Variable {
color: #7587A6;
}
pre.twilight .Entity {
color: #9B703F;
}
pre.twilight .Comment {
color: #5F5A60;
font-style: italic;
}

267
output/Scratch/css/y.css Normal file
View file

@ -0,0 +1,267 @@
/* Les couleurs */
body {
background-color: #444;
background-image: url("img/bords.jpg");
color: #fff;
font-size: 1em ;
}
a {font-weight: bold; text-decoration: none; }
.corps h1 { font-variant: small-caps; }
#lastmod {
color: #999;
font-size: .8em;
}
#content {
background-color: white;
}
/* Basé sur 3 couleurs, gris foncé, gris clair et rouge foncé */
/* noir: #222 */
/* rouge: #a00 */
/* blanc: #ccc */
/* fond blancs */
#liens,
#sousliens,
#choix,
.corps {
background-image: url("img/white.jpg");
background-repeat: no-repeat;
background-color: #ccc;
border-color: #ddd;
color: #222;
}
/* centré verticalement et horizontalement */
#liens,
#sousliens,
#choix {
background-position: 50% 50%;
}
/* centré horizontalement en haut */
.corps {
background-position: 50% 0%;
}
#liens a,
#sousliens a,
#choix a,
.corps a,
#liens a:link,
#sousliens a:link,
#choix a:link,
.corps a:link { color: #a00 ; }
#liens a:visited,
#sousliens a:visited,
#choix a:visited,
.corps a:visited { color: #a00 ; }
#liens a:active,
#liens a:hover,
#sousliens a:active,
#sousliens a:hover,
#choix a:active,
#choix a:hover,
.corps a:active,
.corps a:hover { color: #f00; }
/* fond noir */
pre.twilight,
.corps h2,
.corps h3,
.corps h4,
#bottom {
background-image: url("img/black.jpg");
background-repeat: no-repeat;
background-color: #000;
border-color: #000;
color: #eee
}
/* image centree verticalement */
.corps h2,
.corps h3,
.corps h4,
#bottom {
background-position: 50% 50%;
}
/* image en haut */
pre.twilight {
background-position: 50% 50%;
}
.withfile pre.twilight {
background-position: 50% -10%;
}
#entete {
background-image: url("img/black600.jpg");
background-repeat: no-repeat;
background-position: 50% 50%;
background-color: #111111;
border-color: #111111;
color: #eee
}
.file a,
.corps h2 a,
.corps h3 a,
.corps h4 a,
#entete > a,
#bottom a,
.file a:link,
.corps h2 a:link,
.corps h3 a:link,
.corps h4 a:link,
#entete > a:link,
#bottom a:link { color: #ddd ; }
.file a:visited,
.corps h2 a:visited,
.corps h3 a:visited,
.corps h4 a:visited,
#entete > a:visited,
#bottom a:visited,
{ color: #ccc ;}
.file a:active, .file a:hover,
.corps h2 a:active, .corps h2 a:hover,
.corps h3 a:active, .corps h3 a:hover,
.corps h4 a:active, .corps h4 a:hover,
#bottom a:active, #bottom a:hover { color: #cc0000; }
/* fond rouge */
.corps h1,
#titre,
#blocMessage {
background-image: url("img/red.jpg");
background-repeat: no-repeat;
background-position: 50% 50%;
color: #fff;
background-color: #6c0000;
border-color: #6c0000
}
.corps h1 a,
#titre a,
#blocMessage a {font-weight: bold; text-decoration: none; }
.corps h1 a:link,
#titre a:link,
#blocMessage a:link { color: #ccc ; }
.corps h1 a:visited,
#titre a:visited,
#blocMessage a:visited { color: #aaa ; }
.corps h1 a:active,
#titre a:active,
#blocMessage a:active { color: #000; }
.corps h1 a:hover,
#titre a:hover,
#blocMessage a:hover { color: #000; }
/* les fontes */
#boutonMessage {color: black; font-size: 10px; font-family: sans-serif; }
body {
font-family: Optima, Arial, Helvetica, sans-serif;
}
a { text-decoration: none; }
#liens, #choix, #sousliens { font-weight: bold; }
ul {
list-style: square;
}
/* le style des blocs de liens */
#liens ul,
#choix ul,
#sousliens ul {
list-style: none;
padding-left: 10px;
margin-top:0px;
margin-bottom: 0px;
}
/* les borders (pas les couleurs) */
/* bord arrondi avec reflet taille 10 */
pre.twilight, #bottom, #blocMessage, #choix, #liens, #sousliens, #presentation,
#presentation, #Menu, .corps h1, .corps h2,
.corps h3, .corps h4, .corps, #photos {
border-style: solid;
border-width: 1px 1px 1px 1px;
/* background-image: url("img/reflet10.png") ; */
/*background-repeat: repeat-x; */
/*
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
*/
-moz-border-radius-topleft: 0px;
-moz-border-radius-topright: 10px;
-moz-border-radius-bottomleft: 10px;
-moz-border-radius-bottomright: 10px;
-webkit-border-top-left-radius: 0px;
-webkit-border-bottom-left-radius: 10px;
-webkit-border-top-right-radius: 10px;
-webkit-border-bottom-right-radius: 10px;
}
#content {
-moz-border-radius-bottomleft: 20px;
-moz-border-radius-bottomright: 20px;
-webkit-border-bottom-left-radius: 20px;
-webkit-border-bottom-right-radius: 20px;
border-bottom-left-radius: 20px;
border-bottom-right-radius: 20px;
border-style: none;
}
/* bord arrondi avec reflet taille 20 */
#titre, .corps {
-moz-border-radius-topleft: 0px;
-moz-border-radius-topright: 20px;
-moz-border-radius-bottomleft: 20px;
-moz-border-radius-bottomright: 20px;
-webkit-border-top-left-radius: 0px;
-webkit-border-bottom-left-radius: 20px;
-webkit-border-top-right-radius: 20px;
-webkit-border-bottom-right-radius: 20px;
border-radius: 20px;
border-style: none;
border-width: 2px ;
/* background-image: url("img/reflet20.png") ; */
/* background-repeat: repeat-x; */
}
#blocMessage {
border-style: solid;
border-width: 1px 1px 1px 1px;
-moz-border-radius-topleft: 0px;
-moz-border-radius-topright: 0px;
-moz-border-radius-bottomleft: 20px;
-moz-border-radius-bottomright: 20px;
-webkit-border-top-left-radius: 0px;
-webkit-border-top-right-radius: 0px;
-webkit-border-bottom-left-radius: 10px;
-webkit-border-bottom-right-radius: 10px;
}
#boutonMessage {
-moz-border-radius: .5em;
-webkit-border-radius: .5em;
border-radius: .5em;
}
/* les ombres */
.ombre {
background-image: url("img/ombre.jpg");
background-repeat: repeat-x;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileVersion</key>
<integer>2</integer>
</dict>
</plist>

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

202
output/Scratch/js/MathJax/COPYING.txt vendored Normal file
View file

@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

43
output/Scratch/js/MathJax/MathJax.js vendored Normal file

File diff suppressed because one or more lines are too long

55
output/Scratch/js/MathJax/README.txt vendored Normal file
View file

@ -0,0 +1,55 @@
OVERVIEW:
MathJax is an open-source JavaScript display engine for LaTeX and
MathML that works in all modern browsers. It was designed with the
goal of consolidating the recent advances in web technologies into a
single, definitive, math-on-the-web platform supporting the major
browsers and operating systems. It requires no setup on the part of
the user (no plugins to downlaod or software to install), so the page
author can write web documents that include mathematics and be
confident that users will be able to view it naturally and easily.
One simply includes MathJax and some mathematics in a web page, and
MathJax does the rest.
Some of the main features of MathJax include:
o High-quality display of LaTeX and MathML math notation in HTML pages
o Supported in most browsers with no plug-ins, extra fonts, or special
setup for the reader
o Easy for authors, flexible for publishers, extensible for developers
o Supports math accessibility, cut and paste interoperability and other
advanced functionality
o Powerful API for integration with other web applications
See http://www.mathjax.org/ for additional details.
INSTALLATION AND USAGE:
The MathJax installation and usage documentation is available on the
docs/html directory of the MathJax distribution (see
docs/html/index.html for the starting point). The documents are also
available on the MathJax web site on line at
http://www.mathjax.org/docs/
COMMUNITY:
The main MathJax website is www.mathjax.org, and it includes announcements
and other important information. MathJax also has a SourceForge site at
http://sourceforge.net/projects/mathjax/ that includes the download site
for the MathJax distribution, the bug-tracker for reporting bugs, and
several user forums for asking questions and getting assistance:
Bug tracker: http://sourceforge.net/tracker/?group_id=261188&atid=1240827
MathJax Help: http://sourceforge.net/projects/mathjax/forums/forum/948701
Open Discussion: http://sourceforge.net/projects/mathjax/forums/forum/948700
Before reporting a bug, please check that it has not already been reported.
Also, please use the bug tracker for reporting bugs rather than the help
forum.

View file

@ -0,0 +1,18 @@
/*
* ../SourceForge/trunk/mathjax/config/MMLorHTML.js
*
* Copyright (c) 2010 Design Science, Inc.
*
* Part of the MathJax library.
* See http://www.mathjax.org for details.
*
* Licensed under the Apache License, Version 2.0;
* you may not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*/
MathJax.Unpack([
['(function(c){var i="1.0";var g=','MathJax.Hub','.Insert({prefer:{MSIE:"MML",Firefox:"MML",Opera:"HTML",other:"HTML"}},(',1,'.config.MMLorHTML||{}));var e={Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4};var h=(c','.Browser','.version==="0.0"||','c.Browser.versionAtLeast','(e[c',5,']||0));var b;try{new ActiveXObject("MathPlayer.Factory.1");b=true}catch(d){b=false}var f=(c',5,'.isFirefox&&',7,'("1.5"))||(c',5,'.isMSIE&&b)||(c',5,'.isOpera&&',7,'("9.52"));var a=(g.prefer&&typeof(g.prefer)==="object"?g.prefer[',1,5,']||g.prefer.other||"HTML":g.prefer);if(h||f){if(f&&(a==="MML"||!h)){','c.config.jax.unshift("output/','NativeMML")}else{',24,'HTML-CSS")}}else{c.PreProcess','.disabled=true;','c.prepareScripts',28,'MathJax.Message.Set("Your browser does not support MathJax",null,4000);c.Startup.signal.Post("MathJax not supported")}})(',1,');MathJax.Ajax.loadComplete("[MathJax]/config/MMLorHTML.js");']
]);

View file

@ -0,0 +1,590 @@
/*************************************************************
*
* MathJax/config/MathJax.js
*
* This configuration file is loaded when there is no explicit
* configuration script in the <script> tag that loads MathJax.js
*
* Use it to customize the MathJax settings. See comments below.
*
* ---------------------------------------------------------------------
*
* Copyright (c) 2009-10 Design Science, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
MathJax.Hub.Config({
//
// A comma-separated list of configuration files to load
// when MathJax starts up. E.g., to define local macros, etc.
// The default directory is the MathJax/config directory.
//
// Example: config: ["local/local.js"],
// Example: config: ["local/local.js","MMLtoHTML.js"],
//
config: [],
//
// A comma-separated list of CSS stylesheet files to be loaded
// when MathJax starts up. The default directory is the
// MathJax/config directory.
//
// Example: styleSheets: ["MathJax.css"],
//
styleSheets: [],
//
// Styles to be defined dynamically at startup time.
//
// Example:
// styles: {
// ".MathJax .merror": {
// color: "blue",
// "background-color": "green"
// }
// },
//
styles: {},
//
// A comma-separated list of input and output jax to initialize at startup.
// Their main code is loaded only when they are actually used, so it is not
// inefficient to include jax that may not actually be used on the page. These
// are found in the MathJax/jax directory.
//
jax: ["input/TeX","output/HTML-CSS"],
//
// A comma-separated list of extensions to load at startup. The default
// directory is MathJax/extensions.
//
// Example: extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js"],
//
extensions: ["tex2jax.js"],
//
// Patterns to remove from before and after math script tags. If you are not
// using one of the preprocessors (e.g., tex2jax), you need to insert something
// extra into your HTML file in order to avoid a bug in Internet Explorer. IE
// removes spaces from the DOM that it thinks are redundent, and since a SCRIPT
// tag usually doesn't add content to the page, if there is a space before and after
// a MathJax SCRIPT tag, IE will remove the first space. When MathJax inserts
// the typeset mathematics, this means there will be no space before it and the
// preceeding text. In order to avoid this, you should include some "guard characters"
// before or after the math SCRIPT tag; define the patterns you want to use below.
// Note that these are used as regular expressions, so you will need to quote
// special characters. Furthermore, since they are javascript strings, you must
// quote javascript special characters as well. So to obtain a backslash, you must
// use \\ (doubled for javascript). For example, "\\[" is the pattern \[ in the
// regular expression. That means that if you want an actual backslash in your
// guard characters, you need to use "\\\\" in order to get \\ in the regular
// expression, and \ in the actual text. If both preJax and postJax are defined,
// both must be present in order to be removed.
//
// See also the preRemoveClass comments below.
//
// Example:
// preJax: "\\\\\\\\", // makes a double backslash the preJax text
// or
// preJax: "\\[\\[", // jax scripts must be enclosed in double brackets
// postJax: "\\]\\]",
//
preJax: null,
postJax: null,
//
// The CSS class for a math preview to be removed preceeding a MathJax
// SCRIPT tag. If the tag just before the MathJax SCRIPT tag is of this
// class, its contents are removed when MathJax processes the SCRIPT
// tag. This allows you to include a math preview in a form that will
// be displayed prior to MathJax performing its typesetting. It also
// avoids the Internet Explorer space-removal bug, and can be used in
// place of preJax and postJax if that is more convenient.
//
// For example
//
// <span class="MathJax_Preview">[math]</span><script type="math/tex">...</script>
//
// would display "[math]" in place of the math until MathJax is able to typeset it.
//
preRemoveClass: "MathJax_Preview",
//
// This value controls whether the "Processing Math: nn%" message are displayed
// in the lower left-hand corner. Set to "false" to prevent those messages (though
// file loading and other messages will still be shown).
//
showProcessingMessages: true,
//
// This value controls the verbosity of the messages in the lower left-hand corner.
// Set it to "none" to eliminate all messages, or set it to "simple" to show
// "Loading..." and "Processing..." rather than showing the full file name and the
// percentage of the mathematics processed.
//
messageStyle: "normal",
//
// These two parameters control the alignment and shifting of displayed equations.
// The first can be "left", "center", or "right", and determines the alignment of
// displayed equations. When the alignment is not "center", the second determines
// an indentation from the left or right side for the displayed equations.
//
displayAlign: "center",
displayIndent: "0em",
//
// Normally MathJax will perform its starup commands (loading of
// configuration, styles, jax, and so on) as soon as it can. If you
// expect to be doing additional configuration on the page, however, you
// may want to have it wait until the page's onload hander is called. If so,
// set this to "onload".
//
delayStartupUntil: "none",
//
// Normally MathJax will typeset the mathematics on the page as soon as
// the page is loaded. If you want to delay that process, in which case
// you will need to call MathJax.Hub.Typeset() yourself by hand, set
// this value to true.
//
skipStartupTypeset: false,
//============================================================================
//
// These parameters control the tex2jax preprocessor (when you have included
// "tex2jax.js" in the extensions list above).
//
tex2jax: {
//
// The Id of the element to be processed (defaults to full document)
//
element: null,
//
// The delimiters that surround in-line math expressions. The first in each
// pair is the initial delimiter and the second is the terminal delimiter.
// Comment out any that you don't want, but be sure there is no extra
// comma at the end of the last item in the list -- some browsers won't
// be able to handle that.
//
inlineMath: [
['$','$'], // uncomment this for standard TeX math delimiters
['\\(','\\)']
],
//
// The delimiters that surround displayed math expressions. The first in each
// pair is the initial delimiter and the second is the terminal delimiter.
// Comment out any that you don't want, but be sure there is no extra
// comma at the end of the last item in the list -- some browsers won't
// be able to handle that.
//
displayMath: [
['$$','$$'],
['\\[','\\]']
],
//
// This array lists the names of the tags whose contents should not be
// processed by tex2jax (other than to look for ignore/process classes
// as listed below). You can add to (or remove from) this list to prevent
// MathJax from processing mathematics in specific contexts.
//
skipTags: ["script","noscript","style","textarea","pre","code"],
//
// This is the class name used to mark elements whose contents should
// not be processed by tex2jax (other than to look for the
// processClass pattern below). Note that this is a regular
// expression, and so you need to be sure to quote any regexp special
// characters. The pattern is automatically preceeded by '(^| )(' and
// followed by ')( |$)', so your pattern will have to match full words
// in the class name. Assigning an element this class name will
// prevent `tex2jax` from processing its contents.
//
ignoreClass: "tex2jax_ignore",
//
// This is the class name used to mark elements whose contents SHOULD
// be processed by tex2jax. This is used to turn on processing within
// tags that have been marked as ignored or skipped above. Note that
// this is a regular expression, and so you need to be sure to quote
// any regexp special characters. The pattern is automatically
// preceeded by '(^| )(' and followed by ')( |$)', so your pattern
// will have to match full words in the class name. Use this to
// restart processing within an element that has been marked as
// ignored above.
//
processClass: "tex2jax_process",
//
// Set to "true" to allow \$ to produce a dollar without starting in-line
// math mode. If you uncomment the ['$','$'] line above, you should change
// this to true so that you can insert plain dollar signs into your documents
//
processEscapes: false,
//
// Controls whether tex2jax processes LaTeX environments outside of math
// mode. Set to "false" to prevent processing of environments except within
// math mode.
//
processEnvironments: true,
//
// Controls whether tex2jax inserts MathJax_Preview spans to make a
// preview available, and what preview to use, when it locates in-line
// and display mathetics on the page. The default is "TeX", which
// means use the TeX code as the preview (until it is processed by
// MathJax). Set to "none" to prevent the previews from being
// inserted (the math will simply disappear until it is typeset). Set
// to an array containing the description of an HTML snippet in order
// to use the same preview for all equations on the page (e.g., you
// could have it say "[math]" or load an image).
//
// E.g., preview: ["[math]"],
// or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]]
//
preview: "TeX"
},
//============================================================================
//
// These parameters control the mml2jax preprocessor (when you have included
// "mml2jax.js" in the extensions list above).
//
mml2jax: {
//
// The Id of the element to be processed (defaults to full document)
//
element: null,
//
// Controls whether mml2jax inserts MathJax_Preview spans to make a
// preview available, and what preview to use, whrn it locates
// mathematics on the page. The default is "alttext", which means use
// the <math> tag's alttext attribute as the preview (until it is
// processed by MathJax), if the tag has one. Set to "none" to
// prevent the previews from being inserted (the math will simply
// disappear until it is typeset). Set to an array containing the
// description of an HTML snippet in order to use the same preview for
// all equations on the page (e.g., you could have it say "[math]" or
// load an image).
//
// E.g., preview: ["[math]"],
// or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]]
//
preview: "alttext"
},
//============================================================================
//
// These parameters control the jsMath2jax preprocessor (when you have included
// "jsMath2jax.js" in the extensions list above).
//
jsMath2jax: {
//
// The Id of the element to be processed (defaults to full document)
//
element: null,
//
// Controls whether jsMath2jax inserts MathJax_Preview spans to make a
// preview available, and what preview to use, when it locates
// mathematics on the page. The default is "TeX", which means use the
// TeX code as the preview (until it is processed by MathJax). Set to
// "none" to prevent the previews from being inserted (the math will
// simply disappear until it is typeset). Set to an array containing
// the description of an HTML snippet in order to use the same preview
// for all equations on the page (e.g., you could have it say "[math]"
// or load an image).
//
// E.g., preview: ["[math]"],
// or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]]
//
preview: "TeX"
},
//============================================================================
//
// These parameters control the TeX input jax.
//
TeX: {
//
// This specifies the side on which \tag{} macros will place the tags.
// Set to "left" to place on the left-hand side.
//
TagSide: "right",
//
// This is the amound of indentation (from right or left) for the tags.
//
TagIndent: ".8em",
//
// This is the width to use for the multline environment
//
MultLineWidth: "85%",
//
// List of macros to define. These are of the form
// name: value
// where 'value' is the replacement text for the macro \name.
// The 'value' can also be [value,n] where 'value' is the replacement
// text and 'n' is the number of parameters for the macro.
// Note that backslashes must be doubled in the replacement string.
//
// E.g.,
//
// Macros: {
// RR: '{\\bf R}',
// bold: ['{\\bf #1}', 1]
// }
//
Macros: {}
},
//============================================================================
//
// These parameters control the MathML inupt jax.
//
MathML: {
//
// This specifies whether to use TeX spacing or MathML spacing when the
// HTML-CSS output jax is used.
//
useMathMLspacing: false
},
//============================================================================
//
// These parameters control the HTML-CSS output jax.
//
"HTML-CSS": {
//
// This controls the global scaling of mathematics as compared to the
// surrounding text. Values between 100 and 133 are usually good choices.
//
scale: 100,
//
// This is a list of the fonts to look for on a user's computer in
// preference to using MathJax's web-based fonts. These must
// correspond to directories available in the jax/output/HTML-CSS/fonts
// directory, where MathJax stores data about the characters available
// in the fonts. Set this to ["TeX"], for example, to prevent the
// use of the STIX fonts, or set it to an empty list, [], if
// you want to force MathJax to use web-based or image fonts.
//
availableFonts: ["STIX","TeX"],
//
// This is the preferred font to use when more than one of those
// listed above is available.
//
preferredFont: "TeX",
//
// This is the web-based font to use when none of the fonts listed
// above are available on the user's computer. Note that currently
// only the TeX font is available in a web-based form. Set this to
//
// webFont: null,
//
// if you want to prevent the use of web-based fonts.
//
webFont: "TeX",
//
// This is the font to use for image fallback mode (when none of the
// fonts listed above are available and the browser doesn't support
// web-fonts via the @font-face CSS directive). Note that currently
// only the TeX font is available as an image font. Set this to
//
// imageFont: null,
//
// if you want to prevent the use of image fonts (e.g., you have not
// installed the image fonts on your server). In this case, only
// browsers that support web-based fonts will be able to view your pages
// without having the fonts installed on the client computer. The browsers
// that support web-based fonts include: IE6 and later, Chrome, Safari3.1
// and above, Firefox3.5 and later, and Opera10 and later. Note that
// Firefox3.0 is NOT on this list, so without image fonts, FF3.0 users
// will be required to to download and install either the STIX fonts or the
// MathJax TeX fonts.
//
imageFont: "TeX",
//
// This controls whether the MathJax contextual menu will be available
// on the mathematics in the page. If true, then right-clicking (on
// the PC) or control-clicking (on the Mac) will produce a MathJax
// menu that allows you to get the source of the mathematics in
// various formats, change the size of the mathematics relative to the
// surrounding text, and get information about MathJax.
//
// Set this to false to disable the menu. When true, the MathMenu
// items below configure the actions of the menu.
//
showMathMenu: true,
//
// This allows you to define or modify the styles used to display
// various math elements created by MathJax.
//
// Example:
// styles: {
// ".MathJax_Preview": {
// "font-size": "80%", // preview uses a smaller font
// color: "red" // and is in red
// }
// }
//
styles: {},
//
// Configuration for <maction> tooltips
// (see also the #MathJax_Tooltip CSS in MathJax/jax/output/HTML-CSS/config.js,
// which can be overriden using the styles values above).
//
tooltip: {
delayPost: 600, // milliseconds delay before tooltip is posted after mouseover
delayClear: 600, // milliseconds delay before tooltip is cleared after mouseout
offsetX: 10, offsetY: 5 // pixels to offset tooltip from mouse position
}
},
//============================================================================
//
// These parameters control the NativeMML output jax.
//
NativeMML: {
//
// This controls the global scaling of mathematics as compared to the
// surrounding text. Values between 100 and 133 are usually good choices.
//
scale: 100,
//
// This controls whether the MathJax contextual menu will be available
// on the mathematics in the page. If true, then right-clicking (on
// the PC) or control-clicking (on the Mac) will produce a MathJax
// menu that allows you to get the source of the mathematics in
// various formats, change the size of the mathematics relative to the
// surrounding text, and get information about MathJax.
//
// Set this to false to disable the menu. When true, the MathMenu
// items below configure the actions of the menu.
//
// There is a separate setting for MSIE, since the code to handle that
// is a bit delicate; if it turns out to have unexpected consequences,
// you can turn it off without turing off other browser support.
//
showMathMenu: true,
showMathMenuMSIE: true,
//
// This allows you to define or modify the styles used to display
// various math elements created by MathJax.
//
// Example:
// styles: {
// ".MathJax_MathML": {
// color: "red" // MathML is in red
// }
// }
//
styles: {}
},
//============================================================================
//
// These parameters control the contextual menus that are available on the
// mathematics within the page (provided the showMathMenu value is true above).
//
MathMenu: {
//
// This is the hover delay for the display of submenus in the
// contextual menu. When the mouse is still over a submenu label for
// this long, the menu will appear. (The menu also will appear if you
// click on the label.) It is in milliseconds.
//
delay: 400,
//
// This is the URL for the MathJax Help menu item.
//
helpURL: "http://www.mathjax.org/help/user/",
//
// These control whether the "Math Renderer", "Font Preferences",
// and "Contextual Menu" submenus will be displayed or not.
//
showRenderer: true,
showFontMenu: false,
showContext: false,
//
// These are the settings for the Show Source window. The initial
// width and height will be reset after the source is shown in an
// attempt to make the window fit the output better.
//
windowSettings: {
status: "no", toolbar: "no", locationbar: "no", menubar: "no",
directories: "no", personalbar: "no", resizable: "yes", scrollbars: "yes",
width: 100, height: 50
},
//
// This allows you to change the CSS that controls the menu
// appearance. See the extensions/MathMenu.js file for details
// of the default settings.
//
styles: {}
},
//============================================================================
//
// These parameters control the MMLorHTML configuration file.
// NOTE: if you add MMLorHTML.js to the config array above,
// you must REMOVE the output jax from the jax array.
//
MMLorHTML: {
//
// The output jax that is to be preferred when both are possible
// (set to "MML" for native MathML, "HTML" for MathJax's HTML-CSS output jax).
//
prefer: {
MSIE: "MML",
Firefox: "MML",
Opera: "HTML",
other: "HTML"
}
}
});
MathJax.Ajax.loadComplete("[MathJax]/config/MathJax.js");

Some files were not shown because too many files have changed in this diff Show more