Initial dev (look at history of master for older)
1
Rakefile
Normal file
|
@ -0,0 +1 @@
|
||||||
|
require 'nanoc3/tasks'
|
116
Rules
Normal 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
|
@ -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
|
@ -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
|
@ -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">↓ Menu ↓</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> }+ 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] + %{ <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
|
@ -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()">↑</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
|
@ -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
|
@ -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
|
@ -0,0 +1,3 @@
|
||||||
|
-----
|
||||||
|
-----
|
||||||
|
<%= xml_sitemap %>
|
15
lib/analytics.rb
Normal 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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -0,0 +1,3 @@
|
||||||
|
def mail_perso
|
||||||
|
%{<a href="mailto:yann.esposito@gmail.com">yann.esposito@gmail.com</a>}
|
||||||
|
end
|
32
lib/multi.rb
Normal 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
|
@ -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">»</span>',p)
|
||||||
|
end
|
||||||
|
if ! liste.empty? then
|
||||||
|
liste = [ link_to_unless_current(page[key]+' <span class="nicer">»</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)+%{ <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> }+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
|
@ -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
|
@ -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
|
@ -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(/&/,'&').gsub(/ /,' ').gsub(/</,'<').gsub(/>/,'>')
|
||||||
|
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">↑</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
|
@ -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}"> ➥ #{@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
|
@ -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;|≠)/) { " "+$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>©</small>}
|
||||||
|
end.gsub(/\(r\)/) do
|
||||||
|
%{<small>®</small>}
|
||||||
|
end.gsub(/-(>|>)/) do
|
||||||
|
%{→}
|
||||||
|
end.gsub(/(<|<)-/) do
|
||||||
|
%{←}
|
||||||
|
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
|
0
output/Scratch/blank.html
Normal file
216
output/Scratch/css/blue.css
Normal 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;
|
||||||
|
}
|
229
output/Scratch/css/default.css
Normal 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 ;
|
||||||
|
}
|
||||||
|
*/
|
48
output/Scratch/css/disqus.css
Normal 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;
|
||||||
|
}
|
2
output/Scratch/css/iPhone.css
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#content { width: 100%; font-size: 20px; }
|
||||||
|
.corps { padding-right: 2px; padding-left: 2px;}
|
8
output/Scratch/css/idc.css
Normal 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
|
@ -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}
|
BIN
output/Scratch/css/img/background.png
Normal file
After Width: | Height: | Size: 761 B |
BIN
output/Scratch/css/img/codeColor.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
output/Scratch/css/img/mainColor.png
Normal file
After Width: | Height: | Size: 163 KiB |
BIN
output/Scratch/css/img/revealColor.png
Normal file
After Width: | Height: | Size: 214 KiB |
BIN
output/Scratch/css/img/secondColor.png
Normal file
After Width: | Height: | Size: 160 KiB |
BIN
output/Scratch/css/img/separator.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
4
output/Scratch/css/js.css
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
.en, .fr {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
21
output/Scratch/css/nojs.css
Normal 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;
|
||||||
|
}
|
1446
output/Scratch/css/originaldisqus.css
Normal file
8
output/Scratch/css/shadows.css
Normal 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; }
|
141
output/Scratch/css/twilight.css
Normal 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
|
@ -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;
|
||||||
|
}
|
||||||
|
|
BIN
output/Scratch/img/about/avatar.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
output/Scratch/img/about/cv/cv.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
output/Scratch/img/about/yann1.jpg
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
output/Scratch/img/blog/03_losthighway/intro.jpg
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
output/Scratch/img/blog/03_losthighway/mysteryman.jpg
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
output/Scratch/img/blog/03_losthighway/rorschach.gif
Normal file
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 151 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 96 KiB |
BIN
output/Scratch/img/blog/2010-07-09-Indecidabilities/3_corps.png
Normal file
After Width: | Height: | Size: 177 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 153 KiB |
After Width: | Height: | Size: 148 KiB |
After Width: | Height: | Size: 148 KiB |
BIN
output/Scratch/img/blog/2010-07-09-Indecidabilities/genesis.png
Normal file
After Width: | Height: | Size: 281 KiB |
After Width: | Height: | Size: 292 KiB |
After Width: | Height: | Size: 288 KiB |
After Width: | Height: | Size: 393 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 132 KiB |
BIN
output/Scratch/img/blog/mvc/Screenshot_v0.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
output/Scratch/img/bullet-feed.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
output/Scratch/img/favicon.ico
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
output/Scratch/img/loading.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
output/Scratch/img/menu/rss-128.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
output/Scratch/img/menu/rss-32.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
output/Scratch/img/menu/rss-48.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
output/Scratch/img/menu/rss-64.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
output/Scratch/img/presentation.drawit/Data
Normal file
8
output/Scratch/img/presentation.drawit/Info.plist
Normal 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>
|
BIN
output/Scratch/img/presentation.drawit/QuickLook/Preview.jpg
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
output/Scratch/img/presentation.drawit/QuickLook/Thumbnail.jpg
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
output/Scratch/img/presentation.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
output/Scratch/img/softwares/yaquabubbles/screenshot1.png
Normal file
After Width: | Height: | Size: 129 KiB |
BIN
output/Scratch/img/softwares/yclock/screenshot1.png
Normal file
After Width: | Height: | Size: 56 KiB |
202
output/Scratch/js/MathJax/COPYING.txt
vendored
Normal 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
55
output/Scratch/js/MathJax/README.txt
vendored
Normal 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.
|
18
output/Scratch/js/MathJax/config/MMLorHTML.js
vendored
Normal 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");']
|
||||||
|
]);
|
||||||
|
|
590
output/Scratch/js/MathJax/config/MathJax.js
vendored
Normal 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");
|