[img[iconesWiki/Livres.ico][ListesMémoire]] //WikiPhilo//  mon petit wiki perso ! (~TiddlyWiki <>)
[img[iconesWiki/Livres.ico][ListesMémoire]] //WikiPhilo//  mon petit wiki perso ! (~TiddlyWiki <>)
WikiPhilo ▾



Philosophie▾ - Sciences▾ - Littérature▾ - Religion▾

Auteurs▾ - Livres▾ - Articles▾

Concepts▾ - Théories▾

Mots clefs▾

Idées▾





Philosophie

Philosophie de la connaissance – Philosophie des sciences – Philosophie de la biologie – Philosophie du langage – Philosophie de la logique – Philosophie de l'histoire – Philosophie de l'action – Herméneutique – Esthétique




Philosophie de la biologie


Sciences

Biologie – Physique – Mécanique quantique




Biologie

Darwinisme – Biologie synthétique – BioSémiotique – Organicisme – Vitalisme





Concepts

Objectivité – Fonction – Téléologie – Normativité – Explication – Signification




Théories

Naturalisme – Darwinisme – Intentional stance





Auteurs

Mark Bedau – Daniel Dennett – Ernst Mayr – R.G. Millikan – Ernest Nagel





<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
<<tiddler Concepts>>
+++[voir texte]
En vidéo : un curieux ARN témoin de l'origine de la vie ?
Par Jean Etienne, Futura-Sciences

Un champignon microscopique a peut-être fourni une clé de l'apparition de la vie. L'association intime entre un ARN, cousin de l'ADN, et d'une protéine, qui joue le rôle d'une enzyme, a pu être étudiée en détail. Or, on pense que c'est ainsi que tout a commencé...

Le problème tient un peu de celui de l'œuf et de la poule. Qui donc est apparu le premier ? L'ADN, qui enregistre l'information pour fabriquer les protéines ? Ou bien l'ARN et la machinerie cellulaire pour réaliser cette fabrication avec les informations lues dans l'ADN ? Seul, l'ADN ne sert à rien, et, sans lui, la machine à fabriquer les protéines ne saura pas quelles molécules construire.

Aujourd'hui, on a de bonnes raisons de penser que l'ARN, qui peut enregistrer de l'information tout comme l'ADN, a joué un rôle d'intermédiaire au tout début de la vie sur Terre, avant l'adoption générale de l'ADN. On parle même d'un « monde à ARN ». Cette molécule se serait liée à des protéines, capables de catalyser les réactions biochimiques, devenant donc ce que l'on appelle des enzymes. C'est une telle association qui vient d'être finement observée dans un champignon unicellulaire par une équipe américaine, qui publie ses résultats dans Nature.

Le champignon Neurospora crassa. Crédit : Purdue University Department de Biochemistry

« Il est hautement probable que l’ARN, ou une molécule similaire, a été une des premières molécules de la vie, transmettant le code génétique de génération en génération tout en se repliant au sein de la structure cellulaire de façon à pouvoir y fonctionner, avance la biologiste Barbara Golden, de la Purdue University, co-auteur de cette étude. A un certain moment, cette molécule d’ARN a évolué et est devenue capable d’utiliser les fonctions de certaines protéines. »

Les chercheurs ont utilisé comme une machine à remonter le temps l’ARN d'un champignon microscopique, en l’occurrence Neurospora crassa, de la division des Ascomycètes, un organisme simple déjà largement utilisé comme modèle. Son génome (comportant 43 mégabases et environ 10.000 gènes) a été complètement séquencé le 23 avril 2003. Cet ARN a été cristallisé en compagnie d'une protéine, à laquelle il est intimement lié.

Sur la forme cristallisée de l'ARN fixé à sa protéine, les chercheurs ont pu étudier la structure de cette association. L'ARN est à droite et la protéine à gauche. Crédit : Barbara Golden, Purdue University Department de Biochemistry

Protéine à double face

Ce zoom a révélé deux informations capitales. Tel un masque à deux faces, la protéine de ce complexe présente deux parties, chacune lui donnant des propriétés différentes. Seconde découverte, alors que l'une de ces faces montre les caractéristiques d'une enzyme, l'autre semble lui permettre de jouer le rôle classique de l'ARN dans les organismes, à savoir la lecture du code génétique de l'ADN.

« Cette structure cristalline fournit une image instantanée qui explique comment, durant l’évolution, les protéines sont venues assister les molécules d’ARN pour les aider dans leurs fonctions biologiques, et finir par  prendre en charge certains des rôles [de catalyse, NDLR] précédemment joués par l’ARN. » explique Barbara Golden.

Association entre une molécule d’ARN de champignon microscopique et une protéine, peut-être un moment-clé du passage de l’inanimé à la vie. Crédit Purdue University

« Evidemment, nous ne pouvons pas observer directement le passage de l’ARN au complexe ARN-protéine puis à l’ADN. Il nous faudrait pour cela une véritable machine à remonter le temps... tempère Barbara Golden. Mais en utilisant cette protéine de ce champignon, nous pouvons voir ce processus à l'œuvre aujourd'hui ».

Ce n'est pas la première fois que Lambowitz, Paukstelis et leur équipe de chercheurs de l’université du Texas s’intéressent à ce champignon. Ils en avaient déjà étudié une autre protéine et montré comment les processus biochimiques pouvaient progresser d’un monde ARN/protéine vers une structure d’ADN. Cette protéine stabilise l'ARN et lui permet de mieux se fixer à l'ADN au niveau d'un gène afin d'en réaliser une copie. Quant à l'ARN de ce complexe, il est capable, lui, de catalyser une certaine réaction chimique pourvu qu'il soit associé à sa protéine.

Ces études très fondamentales sur l'histoire de la vie pourraient aussi déboucher sur des applications pratiques. Selon Alan Lambowitz, autre co-auteur, ces résultats ouvrent la voie au développement de médicaments antifongiques. Cette possibilité  sera bientôt étudiée par l'équipe.

Commenter cette news ou lire les commentaires
La biologiste Barbara Golden devant le complexe ARN-protéine. Crédit : Purdue Agricultural Communication/Tom Campbell
La biologiste Barbara Golden devant le complexe ARN-protéine. Crédit : Purdue Agricultural Communication/Tom Campbell

Source: [[Actualité > En vidéo : un curieux ARN témoin de l'origine de la vie ?|http://www.futura-sciences.com/fr/sinformer/actualites/news/t/genetique-1/d/en-video-un-curieux-arn-temoin-de-lorigine-de-la-vie_14116/]]
===

++++
<html><div align="center"><iframe src="http://www.futura-sciences.com/fr/sinformer/actualites/news/t/genetique-1/d/en-video-un-curieux-arn-temoin-de-lorigine-de-la-vie_14116/"0" frameborder="0" width="100%" height="600"></iframe></div></html>
===
+++[voir texte]
Mars a synthétisé des briques de la vie !
Par Laurent Sacco, Futura-Sciences

La mondialement célèbre météorite martienne Allan Hills 84001 fait à nouveau parler d’elle. A défaut de fournir une preuve indiscutable de la présence de vie sur Mars dans son passé, elle donne cette fois une preuve que l’environnement martien permet la synthèse de molécules organiques : c’est une première !

On se souvient de l’annonce retentissante faite par la Nasa, le 6 août 1996, de la preuve d’une vie passée sur Mars. En analysant la météorite martienne ALH84001, une achondrite découverte en Antarctique dans la région d’Allan Hills en décembre 1984, d’où son nom, les chercheurs de la Nasa croyaient en effet avoir repéré des fossiles de nanobactéries ne pouvant pas être d’origine terrestre, ou produits par des processus purement géochimiques reproduisant des structures biologiques sans en être vraiment.

La situation s’est obscurcie assez rapidement ces dernières années et ces traces ne sont plus considérées comme une preuve solide de l’apparition de la vie sur Mars il y a des milliards d’années. Toutefois, des scientifiques du Laboratoire de Géophysique de l’Institution Carnegie pensent maintenant avoir démontré, avec cette même météorite, qu’au moins certaines des molécules carbonées de base du vivant étaient bien synthétisées par la planète rouge.

Le message de la contrée des ours en armures

La découverte vient de la comparaison de ce morceau de lave martienne, s’étant cristallisé il y a 4,5 milliards d’années, avec des échantillons de laves terrestres provenant du Svalbard, la contrée que l’on nomme aussi Spitzberg et qui n’est donc pas une simple invention de Philip Pullman dans ses romans aujourd’hui portés à l’écran avec «  A la croisée des mondes ».

Cliquez pour agrandir ALH84001. Crédit : Nasa-Caltech

Les laves du Svalbard étudiées par l'équipe se sont épanchées il y a un million d’années environ en Arctique. Le climat froid se rapproche des conditions martiennes. Or, dans ces laves, on trouve de petites sphères de minéraux carbonatés contenant des molécules organiques étroitement associées à un oxyde de fer assez célèbre sous forme d’un minéral appelé magnétite. Lors d’une éruption volcanique, la magnétite a agi comme un catalyseur au contact de fluides riches en dioxyde de carbone et en eau, bien qu’aucune présence de vie n’ait été possible à ce moment étant donné la température.

Des petites sphères de ce genre ont été trouvées dans ALH84001, et il s’agit donc très vraisemblablement de molécules synthétisées par la chimie martienne et pas par contaminations terrestre ultérieures. C’est la première fois qu’une preuve de ce genre a pu être apportée et elle renforce la conviction que des molécules organiques doivent facilement apparaître à la surface des grosses planètes telluriques dans l’Univers, même quand il y fait froid !

La mission Mars Exploration Rovers, qui sera lancée en 2009, venant épauler Spirit et Opportunity s’ils sont encore actifs, nous en apprendra sans doute davantage.
===

Source: [[Actualité > Mars a synthétisé des briques de la vie !|http://www.futura-sciences.com/fr/sinformer/actualites/news/t/astronomie/d/mars-a-synthetise-des-briques-de-la-vie_13896/]]
++++
<html><div align="center"><iframe src="http://www.futura-sciences.com/fr/sinformer/actualites/news/t/astronomie/d/mars-a-synthetise-des-briques-de-la-vie_13896/"0" frameborder="0" width="100%" height="600"></iframe></div></html>
===
<<options>>
<<option chkSearchList>> Show list of matches in [[SearchResults]]
<<option chkSearchTitles>> Search in tiddler titles
<<option chkSearchText>> Search in tiddler text
<<option chkSearchTags>> Search in tiddler tags
<<option chkSearchFields>> Search in tiddler data fields
<<option chkSearchShadows>> Search in shadow tiddlers
<<option chkSearchTitlesFirst>> Search results show title matches first
<<option chkSearchList>> Search results show list of matching tiddlers
<<option chkSearchByDate>> Search results sorted by modification date 
<<option chkSearchIncremental>> Incremental searching
~TiddlyWiki original: http://www.tiddlywiki.com/

Extensions
http://tiddlyvault.tiddlyspot.com/
http://www.tiddlytools.com/
http://tw.lewcid.org/
http://tiddlywiki.abego-software.de/
http://mptw.tiddlyspot.com/

Tutoriels
http://tiddlyspot.com/twhelp/
http://www.giffmex.org/
[[User's Guide|http://danielbaird.com/tiddlywikiguides/userguide-sample.html#%5B%5BUsing%20TiddlyWiki%5D%5D]]
http://www.tiddlywiki.org/wiki/Main_Page

Groupes Google
http://groups.google.fr/group/TiddlyWiki?hl=fr
|Name|AlbertoRounded|
|Description|Alberto Theme with some rounded corners (Firefox only)|
|ViewTemplate|AlbertoTheme##ViewTemplate|
|EditTemplate|AlbertoTheme##EditTemplate|
|PageTemplate|AlbertoTheme##PageTemplate|
|StyleSheet|##StyleSheet|

!StyleSheet
/*{{{*/

[[AlbertoTheme##StyleSheet]]

.tiddler,
.sliderPanel,
.button,
.tiddlyLink,
.tabContents
{ -moz-border-radius: 1em; }

.tab {
	-moz-border-radius-topleft: 0.5em;
	-moz-border-radius-topright: 0.5em;
}
#topMenu {
	-moz-border-radius-bottomleft: 2em;
	-moz-border-radius-bottomright: 2em;
}

/*}}}*/

|Name|AlbertoTheme|
|Description|Alberto Theme including custom PageLayout|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|
|StyleSheetLayout|##StyleSheetLayout|

!PageTemplate
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
	<div class='headerShadow'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
	<div class='headerForeground'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
</div>
<!-- original MainMenu menu -->
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->

!ViewTemplate
<!--{{{-->
[[AlbertoTheme##ViewTemplateToolbarTop]]


<div class='titleContainer'>
	<span class='title' macro='view title'></span>
	<span macro="miniTag"></span>
</div>


<div class='subtitle'>
	<span macro="showWhenTagged Auteurs"><span macro="formTiddler NouvelAuteurModèle"></span></span>
	<span macro="showWhenTagged Articles"><span macro="formTiddler NouvelArticleModèle"></span></span>
	<span macro="showWhenTagged Livres"><span macro="formTiddler NouveauLivreModèle"></span></span>
	<span macro="showWhenTagged Citations"><span macro="formTiddler NouvelleCitationModèle"></span></span>
</div>

<div macro="showWhenTagged Concepts">
<span macro="tiddler ImageConcepts"></span>
</div>
<div macro="showWhenTagged Problèmes">
<span macro="tiddler ImageProblèmes"></span>
</div>
<div macro="showWhenTagged Théories">
<span macro="tiddler ImageThéories"></span>
</div>
<div macro="showWhen tiddler.tags.contains('Citations') && tiddler.data('isLivre')==true">
<span macro="tiddler RéférenceLivre"></span>
</div>
<div macro="showWhen tiddler.tags.contains('Citations') && tiddler.data('isArticleRevue')==true">
<span macro="tiddler RéférenceArticle"></span>
</div>

<div class='tagged' macro='tags'></div>


<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
	<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div macro="else">
	<div class='viewer'> <span macro='view text wikified'></span><span macro='navigation "" "" plugin'></span></div>
</div>


<div macro="showWhen  tiddler.tags.containsAny(['Articles','Auteurs','Citations','Concepts','Domaines','Disciplines','Idées','Livres','Notes','Problèmes','Théories'])">
<span macro="tiddler TaggedAs"></span>
</div>

<div macro="showWhenTagged ListesMémoire">
<span macro='navigation modified TagsTypesDB ListesMémoire Mémoire Mémoire'></span>
</div>
<div macro="showWhenTagged Auteurs">
<span macro='navigation modified TagsTypesDB Auteurs Auteurs Auteurs'></span>
</div>
<div macro="showWhenTagged Livres">
<span macro='navigation modified TagsTypesDB Livres Livres Livres'></span>
</div>
<div macro="showWhenTagged Articles">
<span macro='navigation modified TagsTypesDB Articles Articles Articles'></span>
</div>
<div macro="showWhenTagged Théories">
<span macro='navigation modified TagsTypesDB Théories Théories Théories'></span>
</div>
<div macro="showWhenTagged Problèmes">
<span macro='navigation modified TagsTypesDB Problèmes Problèmes Problèmes'></span>
</div>
<div macro="showWhenTagged Idées">
<span macro='navigation modified TagsTypesDB Idées Idées Idées'></span>
</div>

<div class="tagglyTagging" macro="tagglyTagging"></div>

[[AlbertoTheme##ViewTemplateToolbarBottom]]

<!--}}}-->

!ViewTemplateToolbarTop
<!--{{{-->
<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
		<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
	</span>
	<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
	<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
	<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
	<span macro="showWhen ! tiddler.tags.containsAny(['systemConfig','systemTheme','systemPalette','Aide','Articles','Auteurs','Citations','Concepts','Domaines','Disciplines','Idées','Livres','Notes','Problèmes','Théories']) "><span macro='tagger source:TagsTypesDB label:"types" exclude:"TagsDB"'></span></span>
	<span macro="showWhen tiddler.tags.containsAny(['Articles','Auteurs','Citations','Concepts','Domaines','Idées','Livres','Notes','Problèmes','Théories']) "><span macro='tagger source:TagsDomainesDB label:"domaines" exclude:"TagsDB"'></span></span>
	<span macro="showWhenTagged Philosophie"><span macro='tagger source:TagsPhilosophieDB label:"philo" exclude:"TagsDB"'></span></span>
	<span macro="showWhenTagged Sciences"><span macro='tagger source:TagsSciencesDB label:"sciences" exclude:"TagsDB"'></span></span>
	<span macro='toolbar +editTiddler newNoteHere references fullscreen collapseTiddler collapseOthers closeOthers closeTiddler > deleteTiddler fields syncing permalink jump'></span>
</div>
<!--}}}-->

!ViewTemplateToolbarBottom
<!--{{{-->
<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
		<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
	</span>
	<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
	<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
	<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
	<span macro='toolbar +editTiddler newNoteHere references fullscreen collapseTiddler collapseOthers closeOthers closeTiddler > deleteTiddler fields syncing permalink jump'><span macro='newNoteHere label="nouvelle note"'></span></span>
</div>
<!--}}}-->


!EditTemplate
<!--{{{-->
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler -cancelTiddler cancelCloseTiddler deleteTiddler wikibar"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div macro='annotations'></div>
<div class="editLabel">Content</div><div class="editor" macro="edit text"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler -cancelTiddler cancelCloseTiddler deleteTiddler wikibar"></div>
<!--}}}-->

!StyleSheet
/*{{{*/
/* machins personalisés pour le fotmatage de texte */
.firstletter{ 
float:left; width:0.75em; font-size:400%; font-family:times,arial; line-height:60%; 
}
.textleft {
text-align:left;
}
.textright {
text-align:right;
}
.textcenter {
text-align:center;
}
.textjustify {
text-align:justify;
}
.textindent1 {
text-indent:25px;
}
.textindent2 {
text-indent:50px;
}
.textindent3 {
text-indent:75px;
}
.textindent4 {
text-indent:100px;
}
.fontsize18pt {
font-size:18pt;
}
.fontsize16pt {
font-size:16pt;
}
.fontsize14pt {
font-size:14pt;
}
.fontsize12pt {
font-size:12pt;
}
.fontsize10pt {
font-size:10pt;
}
.fontsize8pt {
font-size:8pt;
}
.fontboldTimes {
font: bold 12pt Times;
}
.smallcaps {
font-variant:small-caps;
}
/* pour l'image */
.floatleft{
float:left;padding:15px
}
.floatright{
float:right;padding:15px
}
.floatcenter{
float:center;padding:15px
}

/* Couleurs pour le nuage de mots clefs */
.tagCloud span{height: 3.5em; margin: 10px; padding: 10px; width:
300px;}
.tagCloud1{font-size: 100%; font-weight: normal; padding-left: 8px;
color: #000000;}
.tagCloud2{font-size: 120%; font-weight: bold; padding-left: 8px;
color: #3355ff;}
.tagCloud3{font-size: 160%; font-weight: bold; padding-left: 5px;
color: #33bb00;}
.tagCloud4{font-size: 200%; font-weight: bold; padding-left: 5px;
color: #ff9900;}
.tagCloud5{font-size: 230%; font-weight: bold; padding-left: 5px;
color: #ff5511;}
.tagCloud6{font-size: 260%; font-weight: bold; padding-left: 5px;
color: #ff3300;} 

/* a contrasting background so I can see where one tiddler ends and the other begins */
body {
	background: [[ColorPalette::TertiaryLight]];
}

/* sexy colours and font for the header */
.headerForeground {
	color: [[ColorPalette::PrimaryPale]];
}
.headerShadow, .headerShadow a {
	color: [[ColorPalette::PrimaryMid]];
}

/* separate the top menu parts */
.headerForeground, .headerShadow {
	padding: 1em 1em 0;
}

.headerForeground, .headerShadow {
	font-family: 'Trebuchet MS' sans-serif;
	font-weight:bold;
}
.headerForeground .siteSubtitle {
	color: [[ColorPalette::PrimaryLight]];
}
.headerShadow .siteSubtitle {
	color: [[ColorPalette::PrimaryMid]];
}

/* make shadow go and down right instead of up and left */
.headerShadow {
	left: 1px;
	top: 1px;
}

/* prefer monospace for editing */
.editor textarea, .editor input {
	font-family: 'Consolas' monospace;
	background-color:[[ColorPalette::TertiaryPale]];
}


/* sexy tiddler titles */
.title {
	font-size: 250%;
	color: [[ColorPalette::PrimaryLight]];
	font-family: 'Trebuchet MS' sans-serif;
}

/* more subtle tiddler subtitle */
.subtitle {
	padding:0px;
	margin:0px;
	padding-left:1em;
	font-size: 80%;
	color: [[ColorPalette::TertiaryMid]];
}
.subtitle .tiddlyLink {
	color: [[ColorPalette::TertiaryMid]];
}

/* a little bit of extra whitespace */
.viewer {
	padding-bottom:3px;
}

/* don't want any background color for headings */
h1,h2,h3,h4,h5,h6 {
	background-color: transparent;
	color: [[ColorPalette::Foreground]];
}

/* give tiddlers 3d style border and explicit background */
.tiddler {
	background: [[ColorPalette::Background]];
	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
	margin-bottom: 1em;
	padding:1em 2em 2em 1.5em;
	overflow: auto;
}

/* make options slider look nicer */
#sidebarOptions .sliderPanel {
	border:solid 1px [[ColorPalette::PrimaryLight]];
}

/* the borders look wrong with the body background */
#sidebar .button {
	border-style: none;
}

/* this means you can put line breaks in SidebarOptions for readability */
#sidebarOptions br {
	display:none;
}
/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {
	display:inline;
}

.siteTitle {
 margin-bottom: 30px;
}


#displayArea {
	margin: 1em 15.7em 0em 10em; /* marges des tiddlers: up right down left */
}
#topMenu br {
	display: none;
}
#topMenu {
	background: [[ColorPalette::PrimaryMid]];
	color:[[ColorPalette::PrimaryPale]];
}
#topMenu {
	padding:2px;
}
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
	margin-left: 0.5em;
	margin-right: 0.5em;
	padding-left: 3px;
	padding-right: 3px;
	color: [[ColorPalette::PrimaryPale]];
	font-size: 115%;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
	background: [[ColorPalette::PrimaryDark]];
}

/* make 2.2 act like 2.1 with the invisible buttons */
.toolbar {
	visibility:hidden;
}
.selected .toolbar {
	visibility:visible;
}

/* experimental. this is a little borked in IE7 with the button 
 * borders but worth it I think for the extra screen realestate */
.toolbar { float:right; }

/* fix for TaggerPlugin. from sb56637. improved by FND */
.popup li .tagger a {
   display:inline;
}

/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
  padding:0.5em;
  display:block;
}
#sidebarOptions .sliderPanel .select br {
	display:none;
}

/* make it print a little cleaner */
@media print {
	#topMenu {
		display: none ! important;
	}
	/* not sure if we need all the importants */
	.tiddler {
		border-style: none ! important;
		margin:0px ! important;
		padding:0px ! important;
		padding-bottom:2em ! important;
	}
	.tagglyTagging .button, .tagglyTagging .hidebutton {
		display: none ! important;
	}
	.headerShadow {
		visibility: hidden ! important;
	}
	.tagglyTagged .quickopentag, .tagged .quickopentag {
		border-style: none ! important;
	}
	.quickopentag a.button, .miniTag {
		display: none ! important;
	}
}


/*}}}*/

!StyleSheetLayout
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:6em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:4.5em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:.9em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 16em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}

/*}}}*/
|Name|AlbertoThemeOld|
|Description|Alberto Theme including custom PageLayout|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|
|StyleSheetLayout|##StyleSheetLayout|

!PageTemplate
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
	<div class='headerShadow'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
	<div class='headerForeground'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
</div>
<!-- original MainMenu menu -->
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->

!ViewTemplate
<!--{{{-->
[[AlbertoTheme##ViewTemplateToolbar]]


<div class='titleContainer'>
	<span class='title' macro='view title'></span>
	<span macro="miniTag"></span>
</div>


<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>

<div class='tagged' macro='tags'></div>

<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
	<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div macro="else">
	<div class='viewer' macro='view text wikified'></div>
</div>
<div macro="showWhenTagged Concepts">
<span macro="tiddler Concepts"></span>
</div>

<div class="tagglyTagging" macro="tagglyTagging"></div>

[[AlbertoTheme##ViewTemplateToolbar]]

<!--}}}-->

!ViewTemplateToolbar
<!--{{{-->
<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
		<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
	</span>
	<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
	<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
	<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
	<span style="padding:1em;"></span>
	<span macro='toolbar +editTiddler newNoteHere references fullscreen collapseTiddler collapseOthers closeOthers closeTiddler > deleteTiddler fields syncing permalink jump'><span macro='newNoteHere label="nouvelle note"'></span></span>
</div>
<!--}}}-->

!EditTemplate
<!--{{{-->
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler -cancelTiddler cancelCloseTiddler deleteTiddler wikibar"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div macro='annotations'></div>
<div class="editLabel">Content</div><div class="editor" macro="edit text"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler -cancelTiddler cancelCloseTiddler deleteTiddler wikibar"></div>
<!--}}}-->

!StyleSheet
/*{{{*/
/* machins personalisés pour le fotmatage de texte */
.firstletter{ 
float:left; width:0.75em; font-size:400%; font-family:times,arial; line-height:60%; 
}
.textleft {
text-align:left;
}
.textright {
text-align:right;
}
.textcenter {
text-align:center;
}
.textjustify {
text-align:justify;
}
.textindent1 {
text-indent:25px;
}
.textindent2 {
text-indent:50px;
}
.textindent3 {
text-indent:75px;
}
.textindent4 {
text-indent:100px;
}
.fontsize18pt {
font-size:18pt;
}
.fontsize16pt {
font-size:16pt;
}
.fontsize14pt {
font-size:14pt;
}
.fontsize12pt {
font-size:12pt;
}
.fontsize10pt {
font-size:10pt;
}
.fontsize8pt {
font-size:8pt;
}
.fontboldTimes {
font: bold 12pt Times;
}
.smallcaps {
font-variant:small-caps;
}
/* pour l'image */
.floatleft{
float:left;padding:15px
}
.floatright{
float:right;padding:15px
}
.floatcenter{
float:center;padding:15px
}

/* Couleurs pour le nuage de mots clefs */
.tagCloud span{height: 3.5em; margin: 10px; padding: 10px; width:
300px;}
.tagCloud1{font-size: 100%; font-weight: normal; padding-left: 8px;
color: #000000;}
.tagCloud2{font-size: 120%; font-weight: bold; padding-left: 8px;
color: #3355ff;}
.tagCloud3{font-size: 160%; font-weight: bold; padding-left: 5px;
color: #33bb00;}
.tagCloud4{font-size: 200%; font-weight: bold; padding-left: 5px;
color: #ff9900;}
.tagCloud5{font-size: 230%; font-weight: bold; padding-left: 5px;
color: #ff5511;}
.tagCloud6{font-size: 260%; font-weight: bold; padding-left: 5px;
color: #ff3300;} 

/* a contrasting background so I can see where one tiddler ends and the other begins */
body {
	background: [[ColorPalette::TertiaryLight]];
}

/* sexy colours and font for the header */
.headerForeground {
	color: [[ColorPalette::PrimaryPale]];
}
.headerShadow, .headerShadow a {
	color: [[ColorPalette::PrimaryMid]];
}

/* separate the top menu parts */
.headerForeground, .headerShadow {
	padding: 1em 1em 0;
}

.headerForeground, .headerShadow {
	font-family: 'Trebuchet MS' sans-serif;
	font-weight:bold;
}
.headerForeground .siteSubtitle {
	color: [[ColorPalette::PrimaryLight]];
}
.headerShadow .siteSubtitle {
	color: [[ColorPalette::PrimaryMid]];
}

/* make shadow go and down right instead of up and left */
.headerShadow {
	left: 1px;
	top: 1px;
}

/* prefer monospace for editing */
.editor textarea, .editor input {
	font-family: 'Consolas' monospace;
	background-color:[[ColorPalette::TertiaryPale]];
}


/* sexy tiddler titles */
.title {
	font-size: 250%;
	color: [[ColorPalette::PrimaryLight]];
	font-family: 'Trebuchet MS' sans-serif;
}

/* more subtle tiddler subtitle */
.subtitle {
	padding:0px;
	margin:0px;
	padding-left:1em;
	font-size: 80%;
	color: [[ColorPalette::TertiaryMid]];
}
.subtitle .tiddlyLink {
	color: [[ColorPalette::TertiaryMid]];
}

/* a little bit of extra whitespace */
.viewer {
	padding-bottom:3px;
}

/* don't want any background color for headings */
h1,h2,h3,h4,h5,h6 {
	background-color: transparent;
	color: [[ColorPalette::Foreground]];
}

/* give tiddlers 3d style border and explicit background */
.tiddler {
	background: [[ColorPalette::Background]];
	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
	margin-bottom: 1em;
	padding:1em 2em 2em 1.5em;
	overflow: auto;
}

/* make options slider look nicer */
#sidebarOptions .sliderPanel {
	border:solid 1px [[ColorPalette::PrimaryLight]];
}

/* the borders look wrong with the body background */
#sidebar .button {
	border-style: none;
}

/* this means you can put line breaks in SidebarOptions for readability */
#sidebarOptions br {
	display:none;
}
/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {
	display:inline;
}

.siteTitle {
 margin-bottom: 30px;
}

/* horizontal main menu stuff */
#displayArea {
	margin: 1em 15.7em 0em 9.5em; /* marges des tiddlers: up right down left */
}
#topMenu br {
	display: none;
}
#topMenu {
	background: [[ColorPalette::PrimaryMid]];
	color:[[ColorPalette::PrimaryPale]];
}
#topMenu {
	padding:2px;
}
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
	margin-left: 0.5em;
	margin-right: 0.5em;
	padding-left: 3px;
	padding-right: 3px;
	color: [[ColorPalette::PrimaryPale]];
	font-size: 115%;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
	background: [[ColorPalette::PrimaryDark]];
}

/* make 2.2 act like 2.1 with the invisible buttons */
.toolbar {
	visibility:hidden;
}
.selected .toolbar {
	visibility:visible;
}

/* experimental. this is a little borked in IE7 with the button 
 * borders but worth it I think for the extra screen realestate */
.toolbar { float:right; }

/* fix for TaggerPlugin. from sb56637. improved by FND */
.popup li .tagger a {
   display:inline;
}

/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
  padding:0.5em;
  display:block;
}
#sidebarOptions .sliderPanel .select br {
	display:none;
}

/* make it print a little cleaner */
@media print {
	#topMenu {
		display: none ! important;
	}
	/* not sure if we need all the importants */
	.tiddler {
		border-style: none ! important;
		margin:0px ! important;
		padding:0px ! important;
		padding-bottom:2em ! important;
	}
	.tagglyTagging .button, .tagglyTagging .hidebutton {
		display: none ! important;
	}
	.headerShadow {
		visibility: hidden ! important;
	}
	.tagglyTagged .quickopentag, .tagged .quickopentag {
		border-style: none ! important;
	}
	.quickopentag a.button, .miniTag {
		display: none ! important;
	}
}


/*}}}*/

!StyleSheetLayout
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:6em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:4.5em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:.9em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}

/*}}}*/


/***
|''Name:''|AnnotationsPlugin|
|''Description:''|Inline annotations for tiddler text.|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#AnnotationsPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.0|
|''Date:''||
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|

!!Usage:
*{{{((text to annotate(annotation goes here)}}}
* To include the text being annotated, in the popup as a title, put {{{^}}} as the first letter of the annotation text.
** {{{((text to annotate(^annotation goes here)}}}

!!Examples:
Mouse over, the text below:
* ((banana(the best fruit in the world)))
* ((banana(^ the best fruit in the world)))

***/
// /%
config.formatters.unshift({name:"annotations",match:"\\(\\(",lookaheadRegExp:/\(\((.*?)\((\^?)((?:.|\n)*?)\)\)\)/g,handler:function(w){
this.lookaheadRegExp.lastIndex=w.matchStart;
var _2=this.lookaheadRegExp.exec(w.source);
if(_2&&_2.index==w.matchStart){
var _3=createTiddlyElement(w.output,"span",null,"annosub",_2[1]);
_3.anno=_2[3];
if(_2[2]){
_3.subject=_2[1];
}
_3.onmouseover=this.onmouseover;
_3.onmouseout=this.onmouseout;
_3.ondblclick=this.onmouseout;
w.nextMatch=_2.index+_2[0].length;
}
},onmouseover:function(e){
popup=createTiddlyElement(document.body,"div",null,"anno");
this.popup=popup;
if(this.subject){
wikify("!"+this.subject+"\n",popup);
}
wikify(this.anno,popup);
addClass(this,"annosubover");
Popup.place(this,popup,{x:25,y:7});
},onmouseout:function(e){
removeNode(this.popup);
this.popup=null;
removeClass(this,"annosubover");
}});
setStylesheet(".anno{position:absolute;border:2px solid #000;background-color:#DFDFFF; color:#000;padding:0.5em;max-width:15em;width:expression(document.body.clientWidth > (255/12) *parseInt(document.body.currentStyle.fontSize)?'15em':'auto' );}\n"+".anno h1, .anno h2{margin-top:0;color:#000;}\n"+".annosub{background:#ccc;}\n"+".annosubover{z-index:25; background-color:#DFDFFF;cursor:help;}\n","AnnotationStyles");


// %/
<<tiddler Théories>>

[[Neander (1991)|Neander, K (1991): "Functions as Selected Effects"]] cite trois objections standard à la conception étiologique:
#''Elle est historiquement fausse'': lorsque Harvey a découvert la fonction du coeur, en 1616, il ne connaissait pas la théorie darwinienne et ne pouvait donc pas penser que la circulation du sang était la raison pour laquelle les coeurs avaient été favorisés par la sélection naturelle. (Wright, 1976:97; Boorse, 1976:74; Nagel, 1977:284)
#''Elle est analytiquement arrogante'': définir les fonctions en termes de sélection naturelle semble impliquer qu'il est logiquement impossible que les processus et structures organiques aient acquis leurs fonctions par la volonté d'un créateur divin. (Wright, 1976:96-97; Boorse, 1976:74; [[Bigelow & Pargetter, 1987:188|Bigelow, et al. (1987): "Functions"]])
#''Elle est contreintuitive'': dire qu'un organisme qui n'a pas d'histoire n'a pas de fonctions est fortement contreintuitif, car on peut penser à un accident cosmique créant un nouvel organisme (Boorse, 1976:74) ou que le monde à été créé il y a seulement cinq minutes ([[Bigelow & Pargetter, 1987:188|Bigelow, et al. (1987): "Functions"]]). Dans ces deux situations, nous serions sans doute capables d'attribuer des fonctions à des organismes complexes malgré leur manque d'une histoire et le caractère accidentel de leur genèse.
!Objections
<<tiddler [[Approche étiologique: trois objections]]>>


[img[Fiche de lecture|iconesWiki/article.gif][Articles]]
<<tiddler HideTiddlerTags>>


text/plain
.txt .text .js .vbs .asp .cgi .pl
----
text/html
.htm .html .hta .htx .mht
----
text/comma-separated-values
.csv
----
text/javascript
.js
----
text/css
.css
----
text/xml
.xml .xsl .xslt
----
image/gif
.gif
----
image/jpeg
.jpg .jpe .jpeg
----
image/png
.png
----
image/bmp
.bmp
----
image/tiff
.tif .tiff
----
audio/basic
.au .snd
----
audio/wav
.wav
----
audio/x-pn-realaudio
.ra .rm .ram
----
audio/x-midi
.mid .midi
----
audio/mp3
.mp3
----
audio/m3u
.m3u
----
video/x-ms-asf
.asf
----
video/avi
.avi
----
video/mpeg
.mpg .mpeg
----
video/quicktime
.qt .mov .qtvr
----
application/pdf
.pdf
----
application/rtf
.rtf
----
application/postscript
.ai .eps .ps
----
application/wordperfect
.wpd
----
application/mswrite
.wri
----
application/msexcel
.xls .xls3 .xls4 .xls5 .xlw
----
application/msword
.doc
----
application/mspowerpoint
.ppt .pps
----
application/x-director
.swa
----
application/x-shockwave-flash
.swf
----
application/x-zip-compressed
.zip
----
application/x-gzip
.gz
----
application/x-rar-compressed
.rar
----
application/octet-stream
.com .exe .dll .ocx
----
application/java-archive
.jar
[[AttachFilePlugin]] reads binary data from locally-stored files (e.g., images, PDFs, mp3's, etc.) and converts it to base64-encoded text that is stored in tiddlers tagged with<<tag attachment>>. [[AttachFilePluginFormatters]] allows you to use those tiddlers in place of the external path/file references that are normally part of the image and external links wiki syntax.

[[FileDropPlugin]] and [[FileDropPluginConfig]] allow you to quickly create attachment tiddlers simply by dragging files directly from your system's desktop folder display and dropping it onto an open TiddlyWiki document.  Text files are automatically created as simple tiddlers, while binary files are automatically encoded and attached.
/***
|Name|AttachFilePlugin|
|Source|http://www.TiddlyTools.com/#AttachFilePlugin|
|Documentation|http://www.TiddlyTools.com/#AttachFilePluginInfo|
|Version|3.9.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|AttachFilePluginFormatters, AttachFileMIMETypes|
|Overrides||
|Description|Store binary files as base64-encoded tiddlers with fallback links for separate local and/or remote file storage|
Store or link binary files (such as jpg, gif, pdf or even mp3) within your TiddlyWiki document and then use them as images or links from within your tiddler content.
> Important note: As of version 3.6.0, in order to //render// images and other binary attachments created with this plugin, you must also install [[AttachFilePluginFormatters]], which extends the behavior of the TiddlyWiki core formatters for embedded images ({{{[img[tooltip|image]]}}}), linked embedded images ({{{[img[tooltip|image][link]]}}}), and external/"pretty" links ({{{[[label|link]]}}}), so that these formatter will process references to attachment tiddlers as if a normal file reference had been provided. |
!!!!!Documentation
>see [[AttachFilePluginInfo]]
!!!!!Inline interface (live)
>see [[AttachFile]] (shadow tiddler)
><<tiddler AttachFile>>
!!!!!Revisions
<<<
2008.07.21 [3.9.0] Fixup for FireFox 3: use HTML with separate text+button control instead of type='file' control
|please see [[AttachFilePluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.attach = {major: 3, minor: 9, revision: 0, date: new Date(2008,7,21)};

// shadow tiddler
config.shadowTiddlers.AttachFile="<<attach inline>>";

// add 'attach' backstage task (insert before built-in 'importTask')
if (config.tasks) { // for TW2.2b or above
	config.tasks.attachTask = {
		text: "attach",
		tooltip: "Attach a binary file as a tiddler",
		content: "<<attach inline>>"
	}
	config.backstageTasks.splice(config.backstageTasks.indexOf("importTask"),0,"attachTask");
}

config.macros.attach = {
// // lingo
//{{{
	label: "attacher un fichier",
	tooltip: "Attach a file to this document",
	linkTooltip: "Attachment: ",

	typeList: "AttachFileMIMETypes",

	titlePrompt: " enter tiddler title...",
	MIMEPrompt: "<option value=''>select MIME type...</option><option value='editlist'>[edit list...]</option>",
	localPrompt: " enter local path/filename...",
	URLPrompt: " enter remote URL...",

	tiddlerErr: "Please enter a tiddler title",
	sourceErr: "Please enter a source path/filename",
	storageErr: "Please select a storage method: embedded, local or remote",
	MIMEErr: "Unrecognized file format.  Please select a MIME type",
	localErr: "Please enter a local path/filename",
	URLErr: "Please enter a remote URL",
	fileErr: "Invalid path/file or file not found",

	sourceReport: "| source file:|{{{%0}}}|\n",
	nosourceReport: "| source file:|//none//|\n",
	dateReport: "| attached on:|%0 by %1|\n",
	notesReport: "| description:|%0|\n",
	dataReport: "| embedded:|[[%0|%0]] - {{{type=%1, size=%2 bytes, encoded=%3 bytes}}}|\n",
	nodataReport: "| embedded:|//none//|\n",
	localReport: "| local file:|/%LOCAL_LINK%/[[%0|%1]]|\n",
	nolocalReport: "| local file:|//none//|\n",
	URLReport: "| remote link:|/%REMOTE_LINK%/[[%0|%0]]|\n",
	noURLReport: "| remote link:|//none//|\n",

	imageReport: "image\n<<<\nusage: {{{[img[tooltip|%0]] or [img[tooltip|%0][link]]}}}\n[img[tooltip|%0]]\n<<<\n",
	dataBlock: "\n/% DO NOT EDIT BELOW THIS POINT\n---BEGIN_DATA---\n%0;base64,\n%1\n---END_DATA---\n%/",
//}}}
// // macro definition
//{{{
	handler:
	function(place,macroName,params) {
		if (params && !params[0]) { createTiddlyButton(place,this.label,this.tooltip,this.toggleAttachPanel); return; }
		var id=params.shift();
		this.createAttachPanel(place,id+"_attachPanel",params);
		document.getElementById(id+"_attachPanel").style.position="static";
		document.getElementById(id+"_attachPanel").style.display="block";
	},
//}}}
//{{{
	createAttachPanel:
	function(place,panel_id,params) {
		if (!panel_id || !panel_id.length) var panel_id="_attachPanel";
		// remove existing panel (if any)
		var panel=document.getElementById(panel_id); if (panel) panel.parentNode.removeChild(panel);
		// set styles for this panel
		setStylesheet(this.css,"attachPanel");
		// create new panel
		var title=""; if (params && params[0]) title=params.shift();
		var types=this.MIMEPrompt+this.formatListOptions(store.getTiddlerText(this.typeList)); // get MIME types
		panel=createTiddlyElement(place,"span",panel_id,"attachPanel",null);
		var html=this.html.replace(/%id%/g,panel_id);
		html=html.replace(/%title%/g,title);
		html=html.replace(/%disabled%/g,title.length?"disabled":"");
		html=html.replace(/%IEdisabled%/g,config.browser.isIE?"disabled":"");
		html=html.replace(/%types%/g,types);
		panel.innerHTML=html;
		if (config.browser.isGecko) { // FF3 FIXUP
			document.getElementById("attachSource").style.display="none";
			document.getElementById("attachFixPanel").style.display="block";
		}
		return panel;
	},
//}}}
//{{{
	toggleAttachPanel:
	function (e) {
		if (!e) var e = window.event;
		var parent=resolveTarget(e).parentNode;
		var panel = document.getElementById("_attachPanel");
		if (panel==undefined || panel.parentNode!=parent)
			panel=config.macros.attach.createAttachPanel(parent,"_attachPanel");
		var isOpen = panel.style.display=="block";
		if(config.options.chkAnimate)
			anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));
		else
			panel.style.display = isOpen ? "none" : "block" ;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
		return(false);
	},
//}}}
//{{{
	formatListOptions:
	function(text) {
		if (!text || !text.trim().length) return "";
		// get MIME list content from text
		var parts=text.split("\n----\n");
		var out="";
		for (var p=0; p<parts.length; p++) {
			var lines=parts[p].split("\n");
			var label=lines.shift(); // 1st line=display text
			var value=lines.shift(); // 2nd line=item value
			out +='<option value="%1">%0</option>'.format([label,value]);
		}
		return out;
	},
//}}}
// // interface definition
//{{{
	css:
	".attachPanel { display: none; position:absolute; z-index:10; width:35em; right:105%; top:0em;\
		background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
		border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
		padding: 0.5em; margin:0em; -moz-border-radius:1em; text-align:left }\
	.attachPanel form { display:inline;border:0;padding:0;margin:0; }\
	.attachPanel select { width:99%;margin:0px;font-size:8pt;line-height:110%;}\
	.attachPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
	.attachPanel textarea { width:98%;margin:0px;height:2em;font-size:8pt;line-height:110%}\
	.attachPanel table { width:100%;border:0;margin:0;padding:0;color:inherit; }\
	.attachPanel tbody, .attachPanel tr, .attachPanel td { border:0;margin:0;padding:0;color:#000; }\
	.attachPanel .box { border:1px solid black; padding:.3em; margin:.3em 0px; background:#f8f8f8; -moz-border-radius:5px; }\
	.attachPanel .chk { width:auto;border:0; }\
	.attachPanel .btn { width:auto; }\
	.attachPanel .btn2 { width:49%; }\
	",
//}}}
//{{{
	html:
	'<form>\
		attach from source file\
		<input type="file" id="attachSource" name="source" size="56"\
			onChange="config.macros.attach.onChangeSource(this)">\
		<div id="attachFixPanel" style="display:none"><!-- FF3 FIXUP -->\
			<input type="text" id="attachFixSource" style="width:90%"\
				title="Enter a path/file to attach"\
				onChange="config.macros.attach.onChangeSource(this);">\
			<input type="button" style="width:7%" value="..."\
				title="Enter a path/file to attach"\
				onClick="config.macros.attach.askForFilename(document.getElementById(\'attachFixSource\'));">\
		</div><!--end FF3 FIXUP-->\
		<div class="box">\
		<table style="border:0"><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
			embed data <input type=checkbox class=chk name="useData" %IEdisabled% \
				onclick="if (!this.form.MIMEType.value.length)\
					this.form.MIMEType.selectedIndex=this.checked?1:0; ">&nbsp;\
		</td><td style="border:0">\
			<select size=1 name="MIMEType" \
				onchange="this.title=this.value; if (this.value==\'editlist\')\
					{ this.selectedIndex=this.form.useData.checked?1:0; story.displayTiddler(null,config.macros.attach.typeList,2); return; }">\
				<option value=""></option>\
				%types%\
			</select>\
		</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
			local link <input type=checkbox class=chk name="useLocal"\
				onclick="this.form.local.value=this.form.local.defaultValue=this.checked?config.macros.attach.localPrompt:\'\';">&nbsp;\
		</td><td style="border:0">\
			<input type=text name="local" size=15 autocomplete=off value=""\
				onchange="this.form.useLocal.checked=this.value.length" \
				onkeyup="this.form.useLocal.checked=this.value.length" \
				onfocus="if (!this.value.length) this.value=config.macros.attach.localPrompt; this.select()">\
		</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
			remote link <input type=checkbox class=chk name="useURL"\
				onclick="this.form.URL.value=this.form.URL.defaultValue=this.checked?config.macros.attach.URLPrompt:\'\';\">&nbsp;\
		</td><td style="border:0">\
			<input type=text name="URL" size=15 autocomplete=off value=""\
				onfocus="if (!this.value.length) this.value=config.macros.attach.URLPrompt; this.select()"\
				onchange="this.form.useURL.checked=this.value.length;"\
				onkeyup="this.form.useURL.checked=this.value.length;">\
		</td></tr></table>\
		</div>\
		<table style="border:0"><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
			attach as&nbsp;\
		</td><td style="border:0" colspan=2>\
			<input type=text name="tiddlertitle" size=15 autocomplete=off value="%title%"\
				onkeyup="if (!this.value.length) { this.value=config.macros.attach.titlePrompt; this.select(); }"\
				onfocus="if (!this.value.length) this.value=config.macros.attach.titlePrompt; this.select()" %disabled%>\
		</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
			description&nbsp;\
		</td><td style="border:0" colspan=2>\
			<input type=text name="notes" size=15 autocomplete=off>\
		</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
			add tags&nbsp;\
		</td><td style="border:0">\
			<input type=text name="tags" size=15 autocomplete=off value="" onfocus="this.select()">\
		</td><td style="width:40%;text-align:right;border:0">\
			<input type=button class=btn2 value="attach"\
				onclick="config.macros.attach.onClickAttach(this)"><!--\
			--><input type=button class=btn2 value="close"\
				onclick="var panel=document.getElementById(\'%id%\'); if (panel) panel.parentNode.removeChild(panel);">\
		</td></tr></table>\
	</form>',
//}}}
// // control processing
//{{{
	onChangeSource:
	function(here) {
		var form=here.form;
		var list=form.MIMEType;
		var theFilename  = here.value;
		var theExtension = theFilename.substr(theFilename.lastIndexOf('.')).toLowerCase();
		// if theFilename is in current document folder, remove path prefix and use relative reference
		var h=document.location.href; folder=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
		if (theFilename.substr(0,folder.length)==folder) theFilename='./'+theFilename.substr(folder.length);
		else theFilename='file:///'+theFilename; // otherwise, use absolute reference
		theFilename=theFilename.replace(/\\/g,"/"); // fixup: change \ to /
		form.useLocal.checked = true;
		form.local.value = theFilename;
		form.useData.checked = !form.useData.disabled;
		list.selectedIndex=1;
		for (var i=0; i<list.options.length; i++) // find matching MIME type
			if (list.options[i].value.indexOf(theExtension)!=-1) { list.selectedIndex = i; break; }
		if (!form.tiddlertitle.disabled)
			form.tiddlertitle.value=theFilename.substr(theFilename.lastIndexOf('/')+1); // get tiddlername from filename
	},
//}}}
//{{{
	onClickAttach:
	function (here) {
		clearMessage();
		// get input values
		var form=here.form;
		var src=form.source; if (config.browser.isGecko) src=document.getElementById("attachFixSource");
		var theDate=(new Date()).formatString(config.macros.timeline.dateFormat);
		var theSource = src.value!=src.defaultValue?src.value:"";
		var theTitle=form.tiddlertitle.value;
		var theLocal = form.local.value!=form.local.defaultValue?form.local.value:"";
		var theURL = form.URL.value!=form.URL.defaultValue?form.URL.value:"";
		var theNotes = form.notes.value;
		var theTags = "attachment excludeMissing "+form.tags.value;
		var useData=form.useData.checked;
		var useLocal=form.useLocal.checked;
		var useURL=form.useURL.checked;
		var theMIMEType = form.MIMEType.value.length?form.MIMEType.options[form.MIMEType.selectedIndex].text:"";
		// validate checkboxes and get filename
		if (useData) {
			if (theSource.length) { if (!theLocation) var theLocation=theSource; }
			else { alert(this.sourceErr); src.focus(); return false; }
		}
		if (useLocal) {
			if (theLocal.length) { if (!theLocation) var theLocation = theLocal; }
			else { alert(this.localErr); form.local.focus(); return false; }
		}
		if (useURL) {
			if (theURL.length) { if (!theLocation) var theLocation = theURL; }
			else { alert(this.URLErr); form.URL.focus(); return false; }
		}
		if (!(useData||useLocal||useURL))
			{ form.useData.focus(); alert(this.storageErr); return false; }
		if (!theLocation)
			{ src.focus(); alert(this.sourceErr); return false; }
		if (!theTitle || !theTitle.trim().length || theTitle==this.titlePrompt)
			{ form.tiddlertitle.focus(); alert(this.tiddlerErr); return false; }
		// if not already selected, determine MIME type based on filename extension (if any)
		if (useData && !theMIMEType.length && theLocation.lastIndexOf('.')!=-1) {
			var theExt = theLocation.substr(theLocation.lastIndexOf('.')).toLowerCase();
			var theList=form.MIMEType;
			for (var i=0; i<theList.options.length; i++)
				if (theList.options[i].value.indexOf(theExt)!=-1)
					{ var theMIMEType=theList.options[i].text; theList.selectedIndex=i; break; }
		}
		// attach the file
		return this.createAttachmentTiddler(theSource, theDate, theNotes, theTags, theTitle,
			useData, useLocal, useURL, theLocal, theURL, theMIMEType);
	},
	getMIMEType:
	function(src,def) {
		var ext = src.substr(src.lastIndexOf('.')).toLowerCase();
		var list=store.getTiddlerText(this.typeList);
		if (!list || !list.trim().length) return def;
		// get MIME list content from tiddler
		var parts=list.split("\n----\n");
		for (var p=0; p<parts.length; p++) {
			var lines=parts[p].split("\n");
			var mime=lines.shift(); // 1st line=MIME type
			var match=lines.shift(); // 2nd line=matching extensions
			if (match.indexOf(ext)!=-1) return mime;
		}
		return def;
	},
	createAttachmentTiddler:
	function (theSource, theDate, theNotes, theTags, theTitle,
		useData, useLocal, useURL, theLocal, theURL, theMIMEType, noshow) {
		// encode the data
		if (useData) {
			if (!theMIMEType.length) {
				alert(this.MIMEErr);
				form.MIMEType.selectedIndex=1; form.MIMEType.focus();
				return false;
			}
			var theData = this.readFile(theSource); if (!theData) { return false; }
			displayMessage('encoding '+theSource);
			var theEncoded = this.encodeBase64(theData);
			displayMessage('file size='+theData.length+' bytes, encoded size='+theEncoded.length+' bytes');
		}
		// generate tiddler and refresh
		var theText = "";
		theText +=theSource.length?this.sourceReport.format([theSource]):this.nosourceReport;
		theText +=this.dateReport.format([theDate,config.options.txtUserName]);
		theText +=theNotes.length?this.notesReport.format([theNotes]):"";
		theText +=useData?this.dataReport.format([theTitle,theMIMEType,theData.length,theEncoded.length]):this.nodataReport;
		theText +=useLocal?this.localReport.format([theLocal,theLocal.replace(/\\/g,"/")]):this.nolocalReport;
		theText +=useURL?this.URLReport.format([theURL]):this.noURLReport;
		theText +=(theMIMEType.substr(0,5)=="image")?this.imageReport.format([theTitle]):"";
		theText +=useData?this.dataBlock.format([theMIMEType,theEncoded]):"";
		store.saveTiddler(theTitle,theTitle,theText,config.options.txtUserName,new Date(),theTags);
		var panel=document.getElementById("attachPanel"); if (panel) panel.style.display="none";
		if (!noshow) { story.displayTiddler(null,theTitle); story.refreshTiddler(theTitle,null,true); }
		displayMessage('attached "'+theTitle+'"');
		return true;
	},
//}}}
// // base64 conversion
//{{{
	encodeBase64:
	function (theData) {
		if (!theData) return null;
		// encode as base64
		var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
		var out = "";				//This is the output
		var chr1, chr2, chr3 = "";		//These are the 3 bytes to be encoded
		var enc1, enc2, enc3, enc4 = "";	//These are the 4 encoded bytes
		for (var count=0,i=0; i<theData.length; )
			{
			chr1 = theData.charCodeAt(i++); //Grab the first byte
			chr2 = theData.charCodeAt(i++); //Grab the second byte
			chr3 = theData.charCodeAt(i++); //Grab the third byte
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
			if (isNaN(chr2))
				enc3 = enc4 = 64;
			else if (isNaN(chr3))
				enc4 = 64;
			out += keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);
			chr1 = chr2 = chr3 = "";
			enc1 = enc2 = enc3 = enc4 = "";
			count+=4; if (count>60) { out+='\n'; count=0; } // add line break every 60 chars for readability
			}
		return out;
	},
//}}}
// // I/O functions
//{{{
	readFile: // read local BINARY file data
	function(filePath) {
		if(!window.Components) { return null; }
		try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
		catch(e) { alert("access denied: "+filePath); return null; }
		var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
		try { file.initWithPath(filePath); } catch(e) { alert("cannot read file - invalid path: "+filePath); return null; }
		if (!file.exists()) { alert("cannot read file - not found: "+filePath); return null; }
		var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
		inputStream.init(file, 0x01, 00004, null);
		var bInputStream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
		bInputStream.setInputStream(inputStream);
		return(bInputStream.readBytes(inputStream.available()));
	},
//}}}
//{{{
	writeFile:
	function(filepath,data) {
		// TBD: decode base64 and write BINARY data to specified local path/filename
		return(false);
	},
//}}}
//{{{
	askForFilename: // for FF3 fixup
	function(target) {
		var msg=config.messages.selectFile;
		if (target && target.title) msg=target.title; // use target field tooltip (if any) as dialog prompt text
		// get local path for current document
		var path=getLocalPath(document.location.href);
		var p=path.lastIndexOf("/"); if (p==-1) p=path.lastIndexOf("\\"); // Unix or Windows
		if (p!=-1) path=path.substr(0,p+1); // remove filename, leave trailing slash
		var file=""
		var result=window.mozAskForFilename(msg,path,file,true); // FF3 FIXUP ONLY
		if (target && result.length) // set target field and trigger handling
			{ target.value=result; target.onchange(); }
		return result; 
	}
};
//}}}
//{{{
if (window.mozAskForFilename===undefined) { // also defined by CoreTweaks (for ticket #604)
	window.mozAskForFilename=function(msg,path,file,mustExist) {
		if(!window.Components) return false;
		try {
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
			var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
			var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
			picker.init(window, msg, mustExist?nsIFilePicker.modeOpen:nsIFilePicker.modeSave);
			var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
			thispath.initWithPath(path);
			picker.displayDirectory=thispath;
			picker.defaultExtension='';
			picker.defaultString=file;
			picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
			if (picker.show()!=nsIFilePicker.returnCancel)
				var result=picker.file.persistentDescriptor;
		}
		catch(ex) { displayMessage(ex.toString()); }
		return result;
	}
}
//}}}
/***
|Name|AttachFilePluginFormatters|
|Source|http://www.TiddlyTools.com/#AttachFilePluginFormatters|
|Version|3.7.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|'image' and 'prettyLink' formatters, TiddlyWiki.prototype.getRecursiveTiddlerText|
|Description|run-time library for displaying attachment tiddlers|

This plugin provides "stand-alone" processing for //rendering// attachment tiddlers created by [[AttachFilePlugin]].   Attachment tiddlers are tagged with<<tag attachment>>and contain binary file content (e.g., jpg, gif, pdf, mp3, etc.) that has been stored directly as base64 text-encoded data or can be loaded from external files stored on a local filesystem or remote web server.

NOTE: This plugin does not include the "control panel" and supporting functions needed to //create// new attachment tiddlers.  Those features are provided by [[AttachFilePlugin]], which can be installed while building your document, and then safely omitted to reduce the overall file size when you publish your finished document (assuming you don't intend to create any additional attachment tiddlers in that document)
!!!!!Formatters
<<<
This plugin extends the behavior of the following TiddlyWiki core "wikify()" formatters:
* embedded images: {{{[img[tooltip|image]]}}}
* linked embedded images: {{{[img[tooltip|image][link]]}}}
* external/"pretty" links: {{{[[label|link]]}}}

''Please refer to AttachFilePlugin (source: http://www.TiddlyTools.com/#AttachFilePlugin) for additional information.''
<<<
!!!!!Revisions
<<<
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.10.29 [3.7.0] more code reduction: removed upload handling from AttachFilePlugin (saves ~7K!)
2007.10.28 [3.6.0] removed duplicate formatter code from AttachFilePlugin (saves ~10K!) and updated documentation accordingly.  This plugin ([[AttachFilePluginFormatters]]) is now //''required''// in order to display attached images/binary files within tiddler content.
2006.05.20 [3.4.0] through 2007.03.01 [3.5.3] sync with AttachFilePlugin
2006.05.13 [3.2.0] created from AttachFilePlugin v3.2.0
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.attach = {major: 3, minor: 7, revision: 0, date: new Date(2007,10,28)};
//}}}

//{{{
if (config.macros.attach==undefined) config.macros.attach= { };
//}}}
//{{{
if (config.macros.attach.isAttachment==undefined) config.macros.attach.isAttachment=function (title) {
	var tiddler = store.getTiddler(title);
	if (tiddler==undefined || tiddler.tags==undefined) return false;
	return (tiddler.tags.indexOf("attachment")!=-1);
}
//}}}

//{{{
// test for local file existence
// Returns true/false without visible error display
// Uses Components for FF and ActiveX FSO object for MSIE
if (config.macros.attach.fileExists==undefined) config.macros.attach.fileExists=function(theFile) {
	var found=false;
	// DEBUG: alert('testing fileExists('+theFile+')...');
	if(window.Components) {
		try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
		catch(e) { return false; } // security access denied
		var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
		try { file.initWithPath(theFile); }
		catch(e) { return false; } // invalid directory
		found = file.exists();
	}
	else { // use ActiveX FSO object for MSIE 
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		found = fso.FileExists(theFile)
	}
	// DEBUG: alert(theFile+" "+(found?"exists":"not found"));
	return found;
}
//}}}

//{{{
if (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {

	// extract embedded data, local and remote links (if any)
	var startmarker="---BEGIN_DATA---\n";
	var endmarker="\n---END_DATA---";
	var pos=0; var endpos=0;
	var text = store.getTiddlerText(title);
	var embedded="";
	var locallink="";
	var remotelink="";

	// look for embedded data, convert to data: URI
	if ((pos=text.indexOf(startmarker))!=-1 && (endpos=text.indexOf(endmarker))!=-1)
		embedded="data:"+(text.substring(pos+startmarker.length,endpos)).replace(/\n/g,'');
	if (embedded.length && !config.browser.isIE)
		return embedded; // use embedded data if any... except for IE, which doesn't support data URI

	// no embedded data... fallback to local/remote reference links...

	// look for 'attachment link markers'
	if ((pos=text.indexOf("/%LOCAL_LINK%/"))!=-1)
		locallink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));
	if ((pos=text.indexOf("/%REMOTE_LINK%/"))!=-1)
		remotelink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));

	// document is being served remotely... use remote URL (if any)  (avoids security alert)
	if (remotelink.length && document.location.protocol!="file:")
		return remotelink;  

	// local link only... return link without checking file existence (avoids security alert)
	if (locallink.length && !remotelink.length) 
		return locallink; 

	// local link, check for file exist... use local link if found
	if (locallink.length) { 
		if (this.fileExists(getLocalPath(locallink))) return locallink;
		// maybe local link is relative... add path from current document and try again
		var pathPrefix=document.location.href;  // get current document path and trim off filename
		var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\"); 
		if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
		if (this.fileExists(getLocalPath(pathPrefix+locallink))) return locallink;
	}

	// no embedded data, no local (or not found), fallback to remote URL (if any)
	if (remotelink.length) 
		return remotelink;

	return ""; // attachment URL doesn't resolve
}
//}}}
//{{{
if (config.macros.attach.init_formatters==undefined) config.macros.attach.init_formatters=function() {
	if (this.initialized) return;
	// find the formatter for "image" and replace the handler
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="image"; i++);
	if (i<config.formatters.length)	config.formatters[i].handler=function(w) {
		if (!this.lookaheadRegExp)  // fixup for TW2.0.x
			this.lookaheadRegExp = new RegExp(this.lookahead,"mg");
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link
			{
			var e = w.output;
			if(lookaheadMatch[5])
				{
				var link = lookaheadMatch[5];
				// ELS -------------
				if (!config.formatterHelpers.isExternalLink) // fixup for TW2.0.x
					var external=!store.tiddlerExists(link)&&!store.isShadowTiddler(link);
				else
					var external=config.formatterHelpers.isExternalLink(link);
				if (external)
					{
					if (config.macros.attach.isAttachment(link))
						{
						e = createExternalLink(w.output,link);
						e.href=config.macros.attach.getAttachment(link);
						e.title = config.macros.attach.linkTooltip + link;
						}
					else
						e = createExternalLink(w.output,link);
					}
				else 
					e = createTiddlyLink(w.output,link,false,null,w.isStatic);
				// ELS -------------
				addClass(e,"imageLink");
				}
			var img = createTiddlyElement(e,"img");
			if(lookaheadMatch[1])
				img.align = "left";
			else if(lookaheadMatch[2])
				img.align = "right";
			if(lookaheadMatch[3])
				img.title = lookaheadMatch[3];
			img.src = lookaheadMatch[4];
			// ELS -------------
			if (config.macros.attach.isAttachment(lookaheadMatch[4]))
				img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);
			// ELS -------------
			w.nextMatch = this.lookaheadRegExp.lastIndex;
		}
	}
//}}}
//{{{
	// find the formatter for "prettyLink" and replace the handler
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="prettyLink"; i++);
	if (i<config.formatters.length)	{
		var v=version.major+.1*version.minor+.01*version.revision;
		if (v>=2.13) {
		config.formatters[i].handler=function(w) 
			{
			this.lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
				{
				var e;
				var text = lookaheadMatch[1];
				if(lookaheadMatch[3])
					{
					// Pretty bracketted link
					var link = lookaheadMatch[3];
					if (config.macros.attach.isAttachment(link))
						{
						e = createExternalLink(w.output,link);
						e.href=config.macros.attach.getAttachment(link);
						e.title=config.macros.attach.linkTooltip+link;
						}
					else e = (!lookaheadMatch[2] && config.formatterHelpers.isExternalLink(link))
						? createExternalLink(w.output,link)
						: createTiddlyLink(w.output,link,false,null,w.isStatic);
					}
				else
					{
					e = createTiddlyLink(w.output,text,false,null,w.isStatic);
					}
				createTiddlyText(e,text);
				w.nextMatch = this.lookaheadRegExp.lastIndex;
				}
			}
		} else { // FALLBACK for TW2.1.2 and earlier
		config.formatters[i].handler=function(w)
			{
			if (!this.lookaheadRegExp)  // fixup for TW2.0.x
				this.lookaheadRegExp = new RegExp(this.lookahead,"mg");
			this.lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
				{
				var e;
				var text = lookaheadMatch[1];
				if (lookaheadMatch[2]) // Simple bracketted link
					{
					e = createTiddlyLink(w.output,text,false,null,w.isStatic);
					}
				else if(lookaheadMatch[3]) // Pretty bracketted link
					{
					var link = lookaheadMatch[4];
					// ELS -------------
					if (!config.formatterHelpers.isExternalLink) // fixup for TW2.0.x
						var external=!store.tiddlerExists(link)&&!store.isShadowTiddler(link);
					else
						var external=config.formatterHelpers.isExternalLink(link);
					if (external)
						{
						if (config.macros.attach.isAttachment(link))
							{
							e = createExternalLink(w.output,link);
							e.href=config.macros.attach.getAttachment(link);
							e.title = config.macros.attach.linkTooltip + link;
							}
						else
							e = createExternalLink(w.output,link);
						}
					else 
						e = createTiddlyLink(w.output,link,false,null,w.isStatic);
					// ELS -------------
					}
				createTiddlyText(e,text);
				w.nextMatch = this.lookaheadRegExp.lastIndex;
				}
			}
		} // END FALLBACK
	} // if "prettyLink" formatter found
	this.initialized=true;
}
//}}}
//{{{
config.macros.attach.init_formatters(); // load time init
//}}}
//{{{
if (TiddlyWiki.prototype.coreGetRecursiveTiddlerText==undefined) {
	TiddlyWiki.prototype.coreGetRecursiveTiddlerText = TiddlyWiki.prototype.getRecursiveTiddlerText;
	TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth) {
		return config.macros.attach.isAttachment(title)?
			config.macros.attach.getAttachment(title):this.coreGetRecursiveTiddlerText.apply(this,arguments);
	}
}
//}}}
/***
|Name|AttachFilePluginInfo|
|Source|http://www.TiddlyTools.com/#AttachFilePlugin|
|Documentation|http://www.TiddlyTools.com/#AttachFilePluginInfo|
|Version|3.9.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Documentation for AttachFilePlugin|
Store or link binary files (such as jpg, gif, pdf or even mp3) within your TiddlyWiki document and then use them as images or links from within your tiddler content.
!!!!!Inline interface (live)
>see [[AttachFile]] (shadow tiddler)
><<tiddler AttachFile>>
!!!!!Syntax
<<<
''To display the attach file control panel, simply view the [[AttachFile]] shadow tiddler that is automatically created by the plugin, and contains an instance of the inline control panel.''.  Or, you can write:
{{{
<<attach inline>>
}}}
in any tiddler to display the control panel embedded within that tiddler.  Note: you can actually use any unique identifier in place of the "inline" keyword.  Each unique id creates a separate instance of the controls.  If the same ID is used in more than one tiddler, then the control panel is automatically moved to the most recently rendered location.  Or, you can write:
{{{
<<attach>>
}}}
(with no ID parameter) in SidebarOptions.  This adds a command link that opens the controls as a floating panel, positioned directly to the left of the sidebar.
<<<
!!!!!Usage
<<<
Binary file content can be stored in three different locations:
#embedded in the attachment tiddler (encoded as base64)
#on your filesystem (a 'local link' path/filename)
#on a web server (a 'remote link' URL)
The plugin creates an "attachment tiddler" for each file you attach.  Regardless of where you store the binary content, your document can refer to the attachment tiddler rather than using a direct file or URL reference in your embedded image or external links, so that changing document locations will not require updating numerous tiddlers or copying files from one system to another.
> Important note: As of version 3.6.0, in order to //render// images and other binary attachments created with this plugin, you must also install [[AttachFilePluginFormatters]], which extends the behavior of the TiddlyWiki core formatters for embedded images ({{{[img[tooltip|image]]}}}), linked embedded images ({{{[img[tooltip|image][link]]}}}), and external/"pretty" links ({{{[[label|link]]}}}), so that these formatter will process references to attachment tiddlers as if a normal file reference had been provided. |
When you attach a file, a tiddler (tagged with<<tag attachment>>) is generated (using the source filename as the tiddler's title).  The tiddler contains //''base64 text-encoded binary data''//, surrounded by {{{/%...%/}}} comment markers (so they are not visible when viewing the tiddler).  The tiddler also includes summary details about the file: when it was attached, by whom, etc. and, if the attachment is an image file (jpg, gif, or png), the image is automatically displayed below the summary information.
>Note: although you can edit an attachment tiddler, ''don't change any of the encoded content below the attachment header'', as it has been prepared for use in the rest of your document, and even changing a single character can make the attachment unusable.  //If needed, you ''can'' edit the header information or even the MIME type declaration in the attachment data, but be very careful not to change any of the base64-encoded binary data.//
With embedded data, your TW document can be completely self-contained...unfortunately, embedding just a few moderately-sized binary files using base64 text-encoding can dramatically increase the size of your document.   To avoid this problem, you can create attachment tiddlers that define external local filesystem (file://) and/or remote web server (http://) 'reference' links, without embedding the binary data directly in the tiddler (i.e., uncheck "embed data" in the 'control panel').

These links provide an alternative source for the binary data: if embedded data is not found (or you are running on Internet Explorer, which does not currently support using embedded data), then the plugin tries the local filesystem reference.  If a local file is not found, then the remote reference (if any) is used.  This "fallback" approach also lets you 'virtualize' the external links in your document, so that you can access very large binary content such as PDFs, MP3's, and even *video* files, by using just a 'remote reference link' without embedding any data or downloading huge files to your hard disk.

Of course, when you //do// download an attached file, the local copy will be used instead of accessing a remote server each time, thereby saving bandwidth and allowing you to 'go mobile' without having to edit any tiddlers to alter the link locations...
<<<
!!!!!Syntax / Examples
<<<
To embed attached files as images or link to them from other tiddlers, use the standard ~TiddlyWiki image syntax ({{{[img[tooltip|filename]]}}}), linked image syntax ({{{[img[tooltip|filename][tiddlername]]}}}) , or "external link" syntax ({{{[[text|URL]]}}}), replacing the filename or URL that is normally entered with the title of an attachment tiddler.

embedded image data:
>{{{[img[Meow|AttachFileSample]]}}}
>[img[Meow|AttachFileSample]]
embedded image data with link to larger remote image:
>{{{[img[click for larger view|AttachFileSample][AttachFileSample2]]}}}
>[img[click for larger view|AttachFileSample][AttachFileSample2]]
'external' link to embedded image data:
>{{{[[click to view attachment|AttachFileSample]]}}}
>[[click to view attachment|AttachFileSample]]
'external' link to remote image:
>{{{[[click to view attachment|AttachFileSample2]]}}}
>[[click to view attachment|AttachFileSample2]]
regular ~TiddlyWiki links to attachment tiddlers:
>{{{[[AttachFileSample]]}}} [[AttachFileSample]]
>{{{[[AttachFileSample2]]}}} [[AttachFileSample2]]
<<<
!!!!!Defining MIME types
<<<
When you select a source file, a ''[[MIME|http://en.wikipedia.org/wiki/MIME]]'' file type is automatically suggested, based on filename extension.  The AttachFileMIMETypes tiddler defines the list of MIME types that will be recognized by the plugin.  Each MIME type definition consists of exactly two lines of text: the official MIME type designator (e.g., "text/plain", "image/gif", etc.), and a space-separated list of file extensions associated with that type.  List entries are separated by "----" (horizontal rules).
<<<
!!!!!Known Limitations
<<<
Internet Explorer does not support the data: URI scheme, and cannot use the //embedded// data to render images or links.  However, you can still use the local/remote link definitions to create file attachments that are stored externally.  In addition, while it is relatively easy to read local //text// files, reading binary files is not directly supported by IE's FileSystemObject (FSO) methods, and other file I/O techniques are subject to security barriers or require additional MS proprietary technologies (like ASP or VB) that make implementation more difficult.  As a result, you cannot //create// new attachment tiddlers using IE.
<<<
!!!!!Installation
<<<
Import (or copy/paste) the following tiddlers into your document:
* [[AttachFilePlugin]] (tagged with <<tag systemConfig>>)
* [[AttachFilePluginFormatters]] ("runtime distribution library") (tagged with <<tag systemConfig>>)
* [[AttachFileSample]] and [[AttachFileSample2]] //(tagged with <<tag attachment>>)//
* [[AttachFileMIMETypes //(defines binary file types)//
> Important note: As of version 3.6.0, in order to //render// images and other binary attachments created with this plugin, you must also install [[AttachFilePluginFormatters]], which extends the behavior of the TiddlyWiki core formatters for embedded images ({{{[img[tooltip|image]]}}}), linked embedded images ({{{[img[tooltip|image][link]]}}}), and external/"pretty" links ({{{[[label|link]]}}}), so that these formatter will process references to attachment tiddlers as if a normal file reference had been provided. |
<<<
!!!!!Revisions
<<<
2008.07.21 [3.9.0] Fixup for FireFox 3: use HTML with separate text+button control instead of type='file' control
2008.05.12 [3.8.1] automatically add 'attach' task to backstage (moved from BackstageTweaks)
2008.04.09 [3.8.0] in onChangeSource(), if source matches current document folder, use relative reference for local link.  Also, disable 'embed' when using IE (which //still// doesn't support data: URI)
2008.04.07 [3.7.3] fixed typo in HTML for 'local file link' so that clicking in input field doesn't erase current path/file (if any)
2008.04.07 [3.7.2] auto-create AttachFile shadow tiddler for inline interface
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.12.03 [3.7.1] in createAttachmentTiddler(), added optional "noshow" flag to suppress display of newly created tiddlers.
2007.10.29 [3.7.0] code reduction: removed support for built-in upload to server... on-line hosting of binary attachments is left to the document author, who can upload/host files using 3rd-party web-based services (e.g. www.flickr.com, ) or stand-alone applications (e.g., FTP).
2007.10.28 [3.6.0] code reduction: removed duplicate definition of image and prettyLink formatters.  Rendering of attachment tiddlers now //requires// installation of AttachFilePluginFormatters
2007.03.01 [3.5.3] use apply() to invoke hijacked function
2007.02.25 [3.5.2] in hijack of "prettyLink", fix version check for TW2.2 compatibility (prevent incorrect use of fallback handler)
2007.01.09 [3.5.1] onClickAttach() refactored to create separate createAttachmentTiddler() API for use with FileDropPluginHandlers
2006.11.30 [3.5.0] in getAttachment(), for local references, add check for file existence and fallback to remote URL if local file not found.  Added fileExists() to encapsulate FF vs. IE local file test function (IE FSO object code is TBD).
2006.11.29 [3.4.8] in hijack for PrettyLink, 'simple bracketed link' opens tiddler instead of external link to attachment
2006.11.29 [3.4.7] in readFile(), added try..catch around initWithPath() to handle invalid/non-existent paths better.
2006.11.09 [3.4.6] REAL FIX for TWv2.1.3: incorporate new TW2.1.3 core "prettyLink" formatter regexp handling logic and check for version < 2.1.3 with fallback to old plugin code.  Also, cleanup table layout in HTML (added "border:0" directly to table elements to override stylesheet)
2006.11.08 [3.4.5] TEMPORARY FIX for TWv2.1.3: disable hijack of wikiLink formatter due to changes in core wikiLink regexp definition.  //Links to attachments are broken, but you can still use {{{[img[TiddlerName]]}}} to render attachments as images, as well as {{{background:url('[[TiddlerName]]')}}} in CSS declarations for background images.//
2006.09.10 [3.4.4] update formatters for 2.1 compatibility (use this.lookaheadRegExp instead of temp variable)
2006.07.24 [3.4.3] in prettyLink formatter, added check for isShadowTiddler() to fix problem where shadow links became external links.
2006.07.13 [3.4.2] in getAttachment(), fixed stripping of newlines so data: used in CSS will work
2006.05.21 [3.4.1] in getAttachment(), fixed substring() to extract data: URI (was losing last character, which broken rendering of SOME images)
2006.05.20 [3.4.0] hijack core getRecursiveTiddlerText() to support rendering attachments in stylesheets (e.g. {{{url([[AttachFileSample]])}}})
2006.05.20 [3.3.6] add "description" feature to easily include notes in attachment tiddler (you can always edit to add them later... but...)
2006.05.19 [3.3.5] add "attach as" feature to change default name for attachment tiddlers.  Also, new optional param to specify tiddler name (disables editing)
2006.05.16 [3.3.0] completed XMLHttpRequest handling for GET or POST to configurable server scripts
2006.05.13 [3.2.0] added interface for upload feature.  Major rewrite of code for clean object definitions.  Major improvements in UI interaction and validation.
2006.05.09 [3.1.1] add wikifer support for using attachments in links from "linked image" syntax: {{{[img[tip|attachment1][attachment2]]}}}
2006.05.09 [3.1.0] lots of code changes: new options for attachments that use embedded data and/or links to external files (local or remote)
2006.05.03 [3.0.2] added {{{/%...%/}}} comments around attachment data to hide it when viewing attachment tiddler.
2006.02.05 [3.0.1] wrapped wikifier hijacks in initAttachmentFormatters() function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.27 [3.0.0] Update for TW2.0.  Automatically add 'excludeMissing' tag to attachments
2005.12.16 [2.2.0] Dynamically create/remove attachPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.
2005.11.20 [2.1.0] added wikifier handler extensions for "image" and "prettyLink" to render tiddler attachments
2005.11.09 [2.0.0] begin port from old ELS Design plugin/adaptation hybrid based on ~TW1.2.33
2005.08.05 [1.1.0] moved CSS and HTML definitions into plugin code tiddler instead of using separate tiddlers
2005.07.27 [1.0.2] core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()
2005.07.23 [1.0.1] added parameter checks and corrected addNotification() usage
2005.07.20 [1.0.0] Initial Release
<<<
| source file|{{{...\images\meow.gif}}}|
| attached on|15 May 2006 by ELSDesignStudios|
| embedded data|[[meow.gif|AttachFileSample]] - {{{type=image/gif, size=3399 bytes, encoded=4602 bytes}}}|
| ~LocalFile|/%LOCAL_LINK%/[[images/meow.gif|images/meow.gif]]|
| ~RemoteLink|/%REMOTE_LINK%/[[http://www.TiddlyTools.com/images/meow.gif|http://www.TiddlyTools.com/images/meow.gif]]|
image
<<<
usage: {{{[img[tooltip|AttachFileSample]] or [img[tooltip|AttachFileSample][link]]}}})
[img[tooltip|AttachFileSample]]
<<<

/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhOABQAPcAAAAACAAAEAAICAgICAgLDBAQCAQQGRAIEBgICBAQEBAQGBAY
FBoOEhwUFCEYEBgYGA4cIBkgGyEcHCEhISkYGCkcHCEpHCklIRAgMRkmNSElKSEp
NikeKykpKSExQiE5QjEhJTEpITEpKSkpMSkxISk1KTExITExKSktNTEpMTEpOTEx
MSk5MSkxOSkxQik5PTkrKTkxMTE8KTFCMTExOTExQjE5PTFCPTk3MzlCMTkxQjk5
QkI0MzlGPUg9M01JNi88TTlEUkI8REJCSkZDRFBDQkY/UFA/TjNMUkNOS1JKSkpW
Rj1KWEpKWj9OXEVZZlhMRlVLVVpSUlReUFdSYFVhX1JSa1VfbmBbU11ia2dcV3Fj
XVpldWVkb2tnb3tnbGZ1ZHV6aWVwe3d5c2N4iXN3gntzgHeBiYd2dYWHeoh/jIKL
kJWEfZmUh5CNlJ+VkICPn46XpZiSo5WfoJycnKaemaGcqKWlpZWnraWtqa2qoq2l
rZavvKW4xK2lta2ws/8A/7WcjLWllLWlpbWlrb2tnMatnLWtpbWtrb2trbWttb2t
tbWtvbW1pca1pbW1ra21va21xrW1tbW1vbW1xrW9tb21rb21tb21vb21xr29rb29
tca9sca1vc69rda9ra29wa3GxrW9vbW9xq29zrHGyrPB0rXG1r29vb29xr29zr3G
vb3Gxr3Gzr3G1sa9vcbGtc7GtdbGtcbGvc7GvdbGvd7Gvca9xsa9zsbGxsbGzsbG
1s7DyNbGxtbGzs7G1rjQ2MbO0sbO3sbW1s7Owc7OzsbW3sbe3s7O1s7W0tbQx+HU
zNDQ29bW1tvb1ufa1sPW6dDW4dbW3trY4sni7dbk797e3tbx9N7n3ufe3t7e597n
597i7+fe597s9N73++fn3ufn5+fn7+fv5+fv7+/e5+/r4vfr4ufn9+fv9+fv/+/n
7+/v8/Pz7/fv9+/v/+f3++f//+/39+/3/+//9+////f37/f39/f3//f/9/f////3
7//39//3////9////yH5BAEAAIAALAAAAAA4AFAAQAj+AAEJHEiwoMGDCBMqXIiw
iA8tXbxIgXHhgY+FICSIiCFFihIeXRgm9OKlDJMqYs506UIDRIUKD7w8kLCiAw0q
0ao8WCFhwgQqDx7E+EJHm0gpUaI0ibKDBo0dXeakazEkxYUOGjRMSQOmQw874eR9
IHNPXrFba5Y8CLNDyYULGlZQRVjtzJCmTnew2AGp2j19gAGTC6ctnLvDZfWR07Aj
CJAd4fTduxctFapbiDKTQ7gjSZcsT6PQqLmCxhA78v4GnuxOHuGzeei8kVLkh5I1
b9y80XPp0q1s+lK7E3eQjSIvbqJAEiPGjR0/c9REqyavtTx9rVtn09asmJsvbMb+
uLlcrFn3YsqsiRM33M3CDlkUsWMnT978cM206Y/WjH+187cEGOArqKCiCCJ00DEH
HXXkIdJBEgQVlEsS1iThAwlg+EAXcNgBySiQQILKJWOM8YYy2Tyo4oqA5HELMtxx
VwyLNA5UxAUxxPBWjTjGIIIWNSKUhhddUFFFU0O89BZjQ9DQwYUPVKABCEJg8cYZ
K5aRxRNM0JDCCimkQMUONXUAwlVOKbGDGHhAMEczgemjTV2jXeCTBqZFoZASVDDR
xGildTbHX3zUgJeTZ0Cimj5kBLHDEEM0IU59cd6TDmHm7WFQNHDAwcVoT5m2Qg2t
AJPYau6wY01/2ohTjDb+Z91hhiK3FMiILnkcWIw1iLlz0BuPquHEFaDWtEMVclyX
Wpz1pUNONdKkkkoWyEGSqyKXvYJeNtmEo6pRCEkyaX3ykMPOYOWSw41+2rDTGjnd
NoMMMsXoUkw05SFzXnlnFaiIikpOIIEUbrzaSit+RPFWByK4ocoordzC74iKKHLG
Fmm4kQciQSIkgQQIIEAAAQ+Q/IDIIieQAAFROPcHI9heUodh2ujT8c0CzcEdt8Ph
7DONGgwxxs+A7BADEUT4SOMEMWyBBRYiEA2ID16oYYYZDsXwQGNOMHGFFUz4ucMF
ND2qRBdmeDEE0Uq0IccWSuDQwdwXXrBCkxVFKOH+VVB8UceMNHohxhVNipDCEBqk
oIGUTu70AA4P3PUEYG6cEQXiM0lwwRBryKNiF1dcwYQQDK+wQxZijGYmnk+tsEIV
GrgTZ6VniMHUCHZ3EAWQCWlRxe+X47BCy8UEc08GcmfVwVUxLDHFECPoE01TTWhj
TRQimBBDEW64QUYTZczBhBcJCTFEFKODSkMUZcAJWDWMjDJHGW4089df3DiRBRDg
wzE7YPLgji5uIQmEzIMaeHgU+nbwqCaEaFEAXI82rqOav8gDLgOzjj5c9YpbXEIR
2bjHLQ5yBjdw4QxjGs0OOvA6MQSjGrNLjX2akQ1U0KEMXlACDYh0uS3M4Q3+CeoA
HbKBmHuE4yBJ6EEXUveomiBuCKhwA3AqOJmypIMb+ILEH1ChhTXoIUEbqwMiXsEL
ZThjOOEgB8cO4gYqKOEMDNxhFKjQBFmFw4IAZM25uJOKMWyhi35gxFk6WAxnqOcw
5wKcQdAgJz84shrVcIMfRpEOSMqjGtGoTnVSJY78dIcRf2ADFPwgsbM0Q2LmaRVm
GNKGYmzSPvYxFzsqOZ12dSsbACrlq85Sq1sQ6EBrfBAReHI1baTjUuGIhjZ0UZkC
3cI89CqPeQrkBzq4IQ1nWMOCCsijoPhgBUKoQstokJUJQOkBSlADJVqRimKgghEw
e4MW0KCxZvisIif+QwCUMnShkD2ABmaQAyQoMYoCXYINdCgGcKRmEAkRQAErI4DK
giIHP/wBEoy4hDvN0wxfMXRFo7CXNYh4j492TBG7VJVJV1oQKDBUCzi6WZQuUAai
+UAEPvDRBWikEaTxIGo/EwIP/igFH0hARZoTwRC+8AUtFEFqPlCCFryghZtSRE8H
6cIOHnABH0iBWl4wwxGgupIiKUEIPqjAqKhihSY4igYjMGcHUrCDKIS1hFKTAlVF
AwIq1W19NMCnhCRQgRBAAQ28SIPP1nCGNBTDaXfZQQoq8LGgYAVSILjQBC6wAyEQ
AQ11SFGNuvC7P+2ACXO4i+kipNYHdIBMppn+hxteRyYqCEwCOJDCHDyqIixoQQxu
leyXojA3rFxgBK57ixcmcNozAOYeeAjCGWZiN7hM4AmjUFEVmpCFJrjuSxEhE1ZA
YLq7KQFS0RjU/+5xhjI0YQcauEBesKoQM2QBUp113dzm4CjFZaVM8RWCGwA4u3sA
owmq1cAE8GQF+iJECXNkwg6E11kmuCEdGSATCLISlyqAwXkQSI0TuACHdBTjDh0A
gwmw0EAyiWElCilCEvDrlKfsoAzC0Ecc9uI6DXDVxxPwwgjuAQc8NSEa3UiDMngh
u3v8oXZ3QIYX/KCQIdCxKYGiQhei8dw5tHEIXqjCHGAImHR8QAhAuEL+FsrwP8E0
QxdwVogC71JjIXShFdcJDH6sUQxFQJAccHCvE87Qh0WVJRrhCJCBFEKNK0yYgZ3N
wgrcAIl0zK414qAPAPPsXQvBSR7TrNiBJKGPNyAkGsbgA1NcxwLXuQEPwrA0s9wR
Dms8N1XuOOYQJLCF/ESDPwOsVR7glCoSliEOZWCgapNwJDm0AoKSqc49FEGFMtyh
VqhIWArWoAgF5WEPLmqDfGTXM4M8oQxXSF2kxpSFHbTADX/wS6XIBatmSKILQzAc
pMIkhTSo4Q1pGGM2NqmYg1xhd2sYTQqcdAEqJMENmSywJtnBnVsoopomagMQGVSH
QVziFc1AETn+qmNPg1CBCkFwQxC+RKa71bUMsnvuZDRZrmog45138HKu6FCxzGhr
VdkQRzhEexAiZRMFe2nSClB3B21AsIrycNav34lDN9wiDwW6TBmdEQ720NoaCTmD
GqgghnbvQA7ppt8twnKq+rwLktHIgxbaAIU1+AEVxSgGL3hRSF5tkFt3QEgsdOyG
O1zUDWVgxK/1lQ53jbwsnNzOKf2giDdAgQ54zzu/aLgePi9kMqZIRzBGMYpfV6Px
laxGu7BjH3FkwxqrwvYYftDO7jxTl2dBRBsYcongkKtcs4w63AszmGaIA1ZnyTtH
zaN5iQVIEXpwj0iw4Abr1OdcFKcPu/T+I/lc8rJftapYbOrAItNhQRHyyLS5CMOf
fb0qGvqqV949WDE63MEN2qRDbGgUg+WtQARbdnr/cUq6wAg5NwfK1H7TdAl+kAd5
4AYYswYJ8gpBQllcNTdj4AWMEAxyAAE+JiFKIB6jcAvBUC8jAjNugAUmQgfBVCNB
AVsLVwVZwAQPYE5Q8hZ/MAqM0AonqAiDoAXioQdEFyTnVIRBoTIJoAAg0AVyYAeR
ACIjgghh8AaoMFI+gyEhgwAJoE9QQgBaqAAvWAaBdBmXcQd1ACdl8VE6kk8ZsoVJ
CFEJMGl2MAdzADOv8AYdpQ+8wFIDUTIj44VBAQgeQlC1ogvNgAouykAHFMiHCkEJ
qtAK0rQqjKgipWcNvyE7k6gip8QOXTeEmcgQbAAI3VByNBIQAAA7
---END_DATA---
%/
| source file|{{{...images\meow2.jpg}}}|
| attached on|15 May 2006 by ELSDesignStudios|
| embedded data|//none//|
| local link|/%LOCAL_LINK%/[[images/meow2.jpg|images/meow2.jpg]]|
| remote link|/%REMOTE_LINK%/[[http://www.TiddlyTools.com/images/meow2.jpg|http://www.TiddlyTools.com/images/meow2.jpg]]|
image
<<<
usage: {{{[img[tooltip|AttachFileSample2]] or [img[tooltip|AttachFileSample2][link]]}}})
[img[tooltip|AttachFileSample2]]
<<<
<<tiddler Concepts>>
{{floatleft{[img[Auteur|iconesWiki/auteur.gif][Auteurs]]}}}
{{floatleft{[img(150px,auto)[Auteurs|./imagesWiki/Borges.jpg][NouvelAuteur]]}}}
| [[NouvelAuteur]] |
----
<<tagCloud =Auteurs>>
/%
|Name|AutoRefresh|
|Source|http://www.TiddlyTools.com/#AutoRefresh|
|Version|0.6.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|enable/disable auto-refresh of selected content to force/prevent re-rendering when tiddler changes occur|

usage:
	<<tiddler AutoRefresh with: mode id>>

where:
	mode - (optional) is one of:
		off (or disable) - prevent refresh of rendered content (except when PageTemplate is changed!)
		on (or enable)- re-render content whenever corresponding tiddler source is changed
		force - re-render content whenever ANY tiddler content is changes (or refreshDisplay() is triggered)
	id - (optional)
		is a unique DOM element identifier on which to operate.
		If not specified, the current tiddler (or containing parent if not in a tiddler) is used.

%/<script>
	var here=story.findContainingTiddler(place);
	if (here) { // in a tiddler, get containing viewer element
		var here=place; while (here && here.className!='viewer') here=here.parentNode;
		if (!here) return; // no 'viewer' element (perhaps a custom template?)
	}
	else here=place.parentNode; // not in a tiddler, use immediate parent container

	// if DOM id param, get element by ID instead of using container
	if ("$2"!="$"+"2") var here=document.getElementById("$2");

	if (!here) return; // safety check

	var mode="$1"; if (mode=="$"+"1") mode="on";

	switch (mode.toLowerCase()) {
		case 'on':
		case 'enable':
		case 'force':
			var title=here.getAttribute("tiddler");
			if (!title) { // find source tiddler title
				var tid=story.findContainingTiddler(place);
				if (!tid) return; // can't determine source tiddler
				title=tid.getAttribute("tiddler");
			}
			here.setAttribute("tiddler",title);
			here.setAttribute("refresh","content");
			here.setAttribute("force",(mode=='force')?"true":"");
			break;
		case 'off':
		case 'disable':
			here.setAttribute("refresh","");
			here.setAttribute("force","");
			break;
	}
</script>
test
<<tiddler Concepts>>
<<tiddler AutoRefresh on>><<tiddler Article>>

++++![Résumé]

===

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var titrearticle=DataTiddler.getData(titre,"titrearticle")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var journal=DataTiddler.getData(titre,"journal")
   var volumejournal=DataTiddler.getData(titre,"volumejournal")
   var numérojournal=DataTiddler.getData(titre,"numérojournal")
   var pagesarticle=DataTiddler.getData(titre,"pagesarticle")
   return "|bgcolor(#ffff99): ''Référence:'' "+nom+", "+initiales+" ("+datepublication+"): '"+titrearticle+"', //"+journal+"// ''"+volumejournal+"''("+numérojournal+"):"+pagesarticle+"|";
</script>
----
+++[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var pagescitation=DataTiddler.getData(titre,"pagescitation")
   return nom+", "+initiales+" "+datepublication+":"+pagescitation;
</script>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
----
===<<newNoteHere>>
<data>{"nom":"Bedau","prénom":"Mark","initiales":"M","datepublication":"1992","villeédition":"Paris","dateédition":"2001","noméditeur":"Flammarion","titrearticle":"Where is the good in teleology?","journal":"Philosophy and Phenomenological Research","volumejournal":"52","numérojournal":"4","pagesarticle":"781-806","pages":"5","pagescitation":"783","isArticleRevue":true}</data>
<<tiddler AutoRefresh on>><<tiddler Article>>

++++![Résumé]
Étant donné la diversité des formes de vie possibles dans l'univers et dans les laboratoires, Bedau propose une définition fonctionnelle, laquelle permet de s'abstraire des détails chimiques inhérents aux systèmes vivants.+++[suite]

Il s'appuie sur un consensus plus ou moins établi dans la communauté //[[protocell]]// qui cherche à recréer la vie en laboratoire. Les trois fonctions critiques d'une cellule minimale sont:
# ''Identité:'' le système maintient son identité tout au long de son existence en concentrant ses composants et en protégeant leurs opérations des parasites moléculaires et autres poisons.
# ''Energie libre:'' le système extrait de l'énergie de son environnement pour se maintenir, se développer, se réparer, etc.
# ''Support informationnel héritable:'' tous ces processus sont sous le contrôle d'un support informationnel héritable qui peut être modifié au cours de la reproduction.
Ces trois fonctions sont autonomes, au sens où elles sont créées et soutenues par les opérations du système au lieu d'un mécanisme externe. Le système est responsable de son propre fonctionnement.

Ces trois fonctionnalités opérationnelles sont incarnées dans trois systèmes chimiques couplés: un ''métabolisme'', des ''gènes'', et un ''conteneur'' qui maintient le tout ensemble.

Pourquoi ces trois fonctionnalités et pas d'autres? Par exemple un traitement de l'information ou une réactivité face à l'environnement. Ces autres fonctions, selon Bedau, sont dérivatives des trois mentionnées. Mais pourquoi ces trois là? La réponse de l'auteur consiste à dire qu'elles dérivent d'une conception plus fondamentale de la vie fondée sur une //évolution sans limite//. En effet, pour qu'il y ait évolution par sélection naturelle, il faut un support informationnel héritable, lesquels ont besoin pour assurer leurs fonctions de matériaux bruts et d'énergie prélevés sur l'environnement, et le tout doit être concentré spatialement et protégé des perturbations extérieures par un conteneur.

Il ne s'agit en aucune façon de définir ce que nous entendons par "vie", mais au contraire d'en comprendre de façon théorique la nature fondamentale.

Bedau reprend une liste de caractéristiques de la vie formulée par [[Mayr|Mayr, Ernst]] (1982) qui est représentative et fait autorité. Toute vision acceptable du vivant doit expliquer pourquoi de telles propriétés hétérogènes coexistent de manière si spécifique dans la nature. La vision de la vie comme évolution sans limites donne une explication unifiée des caractéristiques citées par [[Mayr|Mayr, Ernst]].

L'auteur cite ensuite quatre mystères persistants du phénomène de la vie:
* Mystère 1: Comment sont reliées les différentes formes de vie à différents niveaux de la hiérarchie biologique?
* Mystère 2: Est-ce que la distinction entre vie et non-vie est dichotomique ou continue?
* Mystère 3: Est-ce que l'essence de la vie implique la matière ou la forme?
* Mystère 4: Est-ce que la vie et l'esprit sont intrinsèquement reliés?
Selon lui, la théorie du vivant comme évolution sans limites fournirait une solution naturelle à ces mystères.

Bedau termine par dire que la frontière vie/non-vie n'est pas dichotomique et qu'il existe une grande quantité de formes intermédiaires possibles.
===
===

<<tiddler RéférenceArticle>>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere>>
----
<data>{"nom":"Bedau","prénom":"Mark","initiales":"M","datepublication":"2007","villeédition":"Paris","dateédition":"2001","noméditeur":"Flammarion","titrearticle":"Une vue fonctionnelle de la cellule vivante minimale","journal":"Comment définir la vie?","volumejournal":"","numérojournal":"","pagesarticle":"5-13","isArticleRecueil":true}</data>
<<tiddler Note>>Dans ce texte, Bedau se prononce explicitement pour une définition fonctionnelle de la vie, mais il ne mentionne pas les difficultés de définition des [[fonctions biologiques|Fonction]].

<data>{"nom":"Bedau","prénom":"Marc","initiales":"M","titrelivre":"smdkfkj","datepublication":"2007","numérochapitre":"undefined","titrechapitre":"undefined","numéropage":"undefined"}</data>
{{floatleft{[img(120px,auto)[Mark Bedau, site perso|imagesWiki/Bedau, Marc.jpg][http://people.reed.edu/~mab/]]}}}
L'un des papes de la [[vie artificielle|VieArtificielle]]. Auteur d'articles sur la [[téléologie|Téléologie]] biologique et d'articles sur la [[définition de la vie|VieDéfinition]].

!Publications
<<forEachTiddler where
'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>

+++!![Notes]
<<forEachTiddler where
'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.contains("Notes")'>>
===
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
=== +++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Bedau","prénom":"Marc","initiales":"M","titrelivre":"truc","datepublication":"1928","villeédition":"Paris","dateédition":"2001","noméditeur":"Flammarion","titrearticle":"La bête humaine","journal":"","volumejournal":"sdf","numérojournal":"sdfff","pagesarticle":"5-13"}</data>
{{floatleft{[img(200px,auto)[Claude Bernard, la leçon d'anatomie|./imagesWiki/Claude-Bernard.jpg][http://fr.wikipedia.org/wiki/Claude_Bernard]]}}}

!Publications
<<forEachTiddler where
'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
=== +++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<<tiddler Auteur>>{{floatleft{
[img(120px,auto)[ ]]
}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Bersini","prénom":"et al.","initiales":"et al.","isEditedBook":true,"titrelivre":"Comment définir la vie?","datepublication":"2007","villeédition":"Paris","noméditeur":"Vuibert"}</data>
<<tiddler AutoRefresh on>><<tiddler Livre>>{{floatleft{
}}}++++![Résumé]
Ce livre confronte des chercheurs en biologie, en intelligence artificielle et en philosophie des sciences autour de la question de la définition de la vie.
===

++++![Chapitres]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"])'>>
===

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Bersini","prénom":"et al.","initiales":"et al.","isEditedBook":true,"titrelivre":"Comment définir la vie?","datepublication":"2007","villeédition":"Paris","noméditeur":"Vuibert"}</data>
<<tiddler Auteur>>

!Publications
<<forEachTiddler where
'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"])'>>
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"titrearticle":"Functions","datepublication":"1987","journal":"The Journal of Philosophy","nom":"Bigelow","prénom":"et al.","initiales":"et al.","volumejournal":"84","numérojournal":"4","pagesarticle":"181-196"}</data>

''inconsciousToolmaker:''
* <part inconsciousToolmaker> "[Some tools] may have been produced with an over-all function in mind (say, hitting nails); but the toolmaker may not have in mind any function for the components and features of the tool, which contribute to the over-all function." ([[Bigelow & Pargetter 1987:185]]) </part>
''theoryOfEvolution:''
* <part theoryOfEvolution> "What if the theory of evolution by natural selection were to be (or had been) false? Clearly then, on the etiological theory of biological functions, as we have specified it, there would be no biological functions." ([[Bigelow & Pargetter 1987:188]]) </part>

''créationnisme:''
* <part créationnisme> "For creationism, there would of course be an enormous epistemological problem of discovering what the function of biological structures were; for this would depend on discovering what the creator had in mind." ([[Bigelow & Pargetter 1987:188]]) </part>
<<tiddler AutoRefresh on>><<tiddler Article>>

++++![Résumé]

===


<<tiddler RéférenceArticle>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere>> [img[Fichier attaché |IconePDF][../Bigelow & Pargetter - Functions - 1987.pdf]]
----
<data>{"titrearticle":"Functions","datepublication":"1987","journal":"The Journal of Philosophy","nom":"Bigelow","prénom":"et al.","initiales":"et al.","volumejournal":"84","numérojournal":"4","pagesarticle":"181-196"}</data>
<<formTiddler BiggerFormTemplate>><data>{"userName":"Jerry Wall","isVIP":true,"password":"1234","level":"Guru","browser":"Firefox","music":["New Age"],"notes":"You can enter Text\nacross multiple\nlines...","attachment":"E:\\_Library_\\MiscUB-Vol2005-06 (open)\\Opera 8.51\\ow32enen851.exe"}</data>
<<formTiddler BiggerFormTemplate>><data>{"userName":"Will Snyder","password":"ggggggg","level":"Expert","music":["Jazz","Blues"],"notes":"Having Fun with TiddlyWiki and the FormTiddlerPlugin.\n\n(BTW: notice the multi selection in the 'Music Prefernces' list box)"}</data>
<<formTiddler BiggerFormTemplate>><data>{"userName":"Jack Brown","password":"asdasd","level":"Beginner","browser":"Internet Explorer","notes":"New here..."}</data>
!An Example Form, showing many features of the FormTiddlerPlugin
<html>
<sub><b>Name:</b></sub><br/>
<input name=userName type=text/><input name=isVIP type=checkbox />is VIP<br/>
<sub><b>Password:</b></sub><br/>
<input name=password type=password /><br/>
<sub><b>Attachment:</b></sub><br/>
<input name=attachment type=file /><br/>

<sub><b>Level:</b></sub><br/><input name=level type=radio value="Beginner" />Beginner
<input name=level type=radio value="Expert" />Expert
<input name=level type=radio value="Guru" />Guru<br/>

<sub><b>Browser:</b></sub><br/>
<select name=browser >
 <option>Firefox
 <option>Internet Explorer
 <option>Opera
 <option>Other
</select >
<br/>
<sub><b>Music Preferences:</b></sub><br/>
<select name=music MULTIPLE >
 <option> R&B
 <option> Jazz
 <option> Blues
 <option> New Age
</select >
<br/>

<sub><b>Notes:</b></sub><br/>
<TEXTAREA name=notes rows=4 cols=80 ></TEXTAREA>
<p/>
<input name=hiddenValue type=hidden value="This is a hidden value" />

<input name=btn type=button value="Just a button" />
<input name=btnSubmit type=submit />
<input name=btnReset type=reset />
<br/>
</div>
</html>
[[Card 1|BiggerForm (Card 1)]] - [[Card 2|BiggerForm (Card 2)]] - [[Card 3|BiggerForm (Card 3)]]

~~(This is an example form, using the form template BiggerFormTemplate and the FormTiddlerPlugin.)~~

{{floatleft{[img(150px, auto)[Biologie (Deinococcus radiodurans)|./imagesWiki/Deinococcus_radiodurans.jpg][Biologie]]}}}
| <<tagCloud =Biologie>> |
<<tiddler Idées>>La différence entre la [[biologie|Biologie]] et la [[physique|Physique]], c'est peut-être le fait que les phénomènes physiques s'inscrivent dans le cadre d'une nécessité qu'expriment des [[lois|LoiNaturelle]], tandis que la biologie manifeste une contingence non-aléatoire qui, au-delà du comment, pose la question du pourquoi. Il faut arriver à comprendre pourquoi nous sommes si enclins à employer le concept de [[fonction|Fonction]] en biologie et pas en physique. Ce à quoi [[Davies|Davies, PS (2001): Norms of Nature]] ne répond pas.


<<tiddler Théories>>
!Approche descendante (top-down)
*Définir l'ensemble minimal de gènes nécessaires pour qu'une cellule vivante accomplisse, dans les conditions environnementales les plus favorables, ses fonctions de base: construction métabolique et reproduction.
*Définir un ensemble de bio-briques interchangeables permettant de construire une cellule artificielle programmée comme un circuit électronique.
*Synthétiser de nouvelles protéines, étendre l'alphabet des nucléotides, ou inventer un nouveau code génétique.

!Approche ascendante (bottom-up)
*Reconstituer les éléments complexes du vivant à partir d'éléments simples. Actuellement, les études expérimentales du passage de l'inerte au vivant se concentrent essentiellement sur deux aspects:
**la biophysique des membranes et vésicules artificielles simples
**la chimie des polymères d'ARN autoréplicants.
*On cherche à construire un système de vésicules autoreproductrices capables à la fois de faire davantage de copies des mêmes ARN (autoréplicants) et de catalyser la synthèse des membranes à partir de substrats chimiques simples.
{{floatleft{[img(150px,auto)[Michel Bitbol|imagesWiki/Bitbol.jpg]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Bitbol","prénom":"Michel","initiales":"M"}</data>
<html>
<style>
.rolodex table {
border: 0px solid;
background-color:#FFFF99;
}

.rolodex tr, .rolodex td {
border: 0px solid;
}
</style>
<span class="rolodex">
 <table>
 <tr>
 <td colspan="6"><sub><b>Content:</b></sub><br>
 <textarea name=contentrows="8" cols="40" style="width:100%" ></textarea></td></tr>
 <tr>
 <td colspan="6"><sub><b>Comments:</b></sub><br>
 <textarea name=comments rows="6" cols="40" style="width:100%" ></textarea></td></tr>
</table>
</span>
</html>
<<tiddler Chapitre>>
!!1. Mindreaders[[→|Bloom, P (2004) - ch.01]]
Pour les adultes comme pour les enfants, les objets matériels possèdent les quatre propriétés suivantes:
#''Cohésion:'' Les objets sont des masses qui se déplacent comme un tout. Pour connaître les limites d'un objet, il suffit d'en attraper un bout et de tirer. Tout ce qui vient avec appartient au même objet; pas ce qui reste sur place.
#''Solidité'': Les objets ne sont pas facilement perméables par d'autres objets. Si on touche un objet avec le doigt, celui-ci ne s'enfonce pas.
#''Continuité'': Les objets se déplacent de façon continue dans le temps et l'espace.
#''Contact'': Les objets bougent par contact. Une bille sur une table de billard ne bougera pas à moins qu'un autre objet entre en contact avec elle. Les exceptions à cette règle sont les créatures animées, comme les personnes et les chiens, et aussi certains artefacts complexes comme les robots et les voitures. <data>{"nom":"Bloom","prénom":"Paul","initiales":"P","isLivre":true,"titrelivre":"Descartes´ Baby","datepublication":"2004","villeédition":"New York","noméditeur":"Basic Books","numérochapitre":"1","titrechapitre":"Mindreaders"}</data>

<<tiddler AutoRefresh on>><<tiddler Livre>>{{floatleft{
}}}++++![Résumé]
Les humains sont naturellement dualistes. L'auteur montre que les jeunes enfants interprètent le monde comme étant composé, d'un côté, d'objets inanimés obéissant aux lois de la physique et, de l'autre, d'esprits immatériels dont ils peuvent lire les émotions et y répondre. Les adultes conservent cette conception dualiste du monde. Selon l'auteur, ces deux capacités distinctes sont le produit de la sélection naturelle.
===

+++![Chapitres]
<<tiddler [[Bloom, P (2004) - ch.01]]>>
<<tiddler [[Bloom, P (2004) - ch.02]]>>
<<tiddler [[Bloom, P (2004) - ch.03]]>>
<<tiddler [[Bloom, P (2004) - ch.04]]>>
<<tiddler [[Bloom, P (2004) - ch.05]]>>
<<tiddler [[Bloom, P (2004) - ch.06]]>>
===

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Bloom","prénom":"Paul","initiales":"P","isLivre":true,"titrelivre":"Descartes´ Baby","datepublication":"2004","villeédition":"New York","noméditeur":"Basic Books","numérochapitre":"1","titrechapitre":"Mindreaders"}</data>
<<tiddler Auteur>>{{floatleft{
[img(120px,auto)[ ]]
}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Bloom","prénom":"Paul","initiales":"P","isLivre":true,"titrelivre":"Descartes´ Baby","datepublication":"2004","villeédition":"New York","noméditeur":"Basic Books"}</data>

[img[tooltip|IconeLivreOuvert]]

En Obras Completas, vol. 2, Emecé Editores.

[img[Livre|IconeLivreOuvert]]

En Obras Completas, vol. 2, Emecé Editores.

+++![Chapitres]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"])>>
===

<<tiddler RéférenceLivre>>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere label:"nouvelle note">><<newChapterHere>>
----<data>{"isLivre":true,"pagescitation":"91","motscléscitation":"Classification"}</data>

<<tiddler Livre>>
En Obras Completas, vol. 2, Emecé Editores.
<<tiddler Citation>>
!Matérialisme
<part Matérialisme> "Para nosotros, la última y firme realidad de las cosas es la materia -los electrones giratorios que recorren distancias estelares en la soledad de los átomos-; para los capaces de platonizar, la especie, la forma."

(Borges, //Historia de la eternidad//, "Historia de la Eternidad", en //Obras Completas//, Emecé Editores, vol. 1, [[p. 378|Borges 1936:378]]) </part>
<<tiddler Citation>>
!Classification
<part Classification> "[...] una cierta enciclopedia china que se titula //Emporio celestial de conocimientos benévolos//. En sus remotas páginas está escrito que los animales se dividen en (a) pertenecientes al Emperador, (b) embalsamados, (c) amaestrados, (d) lechones, (e) sirenas, (f) fabulosos, (g) perros sueltos, (h) incluidos en esta clasificación, (i) que se agitan como locos, (j) innumerables, (k) dibujados con un pincel finísimo de pelo de camello, (l) etcétera, (m) que acaban de romper el jarrón, (n) que de lejos parecen moscas." 

([[Borges 1952 - La enciclopedia china]], in //[[Otras Inquisiciones|Borges (1952): Otras Inquisiciones]]//, "El idioma analítico de John Wilkins", p. 91.) </part><data>{"isLivre":true,"pagescitation":"91","motscléscitation":"Classification"}</data>
<<tiddler Citation>>
!mapaAutorreferente
<part mapaAutorreferente> "Las invenciones de la filosofía no son menos fantásticas que las del arte: Josiah Royce, en el primer volumen de la obra //The World and the Individual// (1899), ha formulado la siguiente: "Imaginemos que una porción del suelo de Inglaterra ha sido nivelada perfectamente y que en ella traza un cartógrafo un mapa de Inglaterra. La obra es perfecta; no hay detalle del suelo de Inglaterra, por diminuto que sea, que no esté registrado en el mapa; todo tiene ahí su correspondencia. Ese mapa, en tal caso, debe contener un mapa del mapa, que debe contener un mapa del mapa del mapa, y así hasta lo infinito."

{{textindent25{
¿Por qué nos inquieta que el mapa esté incluido en el mapa y las mil y una noches en el libro de //Las Mil y una noches//? ¿Por qué nos inquieta que don Quijote sea lector del //Quijote//, y Hamlet, espectador de //Hamlet//? Creo haber dado con la causa: tales inversiones sugieren que si los caracteres de una ficción pueden ser lectores o espectadores, nosotros, sus lectores o espectadores, podemos ser ficticios. En 1833, Carlyle observó que la historia universal es un infinito libro sagrado que todos los hombres escriben y leen y tratan de entender, y en el que también los escriben."
}}}
:(Borges, //Otras Inquisiciones//, "Magias parciales del 'Quijote', [[p.50|Borges 1952: "Magias parciales del 'Quijote'"]])
</part>
<<tiddler Citation>>
!hechoEstético
<part hechoEstético> "La música, los estados de felicidad, la mitología, las caras trabajadas por el tiempo, ciertos crepúsculos y ciertos lugares, quieren decirnos algo, o algo dijeron que no hubieramos debido perder, o están por decir algo; esta inminencia de una revelación, que no se produce, es, quizá, el hecho estético." (//Otras Inquisiciones//, "La muralla y los libros", [[p.15|Borges 1952:15]]) </part>
<<tiddler Citation>>
"[[DEL RIGOR EN LA CIENCIA|Borges 1960: "Del Rigor en la Ciencia"]]

...En aquel Imperio, el Arte de la Geografía logró tal Perfección que el mapa de una sola Provincia ocupaba toda una Ciudad, y el mapa del Imperio, toda una provincia. Con el tiempo, esos Mapas Desmesurados no satisficieron y los Colegios de Cartógrafos levantaron un Mapa del Imperio, que tenía el tamaño del Imperio y coincidía puntualmente con él. Menos Adictas al Estudio de la Cartografía, las Generaciones Siguientes entendieron que ese dilatado Mapa era Inútil y no sin Impiedad lo entregaron a las Inclemencias del Sol y de los Inviernos. En los desiertos del Oeste perduran despedazadas Ruinas del Mapa, habitadas por Animales y por Mendigos; en todo el País no hay otra reliquia de las Disciplinas Geográphicas.

:SUÁREZ MIRANDA: //Viajes de varones prudentes//,
:Libro Cuarto, Cap. XLV, Lérida, 1658."
{{floatleft{[img(120px,auto)[Jorge Luis Borges, wikipedia|./imagesWiki/Borges.jpg][http://es.wikipedia.org/wiki/Jorge_Luis_Borges]]}}}
!Publications
<<forEachTiddler where
'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"])'>>
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Borges","prénom":"Jorge Luis","initiales":"JL"}</data>
\n
<html>
<style>
.rolodex table {
border: 0px solid;
background-color:#FFFF99;
}

.rolodex tr, .rolodex td {
border: 0px solid;
}
</style>
<span class="rolodex">
 <table>
 <tr>
 <td align="right"><b>Project:</b></td>
 <td ><select name=project ><option><option>DataTiddlerProject<option>ForEachTiddlerProject<option>FormTiddlerProject</select ></td>
 <td align="right"><b>Reported By:</b></td>
 <td ><input name=reportedBy type=text style="width:100%" /></td>
 <td align="right"><b>Date:</b></td>
 <td ><input name=reportDate type=text style="width:100%" /></td>
 </tr>
 <tr>
 <td colspan="6"><sub><b>Description:</b></sub><br>
 <textarea name=description rows="8" cols="40" style="width:100%" ></textarea></td></tr>
 <tr>
 <td colspan="6"><sub><b>Cause:</b></sub><br>
 <textarea name=cause rows="6" cols="40" style="width:100%" ></textarea></td></tr>
 <tr>
 <td align="right"><b>State:</b></td>
 <td ><select name=state ><option>new<option>in progress<option>info pending<option>fixed<option>closed</select ></td>
 <td align="right"><b>Fixed in:</b></td>
 <td colspan = "4"><input name=fixedIn type=text style="width:100%" /></td></tr>
</table>
</span>
</html>
<<forEachTiddler
 where
 'tiddler.tags.contains("BugReport")'
 sortBy
 'tiddler.data("project")+tiddler.data("state")'
 script
 'function writeBugReportLine(tiddler, index) {var result =""; if (index ==0) {result +="|!Project|!Title|!State|\n";} result +="|"+tiddler.data("project")+"|[["+tiddler.title+"]]|"+tiddler.data("state")+"|\n"; return result;}'
 write
 'writeBugReportLine(tiddler,index)'
>>
{{floatleft{[img(120px,auto)[Georges Canguilhem|imagesWiki/Canguilhem.jpg]]}}}

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Canguilhem","prénom":"Georges","initiales":"G"}</data>


<<tiddler [[Rosch, E 1973:332/naturalCategories]]>>
<<<
Lorsque l'auteur parle de ''catégories naturelles'', cela ne veut pas forcément dire que ces catégories existent dans la nature, mais qu'elles correspondent à des noms de concepts dans les langues naturelles (voir [[ceci|Catégories: le continu et le discontinu]]) ou alors qu'elles correspondent à des domaines perceptifs.

D'ailleurs, pourrait-on dire que les catégories de couleurs correspondent à quelque chose dans la nature? Autrement dit, la partition du domaine continu des couleurs en rouge, jaune et bleu, par exemple, correspond-elle à quelque chose "là-dehors", indépendamment de nous? On pourrait penser que oui dans la mesure où l'on peut composer toutes les autres couleurs à partir de ces trois couleurs de base. Mais je ne suis pas sûr qu'on ne puisse pas le faire avec trois autres couleurs du spectre (@@à vérifier@@).
<<<

''@@color:red;"Evidence has been presented that there are nonarbitrary color and form categories which form around perceptually salient "natural prototypes".@@ (p.348)''
<<<
La catégorisation des couleurs n'est pas arbitraire mais elle est limitée par des contraintes perceptuelles. Si les catégories de couleurs n'existent pas "là-dehors", cela veut dire qu'on peut envisager ''une espèce d'objectivité non réaliste'' des catégories de couleurs.

L'auteur cite ensuite certaines études qui tendent à montrer que ces catégories "naturelles" correspondent à des contraintes physiologiques dans la perception des couleurs. Mais s'il n'y a pas de raisons de penser que ces catégories préexistent d'une certaine manière à leur catégorisation, c'est-à-dire que si la partition du spectre des couleurs n'est pas indépendante de nous, alors les catégories en question ne renvoient pas à une "réalité extérieure" mais à des contraintes internes, bien que universellement partagées. ''Il pourrait donc s'agir de catégories humaines.''
<<<
<data>{"nom":"Rosch","prénom":"Eleanor","initiales":"E","isArticleRevue":true,"titrearticle":"Natural Categories","datepublication":"1973","journal":"Cognitive Psychology","volumejournal":"4","pagesarticle":"328-350"}</data>
*Beaucoup de catégories dites "réelles" (c'est-à-dire celles pour lesquelles il existe des concepts exprimés par des mots dans les "langages naturels") partitionnent des domaines dont les éléments ne sont pas discrets mais composés de variations continues.
*Les catégories des langues naturelles ne sont pas nécessairement composées de combinaisons d'attributs plus simples et préappris.
*Pour la plupart des concepts des langues naturelles, si ce n'est pour tous, certains éléments sont clairement de meilleurs exemples de la catégories que d'autres éléments.

Les domaines des couleurs et des formes exemplifient les trois points précédents.
(Tiré de [[Rosch, E (1973), p. 329|Rosch, E (1973): "Natural Categories"]])

<data>{"nom":"Rosch","prénom":"Eleanor","initiales":"E","isArticleRevue":true,"titrearticle":"Natural Categories","datepublication":"1973","journal":"Cognitive Psychology","volumejournal":"4","pagesarticle":"328-350"}</data>

<<tiddler Note>>Il y a certaines couleurs et certaines formes qui sont perceptivement plus saillantes que d'autres dans leur domaine. L'hypothèse de Rosch est que les couleurs saillantes sont les zones de l'espace des couleurs qui correspondent le mieux aux noms des couleurs de base dans de nombreuses langues, et les formes saillantes sont les "bonnes formes" de la [[Gestalt]] (cercle, carré, etc.) Ces couleurs et ces formes attirent davantage l'attention que d'autres stimuli, et elles sont plus facilement apprises. Lorsque les noms de catégories sont appris, il tendent à être attachés en premier lieu aux stimuli saillants (et seulement après généralisés à d'autres couleurs), et c'est de cette manière que les "prototypes naturels" deviennent le foyer autour duquel s'organisent les catégories.
(Tiré de [[Rosch, E (1973), p. 330|Rosch, E (1973): "Natural Categories"]])
<data>{"nom":"Rosch","prénom":"Eleanor","initiales":"E","isArticleRevue":true,"titrearticle":"Natural Categories","datepublication":"1973","journal":"Cognitive Psychology","volumejournal":"4","pagesarticle":"328-350"}</data>

!Causes lointaines (évolutives)
Selon [[Ernst Mayr|Mayr, Ernst]]:
|<<tiddler [[Mayr 1997:80/causesLointaines(évolutives)]]>>|
<<tiddler Concepts>>
!Causes immédiates (fonctionnelles)
Selon [[Ernst Mayr|Mayr, Ernst]]:
|<<tiddler [[Mayr 1997:80/causesImmédiates(fonctionnelles)]]>>|

|Name|CheckboxPluginInfo|
|Source|http://www.TiddlyTools.com/#CheckboxPlugin|
|Documentation|http://www.TiddlyTools.com/#CheckboxPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|documentation for CheckboxPlugin|
This plugin extends the TiddlyWiki syntax to allow definition of checkboxes that can be embedded directly in tiddler content.  Checkbox states are preserved by:
* setting/removing tags on specified tiddlers,
* or, setting custom field values on specified tiddlers,
* or, saving to a locally-stored cookie ID,
* or, automatically modifying the tiddler source content (deprecated).
When an ID is assigned to the checkbox, it enables direct programmatic access to the checkbox DOM element, as well as creating an entry in TiddlyWiki's config.options[ID] internal data.  In addition to tracking the checkbox state, you can also specify custom javascript for programmatic initialization and onClick event handling for any checkbox, so you can provide specialized side-effects in response to state changes.
!!!!!Inline (wiki syntax) Usage
<<<
//{{{
[ ]or[_] and [x]or[X]
//}}}
Simple checkboxes using 'Inline X' storage.  The current unchecked/checked state is indicated by the character between the {{{[}}} and {{{]}}} brackets ("_" means unchecked, "X" means checked).  When you click on a checkbox, the current state is retained by directly modifying the tiddler content to place the corresponding "_" or "X" character in between the brackets.
>//''NOTE: 'Inline X' syntax has been deprecated...''  This storage format only works properly for checkboxes that are directly embedded and accessed from content in a single tiddler.  However, if that tiddler is 'transcluded' into another (by using the {{{<<tiddler TiddlerName>>}}} macro), the 'Inline X' will be ''erroneously stored in the containing tiddler's source content, resulting in corrupted content in that tiddler.''  For anything but the most simple of "to do list" uses, you should select from the various alternative storage methods described below...//
//{{{
[x=id]
//}}}
Assign an optional ID to the checkbox so you can use {{{document.getElementByID("id")}}} to manipulate the checkbox DOM element, as well as tracking the current checkbox state in {{{config.options["id"]}}}.  If the ID starts with "chk" the checkbox state will also be saved in a cookie, so it can be automatically restored whenever the checkbox is re-rendered (overrides any default {{{[x]}}} or {{{[_]}}} value).  If a cookie value is kept, the "_" or "X" character in the tiddler content remains unchanged, and is only applied as the default when a cookie-based value is not currently defined.
//{{{
[x(title|tag)] or [x(title:tag)]
//}}}
Initializes and tracks the current checkbox state by setting or removing a particular tag value from a specified tiddler.  If you omit the tiddler title (and the | or : separator), the specified tag is assigned to the current tiddler.  If you omit the tag value, as in {{{(title|)}}}, the default tag, {{{checked}}}, is assumed.  Omitting both the title and tag, {{{()}}}, tracks the checkbox state by setting the "checked" tag on the current tiddler.  When tag tracking is used, the "_" or "X" character in the tiddler content remains unchanged, and is not used to set or track the checkbox state.  If a tiddler title named in the tag does not exist, the checkbox state defaults to the "inline X" value.  If this value is //checked//, or is subsequently changed to //checked//, it will automatically create the missing tiddler and then add the tag to it.  //''NOTE: beginning with version 2.1.2 of this plugin, the "|" separator is the preferred separator between the title and tag name, as it avoids syntactic ambiguity when ":" is used within tiddler titles or tag names.''//
//{{{
[x(field@tiddler)]
//}}}
Initializes and tracks the current checkbox state by setting a particular custom field value from a specified tiddler.  If you omit the tiddler title (but not the "@" separator), the specified field on the current tiddler is used.  If you omit the field name, as in {{{(@tiddler)}}}, a default fieldname of {{{checked}}} is assumed.  Omitting both the field and the tiddler title, {{{(@)}}}, defaults to setting the "checked" field on the current tiddler.  When field tracking is used, the "_" or "X" character in the tiddler content remains unchanged, and is not used to set or track the checkbox state.  If the tiddler title named in the parameter does not exist, the checkbox state defaults to the "inline X" value.  If this value is //checked// or is subsequently changed to //checked//, it will automatically create the missing tiddler and then add the field to it.
//{{{
[x{javascript}{javascript}{javascript}]
//}}}
You can define optional javascript code segments to add custom initialization and/or 'onClick' handlers to a checkbox.  The current checkbox state (and it's other DOM attributes) can be set or read from within these code segments by reference to a globally-defined context object, "place" (which can also be referenced as "window.place").

The first code segment will be executed when the checkbox is initially displayed, so that you can programmatically determine it's starting checked/unchecked state.  The second code segment (if present) is executed whenever the checkbox is clicked, but //before the regular checkbox processing in performed// ("onClickBefore"), so that you can apply programmed responses or intercept and override the checkbox state based on custom logic.  The third code segment (if present) is executed whenver the checkbox is clicked, //after the regular checkbox processing has completed// ("onClickAfter"), so that you can include "side-effect" processing based on the checkbox state just applied.

>Note: if you want to use the default checkbox initialization processing with a custom onClickBefore/After function, use this syntax:
>{{{[x(tag){}{javascript}]}}} or {{{[x(tag){}{}{javascript}]}}}
<<<
!!!!!Macro usage
<<<
In addition to embedded checkboxes using the wiki syntax described above, a ''macro-based syntax'' is also provided, for use in templates where wiki syntax cannot be directly used.  This macro syntax can also be used in tiddler content, as an alternative to the wiki syntax.  When embedded in [[PageTemplate]], [[ViewTemplate]], or [[EditTemplate]] (or custom alternative templates), use the following macro syntax:
//{{{
<span macro="checkbox target checked id onInit onClickBefore onClickAfter"></span>
//}}}
or, when embedded in tiddler content, use the following macro syntax:
//{{{
<<checkbox target checked id onInit onClickBefore onClickAfter>>
//}}}
where:
''target''
>is either a tag reference (e.g., ''tagname|tiddlername'') or a field reference (e.g. ''fieldname@tiddlername''), as described above.
''checked'' (optional)
>is a keyword that sets the initial state of the checkbox to "checked".  When omitted, the default checkbox state is "unchecked".
''id'' (optional)
>specifies an internal config.options.* ID, as described above.  If the ID begins with "chk", a cookie-based persistent value will be created to track the checkbox state in between sessions.
''onInit'' (optional)
>contains a javascript event handler to be performed when the checkbox is initially rendered (see details above).
''onClickBefore'' and/or ''onClickAfter'' (optional)
>contains a javascript event handler to be performed each time the checkbox is clicked (see details above).  //note: to use the default onInit handler with a custom onClickBefore/After handler, use "" (empty quotes) or {} (empty function) as a placeholder for the onInit and/or onClickBefore parameters//
<<<
!!!!!Examples
<<<
''checked and unchecked static default ("inline X") values:''
//{{{
[X] label
[_] label
//}}}
>[X] label
>[_] label
''document-based value (id='demo', no cookie):''
//{{{
[_=demo] label
//}}}
>[_=demo] label
''cookie-based value  (id='chkDemo'):''

//{{{
[_=chkDemo] label
//}}}
>[_=chkDemo] label
''tag-based value (TogglyTagging):''
//{{{
[_(CheckboxPluginInfo|demotag)]
[_(CheckboxPluginInfo|demotag){place.refresh.tagged=place.refresh.container=false}]
//}}}
>[_(CheckboxPluginInfo|demotag)] toggle 'demotag' (and refresh tiddler display)
>[_(CheckboxPluginInfo|demotag){place.refresh.tagged=place.refresh.container=false}] toggle 'demotag' (no refresh)
''field-based values:''
//{{{
[_(demofield@CheckboxPluginInfo)] demofield@CheckboxPluginInfo
[_(demofield@)] demofield@ (equivalent to demonfield@ current tiddler)
[_(checked@CheckboxPluginInfo)] checked@CheckboxPluginInfo
[_(@CheckboxPluginInfo)] @CheckboxPluginInfo
[_(@)] @ (equivalent to checked@ current tiddler)
//}}}
>[_(demofield@CheckboxPluginInfo)] demofield@CheckboxPluginInfo
>[_(demofield@)] demofield@ (current tiddler)
>[_(checked@CheckboxPluginInfo)] checked@CheckboxPluginInfo
>[_(@CheckboxPluginInfo)] @CheckboxPluginInfo
>[_(@)] toggle field: @ (defaults to "checked@here")
>click to view current: <<toolbar fields>>
''custom init and onClick functions:''
//{{{
[X{place.checked=true}{alert(place.checked?"on":"off")}] message box with checkbox state
//}}}
>[X{place.checked=true}{alert(place.checked?"on":"off")}] message box with checkbox state
''retrieving option values:''
>config.options['demo']=<script>return config.options['demo']?"true":"false";</script>
>config.options['chkDemo']=<script>return config.options['chkDemo']?"true":"false";</script>
<<<
!!!!!Configuration
<<<
Normally, when a checkbox state is changed, the affected tiddlers are automatically re-rendered, so that any checkbox-dependent dynamic content can be updated.  There are three possible tiddlers to be re-rendered, depending upon where the checkbox is placed, and what kind of storage method it is using.
*''container'': the tiddler in which the checkbox is displayed. (e.g., this tiddler)
*''tagged'': the tiddler that is being tagged (e.g., "~MyTask" when tagging "~MyTask:done")
*''tagging'': the "tag tiddler" (e.g., "~done" when tagging "~MyTask:done")
You can set the default refresh handling for all checkboxes in your document by using the following javascript syntax either in a systemConfig plugin, or as an inline script.  (Substitute true/false values as desired):
{{{config.checkbox.refresh = { tagged:true, tagging:true, container:true };}}}

You can also override these defaults for any given checkbox by using an initialization function to set one or more of the refresh options.  For example:
{{{[_{place.refresh.container=false}]}}}
<<<
!!!!!Revisions
<<<
2008.01.08 [*.*.*] plugin size reduction: documentation moved to [[CheckboxPluginInfo]]
2008.01.05 [2.4.0] set global "window.place" to current checkbox element when processing checkbox clicks.  This allows init/beforeClick/afterClick handlers to reference RELATIVE elements, including using "story.findContainingTiddler(place)".  Also, wrap handlers in "function()" so "return" can be used within handler code.
2008.01.02 [2.3.0] split optional custom onClick handling into separate onClickBefore and onClickAfter handlers.  The onClickBefore handler permits interception of the click BEFORE the checkbox is set.  onClickAfter allows follow-on 'side-effect' processing to occur AFTER the checkbox is set.
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.08.06 [2.2.5] supress automatic refresh of any tiddler that is currently being edited.  Ensures that current tiddler edit sessions are not prematurely discarded (losing any changes).  However, if checkbox changes a tag on a tiddler being edited, update the "tags" input field (if any) so that saving the edited tiddler correctly reflects any changes due to checkbox activity... see refreshEditorTagField().
2007.07.13 - 2.2.4 in handler(), fix srctid reference (was "w.tiddler", should have been "w.tiddler.title").  This fixes broken 'inline X' plus fatal macro error when using PartTiddlerPlugin.  Thanks to cmari for reporting the problem and UdoBorkowski for finding the code error.
2007.06.21 - 2.2.3 suppress automatic refresh of tiddler when using macro-syntax to prevent premature end of tiddler editing session.
2007.06.20 - 2.2.2 fixed handling for 'inline X' when checkboxes are contained in a 'trancluded' tiddler.  Now, regardless of where an inline X checkbox appears, the X will be placed in the originating source tiddler, rather than the tiddler in which the checkbox appears.
2007.06.17 - 2.2.1 Refactored code to add checkbox //macro// syntax for use in templates (e.g., {{{macro="checkbox ..."}}}. Also, code cleanup of existing tag handling.
2007.06.16 - 2.2.0 added support for tracking checkbox states using tiddler fields via "(fieldname@tiddlername)" syntax.
2006.05.04 - 2.1.3 fix use of findContainingTiddler() to check for a non-null return value, so that checkboxes won't crash when used outside of tiddler display context (such as in header, sidebar or mainmenu)
2006.03.11 - 2.1.2 added "|" as delimiter to tag-based storage syntax (e.g. "tiddler|tag") to avoid parsing ambiguity when tiddler titles or tag names contain ":".   Using ":" as a delimiter is still supported but is deprecated in favor of the new "|" usage.  Based on a problem reported by JeffMason.
2006.02.25 - 2.1.0 added configuration options to enable/disable forced refresh of tiddlers when toggling tags
2006.02.23 - 2.0.4 when toggling tags, force refresh of the tiddler containing the checkbox.
2006.02.23 - 2.0.3 when toggling tags, force refresh of the 'tagged tiddler' so that tag-related tiddler content (such as "to-do" lists) can be re-rendered.
2006.02.23 - 2.0.2 when using tag-based storage, allow use [[ and ]] to quote tiddler or tag names that contain spaces:
{{{[x([[Tiddler with spaces]]:[[tag with spaces]])]}}}
2006.01.10 - 2.0.1 when toggling tags, force refresh of the 'tagging tiddler'.  For example, if you toggle the "systemConfig" tag on a plugin, the corresponding "systemConfig" TIDDLER will be automatically refreshed (if currently displayed), so that the 'tagged' list in that tiddler will remain up-to-date.
2006.01.04 - 2.0.0 update for ~TW2.0
2005.12.27 - 1.1.2 Fix lookAhead regExp handling for {{{[x=id]}}}, which had been including the "]" in the extracted ID.  
Added check for "chk" prefix on ID before calling saveOptionCookie()
2005.12.26 - 1.1.2 Corrected use of toUpperCase() in tiddler re-write code when comparing {{{[X]}}} in tiddler content with checkbox state. Fixes a problem where simple checkboxes could be set, but never cleared.
2005.12.26 - 1.1.0 Revise syntax so all optional parameters are included INSIDE the [ and ] brackets.  Backward compatibility with older syntax is supported, so content changes are not required when upgrading to the current version of this plugin.   Based on a suggestion by GeoffSlocock
2005.12.25 - 1.0.0 added support for tracking checkbox state using tags ("TogglyTagging")
Revised version number for official post-beta release.
2005.12.08 - 0.9.3 support separate 'init' and 'onclick' function definitions.
2005.12.08 - 0.9.2 clean up lookahead pattern
2005.12.07 - 0.9.1 only update tiddler source content if checkbox state is actually different.  Eliminates unnecessary tiddler changes (and 'unsaved changes' warnings)
2005.12.07 - 0.9.0 initial BETA release
<<<
{{floatleft{[img[Citations|iconesWiki/fiches.ico][Citations]]}}}
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom");
   var initiales=DataTiddler.getData(titre,"initiales");
   var datepublication=DataTiddler.getData(titre,"datepublication");
   var tagname=nom+", "+initiales+" ("+datepublication+") - citations";
   return '<<navigation modified TagsTypesDB '+"Haldane, JBS (1949) - citations"+'>>';
   return "<<navigation modified TagsTypesDB "+tagname+" "+tagname+" "+tagname+">>";
</script>
[img[Citations|iconesWiki/fiches.ico][Citations]]
<<tiddler Concepts>>
/***
|Name:|CloseOnCancelPlugin|
|Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.commands.cancelTiddler,{

	handler_mptw_orig_closeUnsaved: config.commands.cancelTiddler.handler,

	handler: function(event,src,title) {
		this.handler_mptw_orig_closeUnsaved(event,src,title);
		if (!store.tiddlerExists(title) && !store.isShadowTiddler(title))
			story.closeTiddler(title,true);
	 	return false;
	}

});

//}}}


/***
|Name|CollapseTiddlersPlugin|
|Source|http://gensoft.revhost.net/Collapse.html|
|Version|2008.03.06|
|Author|Bradley Meck (modified by ELS)|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|CollapsedTemplate|
|Overrides||
|Description|show/hide content of a tiddler while leaving tiddler title visible|

|ELS 3/6/2008: refactored code for size reduction, readability, and I18N/L10N-readiness.  Also added 'folded' flag to tiddler elements (for use by other plugins that need to know if tiddler is folded (e.g., [[SinglePageModePlugin]]) |
|ELS 10/11/2007: moved [[FoldFirst]] inline script and converted to {{{<<foldFirst>>}}} macro. |
|ELS 9/12/2007: suspend/resume SinglePageMode (SPM/TPM/BPM) when folding/unfolding tiddlers |
|ELS 6/5/2007: add "return false" at the end of each command handler to prevent IE 'page transition' problem. |
|ELS 3/30/2007: add a shadow definition for CollapsedTemplate.  Tweak ViewTemplate shadow so "fold/unfold" and "focus" toolbar items automatically appear when using default templates.  Remove error check for "CollapsedTemplate" existence, since shadow version will now always work as a fallback. |
|ELS 2/24/2006: added fallback to "CollapsedTemplate" if "WebCollapsedTemplate" is not found |
|ELS 2/6/2006: added check for 'readOnly' flag to use alternative "WebCollapsedTemplate" |

***/

//{{{
config.shadowTiddlers.CollapsedTemplate=
	"<!--{{{-->\
	<div class='toolbar' macro='toolbar expandTiddler collapseOthers closeTiddler closeOthers +editTiddler permalink references jump'></div>\
	<div class='title' macro='view title'></div>\
	<!--}}}-->";

// automatically tweak shadow ViewTemplate to add "collapseTiddler collapseOthers" commands
config.shadowTiddlers.ViewTemplate=config.shadowTiddlers.ViewTemplate.replace(/closeTiddler/,"collapseTiddler collapseOthers closeTiddler");

config.commands.collapseTiddler = {
	text: "_",
	tooltip: "Rouler ce tiddler",
	collapsedTemplate: "CollapsedTemplate",
	webCollapsedTemplate: "WebCollapsedTemplate",
	handler: function(event,src,title) {
		var e = story.findContainingTiddler(src); if (!e) return false;
		// don't fold tiddlers that are being edited!
		if(story.isDirty(e.getAttribute("tiddler"))) return false;
		var t=config.commands.collapseTiddler.getCollapsedTemplate();
		config.commands.collapseTiddler.saveTemplate(e);
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","true");
		return false;
	},
	getCollapsedTemplate: function() {
		if (readOnly&&store.tiddlerExists(this.webCollapsedTemplate))
			return this.webCollapsedTemplate;
		else
			return this.collapsedTemplate
	},
	saveTemplate: function(e) {
		if (e.getAttribute("savedTemplate")==undefined)
			e.setAttribute("savedTemplate",e.getAttribute("template"));

	},
	// fold/unfold tiddler with suspend/resume of single/top/bottom-of-page mode
	display: function(title,t) {
		var opt=config.options;
		var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
		var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
		var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
		story.displayTiddler(null,title,t);
		opt.chkBottomOfPageMode=saveBPM;
		opt.chkTopOfPageMode=saveTPM;
		opt.chkSinglePageMode=saveSPM;
	}
}

config.commands.expandTiddler = {
	text: "±",
	tooltip: "Dérouler ce tiddler",
	handler: function(event,src,title) {
		var e = story.findContainingTiddler(src); if (!e) return false;
		var t = e.getAttribute("savedTemplate");
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","false");
		return false;
	}
}

config.macros.collapseAll = {
	text: "rouler tous",
	tooltip: "Rouler tous les tiddlers",
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		createTiddlyButton(place,this.text,this.tooltip,function(){
			story.forEachTiddler(function(title,tiddler){
				if(story.isDirty(title)) return;
				var t=config.commands.collapseTiddler.getCollapsedTemplate();
				config.commands.collapseTiddler.saveTemplate(tiddler);
				config.commands.collapseTiddler.display(title,t);
				tiddler.folded=true;
			})
		})
	}
}

config.macros.expandAll = {
	text: "dérouler tous",
	tooltip: "Dérouler tous les tiddlers",
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		createTiddlyButton(place,this.text,this.tooltip,function(){
			story.forEachTiddler(function(title,tiddler){
				var t=config.commands.collapseTiddler.getCollapsedTemplate();
				if(tiddler.getAttribute("template")!=t) return; // re-display only if collapsed
				var t=tiddler.getAttribute("savedTemplate");
				config.commands.collapseTiddler.display(title,t);
				tiddler.folded=false;
			})
		})
	}
}

config.commands.collapseOthers = {
	text: "¥",
	tooltip: "Expand this tiddler and collapse all others",
	handler: function(event,src,title) {
		var e = story.findContainingTiddler(src); if (!e) return false;
		story.forEachTiddler(function(title,tiddler) {
			if(story.isDirty(title)) return;
			var t=config.commands.collapseTiddler.getCollapsedTemplate();
			if (e==tiddler) t=e.getAttribute("savedTemplate");
			config.commands.collapseTiddler.saveTemplate(tiddler);
			config.commands.collapseTiddler.display(title,t);
			tiddler.folded=(e!=tiddler);
		})
		return false;
	}
}

// {{{<<foldFirst>>}}} macro forces tiddler to be folded when *initially* displayed.
// Subsequent re-render does NOT re-fold tiddler, but closing/re-opening tiddler DOES cause it to fold first again.
config.macros.foldFirst = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		var e=story.findContainingTiddler(place);
		if (e.getAttribute("foldedFirst")=="true") return; // already been folded once
		var title=e.getAttribute("tiddler")
		var t=config.commands.collapseTiddler.getCollapsedTemplate();
		config.commands.collapseTiddler.saveTemplate(e);
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","true");
		e.setAttribute("foldedFirst","true"); // only when tiddler is first rendered
		return false;
	}
}
//}}}
<div class='toolbar' macro='toolbar expandTiddler collapseOthers closeOthers -closeTiddler +editTiddler templateChooser permalink references jump'></div>
<div class='title' macro='view title'></div>
<!--{{{-->
<!--
|Name|CollapsedTemplate|
|Source|http://www.TiddlyTools.com/#CollapsedTemplate|
|Version||
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|template|
|Requires|ToolbarCommands|
|Overrides||
|Description|alternative to ViewTemplate, used by CollapseTiddlersPlugin to display tiddler when 'folded'|
-->
<span class='toolbar' macro='toolbar [[ToolbarCommands::CollapsedToolbar]]'></span>
</span>
<span class='title'>
	<span class='floatleft' macro='tiddlerIcons' style='cursor:auto !important;'></span>
	<span macro='view title'></span>
</span>
<div class='tagClear'></div>
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<<tiddler Concepts>>
{{floatleft{[img[Concepts|IconeConcept][Concepts]]}}}
<<tiddler [[ImageConcepts]]>><<tagCloud =Concepts>>
PageTemplate
|>|>|SiteTitle - SiteSubtitle|
|MainMenu|DefaultTiddlers<br><br><br><br>ViewTemplate<br><br>EditTemplate|SideBarOptions|
|~|~|OptionsPanel|
|~|~|AdvancedOptions|
|~|~|<<tiddler Configuration.SideBarTabs>>|

''StyleSheet:'' StyleSheetColors - StyleSheetLayout - StyleSheetPrint

SiteUrl
On distingue traditionnellement trois types de ''connaissance'':
* [[Connaissance propositionnelle]] (savoir que, //know that//)
* [[Connaissance pratique]] (savoir faire, //know how//)
* ''Connaissance objectuelle'', "connaissance par familiarité" ou par "fréquentation" (//acquaintance//) qui est une connaissance des choses (des personnes, des lieux, etc.), par opposition à une connaissance des vérités ou à une "connaissance par description". Cette distinction est due à ((Bertrand Russell(Russell, B., //Our Knowledge of the External World// (1914), "La méthode scientifique en philosophie", Payot, Paris, 2002))).

Pour beaucoup d'épistémologues, la connaissance implique une [[Croyance]] ou une attitude psychologique analogue (certitude, conviction, acceptation). D'autres pensent que connaissance et croyance sont mutuellement incompatibles ou bien encore indépendants.

La définition classique de la [[Connaissance propositionnelle]] insiste sur la [[Justification]]. Cette justification repose sur la relation entre certaines croyances du sujet pouvant être des connaissances, et d'autres croyances pouvant être considérées comme des raisons de les tenir pour vraies. Face à cette conception internaliste de la connaissance, on peut penser au contraire que les connaissances sont des croyances issues de notre contact direct avec les faits extérieurs, à condition que ce soit par des mécanismes fiables. Il s'agit là d'une ((conception causale(Dretske, F., //Knowledge and the Flow of Information// (1981), MIT Press, MA, Cambridge.))) de la connaissance, qui peut donner lieu à une [[théorie naturalisée de la connaissance|Epistémologie naturalisée]] (//((Naturalised Epistemology(Quine, WVO (1969): "Epistemology Naturalized")))//). On peut aussi prendre en compte l'origine sociale de l'immense majorité de nos connaissances et faire la ((théorie de la transmission de connaissances(Goldman, A., //Knowledge in a Social World//, Oxford University Press, Oxford, 1999))) par le témoignage d'autrui. Dans tous les cas, il s'agit de déterminer dans quelles conditions une croyance peut être tenue pour vraie (sans que ce soit par hasard ou par coïncidence).

!Connaissance propositionnelle[[→|Connaissance propositionnelle]]
<<tiddler [[Connaissance propositionnelle]]>>

!Trilème d'Agrippa
Pour justifier une connaissance, il faut s'appuyer sur des croyances qui doivent elles-mêmes être justifiées. Cela conduit à trois solutions possibles:
* ''Fondationnalisme'': certaines connaissances de base n'ont pas à être justifiées, et elles peuvent de ce fait servir de fondement aux autres. Il peut s'agir de connaissances empiriques servant d'appui à toutes les autres (à l'image d'une pyramide) ou de connaissances rationnelles comme chez Descartes (à l'image d'un arbre).
* ''Régression à l'infini'': A défaut de connaissances de base non-justifiables, on peut entrer dans une régression à l'infini des justifications.
* ''Cercle vicieux'': Pour éviter la régression, il faudrait que certaines croyances se justifient mutuellement. Cette solution est le cohérentisme, défendu notamment par Keith Lehrer.
Les connaissances propositionnelles sont construites sous la forme: "Je sais que //p//", où //p// est la chose connue. L'"analyse standard" de la connaissance propositionnelle est une définition tripartite composée de trois conditions nécessaires et conjointement suffisantes:
*Croyance
*Justification
*Vérité
Autrement dit, la connaissance propositionnelle est une croyance vraie justifiée. Cette définition remonte peut-être à Platon. Edmund Gettier en a formulé deux contre-exemples en 1963.
<<tiddler Concepts>>


Contacts:
[[JoeBlock]]
<html>
<style>
.rolodex table {
border: 0px solid;
background-color:#FFFF99;
}

.rolodex tr, .rolodex td {
border: 0px solid;
}
</style>
<span class="rolodex">
 <table>
 <tr>
 <td align="right"><b>Firstname:</b></td>
 <td colspan="3"><input name=firstname type=text style="width:100%" /></td></tr>
 <tr>
 <td align="right"><b>Lastname:</b></td>
 <td colspan="3"><input name=lastname type=text style="width:100%" /></td></tr>
 <tr>
 <td align="right"><b>Email:</b></td>
 <td colspan="3"><input name=email type=text style="width:100%" /></td></tr>
 <tr>
 <td align="right"><b>Phone:</b></td>
 <td colspan="3"><input name=phone type=text style="width:100%" /></td></tr>
 <tr>
 <td align="right" valign="top"><b>Address:</b></td>
 <td colspan="3"><textarea name=address rows="2" cols="40" style="width:100%" ></textarea></td></tr>
 <tr>
 <td align="right"><b>City:</b></td>
 <td colspan="3"><input name=city type=text style="width:100%" /></td></tr>
 <tr>
 <td align="right"><b>State/Province:</b></td>
 <td><input name=state type=text size="5" /></td>
 <td align="right"><b style="width:100%" >ZIP/Postal Code:</b></td>
 <td><input name=zip type=text size="5" style="width:100%" /></td></tr>
 <tr>
 <td align="right"><b>Country:</b></td>
 <td colspan="3"><input name=country type=text style="width:100%" /></td></tr>
 <tr>
 <td align="right"><b>Webpage:</b></td>
 <td colspan="3"><input name=webpage type=text style="width:100%" /></td></tr>
 <tr>
 <td colspan="4"><sub><b>Notes</b></sub><br>
 <textarea name=notes rows="4" cols="40" style="width:100%" ></textarea></td></tr>
</span>
</html>

Voir: http://www.profil-couleur.com/
<<tiddler HideTiddlerTags>>
/%RGB hexadecimal 216-color "Web safe" palette %/
Source: Paul Petterson, revised by Eric Shulman
{{menubox{
|bgcolor(#FFF):FFF |bgcolor(#CCC):CCC |bgcolor(#999):999 |bgcolor(#666):@@color(white):666@@ |bgcolor(#333):@@color(white):333@@ |bgcolor(#000):@@color(white):000@@ |bgcolor(#FC0):~FC0 |bgcolor(#F90):F90 |bgcolor(#F60):@@color(white):F60@@ |bgcolor(#F30):@@color(white):F30@@ |>|>|>|>|>| |
|bgcolor(#9C0):9C0 |>|>|>| |bgcolor(#C90):C90 |bgcolor(#FC3):~FC3 |bgcolor(#FC6):~FC6 |bgcolor(#F96):F96 |bgcolor(#F63):@@color(white):F63@@ |bgcolor(#C30):@@color(white):C30@@ |>|>|>| |bgcolor(#C03):@@color(white):C03@@ |
|bgcolor(#CF0):~CF0 |bgcolor(#CF3):~CF3 |bgcolor(#330):@@color(white):330@@ |bgcolor(#660):@@color(white):660@@ |bgcolor(#990):990 |bgcolor(#CC0):~CC0 |bgcolor(#FF0):~FF0 |bgcolor(#C93):C93 |bgcolor(#C63):@@color(white):C63@@ |bgcolor(#300):@@color(white):300@@ |bgcolor(#600):@@color(white):600@@ |bgcolor(#900):@@color(white):900@@ |bgcolor(#C00):@@color(white):C00@@ |bgcolor(#F00):@@color(white):F00@@ |bgcolor(#F36):@@color(white):F36@@ |bgcolor(#F03):@@color(white):F03@@ |
|bgcolor(#9F0):9F0 |bgcolor(#CF6):~CF6 |bgcolor(#9C3):9C3 |bgcolor(#663):@@color(white):663@@ |bgcolor(#993):993 |bgcolor(#CC3):~CC3 |bgcolor(#FF3):~FF3 |bgcolor(#960):@@color(white):960@@ |bgcolor(#930):@@color(white):930@@ |bgcolor(#633):@@color(white):633@@ |bgcolor(#933):@@color(white):933@@ |bgcolor(#C33):@@color(white):C33@@ |bgcolor(#F33):@@color(white):F33@@ |bgcolor(#C36):@@color(white):C36@@ |bgcolor(#F69):@@color(white):F69@@ |bgcolor(#F06):@@color(white):F06@@ |
|bgcolor(#6F0):6F0 |bgcolor(#9F6):9F6 |bgcolor(#6C3):6C3 |bgcolor(#690):690 |bgcolor(#996):996 |bgcolor(#CC6):~CC6 |bgcolor(#FF6):~FF6 |bgcolor(#963):@@color(white):963@@ |bgcolor(#630):@@color(white):630@@ |bgcolor(#966):@@color(white):966@@ |bgcolor(#C66):@@color(white):C66@@ |bgcolor(#F66):@@color(white):F66@@ |bgcolor(#903):@@color(white):903@@ |bgcolor(#C39):@@color(white):C39@@ |bgcolor(#F6C):@@color(white):~F6C@@ |bgcolor(#F09):@@color(white):F09@@ |
|bgcolor(#3F0):3F0 |bgcolor(#6F3):6F3 |bgcolor(#390):390 |bgcolor(#6C0):6C0 |bgcolor(#9F3):9F3 |bgcolor(#CC9):~CC9 |bgcolor(#FF9):~FF9 |bgcolor(#C96):C96 |bgcolor(#C60):@@color(white):C60@@ |bgcolor(#C99):C99 |bgcolor(#F99):F99 |bgcolor(#F39):@@color(white):F39@@ |bgcolor(#C06):@@color(white):C06@@ |bgcolor(#906):@@color(white):906@@ |bgcolor(#F3C):@@color(white):~F3C@@ |bgcolor(#F0C):@@color(white):~F0C@@ |
|bgcolor(#0C0):0C0 |bgcolor(#3C0):3C0 |bgcolor(#360):@@color(white):360@@ |bgcolor(#693):693 |bgcolor(#9C6):9C6 |bgcolor(#CF9):~CF9 |bgcolor(#FFC):FFC |bgcolor(#FC9):~FC9 |bgcolor(#F93):F93 |bgcolor(#FCC):FCC |bgcolor(#F9C):~F9C |bgcolor(#C69):@@color(white):C69@@ |bgcolor(#936):@@color(white):936@@ |bgcolor(#603):@@color(white):603@@ |bgcolor(#C09):@@color(white):C09@@ |bgcolor(#303):@@color(white):303@@ |
|bgcolor(#3C3):3C3 |bgcolor(#6C6):6C6 |bgcolor(#0F0):0F0 |bgcolor(#3F3):3F3 |bgcolor(#6F6):6F6 |bgcolor(#9F9):9F9 |bgcolor(#CFC):CFC |>|>| |bgcolor(#C9C):~C9C |bgcolor(#969):@@color(white):969@@ |bgcolor(#939):@@color(white):939@@ |bgcolor(#909):@@color(white):909@@ |bgcolor(#636):@@color(white):636@@ |bgcolor(#606):@@color(white):606@@ |
|bgcolor(#060):@@color(white):060@@ |bgcolor(#363):@@color(white):363@@ |bgcolor(#090):090 |bgcolor(#393):393 |bgcolor(#696):696 |bgcolor(#9C9):9C9 |>|>| |bgcolor(#FCF):FCF |bgcolor(#F9F):~F9F |bgcolor(#F6F):@@color(white):~F6F@@ |bgcolor(#F3F):@@color(white):~F3F@@ |bgcolor(#F0F):@@color(white):~F0F@@ |bgcolor(#C6C):@@color(white):~C6C@@ |bgcolor(#C3C):@@color(white):~C3C@@ |
|bgcolor(#030):@@color(white):030@@ |bgcolor(#0C3):0C3 |bgcolor(#063):@@color(white):063@@ |bgcolor(#396):396 |bgcolor(#6C9):6C9 |bgcolor(#9FC):9FC |bgcolor(#CFF):CFF |bgcolor(#39F):39F |bgcolor(#9CF):9CF |bgcolor(#CCF):CCF |bgcolor(#C9F):~C9F |bgcolor(#96C):@@color(white):96C@@ |bgcolor(#639):@@color(white):639@@ |bgcolor(#306):@@color(white):306@@ |bgcolor(#90C):@@color(white):90C@@ |bgcolor(#C0C):@@color(white):~C0C@@ |
|bgcolor(#0F3):0F3 |bgcolor(#3F6):3F6 |bgcolor(#093):093 |bgcolor(#0C6):0C6 |bgcolor(#3F9):3F9 |bgcolor(#9FF):9FF |bgcolor(#9CC):9CC |bgcolor(#06C):@@color(white):06C@@ |bgcolor(#69C):69C |bgcolor(#99F):99F |bgcolor(#99C):99C |bgcolor(#93F):@@color(white):93F@@ |bgcolor(#60C):@@color(white):60C@@ |bgcolor(#609):@@color(white):609@@ |bgcolor(#C3F):@@color(white):~C3F@@ |bgcolor(#C0F):@@color(white):~C0F@@ |
|bgcolor(#0F6):0F6 |bgcolor(#6F9):6F9 |bgcolor(#3C6):3C6 |bgcolor(#096):096 |bgcolor(#6FF):6FF |bgcolor(#6CC):6CC |bgcolor(#699):699 |bgcolor(#036):@@color(white):036@@ |bgcolor(#369):@@color(white):369@@ |bgcolor(#66F):@@color(white):66F@@ |bgcolor(#66C):@@color(white):66C@@ |bgcolor(#669):@@color(white):669@@ |bgcolor(#309):@@color(white):309@@ |bgcolor(#93C):@@color(white):93C@@ |bgcolor(#C6F):@@color(white):~C6F@@ |bgcolor(#90F):@@color(white):90F@@ |
|bgcolor(#0F9):0F9 |bgcolor(#6FC):6FC |bgcolor(#3C9):3C9 |bgcolor(#3FF):3FF |bgcolor(#3CC):3CC |bgcolor(#399):399 |bgcolor(#366):@@color(white):366@@ |bgcolor(#069):@@color(white):069@@ |bgcolor(#039):@@color(white):039@@ |bgcolor(#33F):@@color(white):33F@@ |bgcolor(#33C):@@color(white):33C@@ |bgcolor(#339):@@color(white):339@@ |bgcolor(#336):@@color(white):336@@ |bgcolor(#63C):@@color(white):63C@@ |bgcolor(#96F):@@color(white):96F@@ |bgcolor(#60F):@@color(white):60F@@ |
|bgcolor(#0FC):0FC |bgcolor(#3FC):3FC |bgcolor(#0FF):0FF |bgcolor(#0CC):0CC |bgcolor(#099):099 |bgcolor(#066):@@color(white):066@@ |bgcolor(#033):@@color(white):033@@ |bgcolor(#39C):39C |bgcolor(#36C):@@color(white):36C@@ |bgcolor(#00F):@@color(white):00F@@ |bgcolor(#00C):@@color(white):00C@@ |bgcolor(#009):@@color(white):009@@ |bgcolor(#006):@@color(white):006@@ |bgcolor(#003):@@color(white):003@@ |bgcolor(#63F):@@color(white):63F@@ |bgcolor(#30F):@@color(white):30F@@ |
|bgcolor(#0C9):0C9 |>|>|>| |bgcolor(#09C):09C |bgcolor(#3CF):3CF |bgcolor(#6CF):6CF |bgcolor(#69F):69F |bgcolor(#36F):@@color(white):36F@@ |bgcolor(#03C):@@color(white):03C@@ |>|>|>| |bgcolor(#30C):@@color(white):30C@@ |
|>|>|>|>|>| |bgcolor(#0CF):0CF |bgcolor(#09F):09F |bgcolor(#06F):@@color(white):06F@@ |bgcolor(#03F):@@color(white):03F@@ |>|>|>|>|>| |
<script>place.lastChild.style.width="95%"</script>}}}

Les ''doctrines créationnistes'' invoquent un principe intelligent, en général divin, à l'origine de la vie et du monde. On peut en distinguer au moins trois formes:

* ''Créationnistes traditionnels:'' ils croient que le récit de la genèse est littéralement vrai.{{floatright{[img(120px,auto)[Créationnisme "Terre jeune"|./imagesWiki/jesus_dinosaure.jpg]]}}}
* ''Créationnistes "évolutifs":'' ils admettent que le monde est vieux de plusieurs millions d'années et admettent une certaine évolution, mais se distinguent des [[darwinistes|Darwinisme]] car ils considèrent que Dieu est intervenu dans le processus évolutif pour créer des espèces. Ils refusent par exemple le cousinage du moustique et de la baleine.
* ''[[Dessein intelligent|IntelligentDesign]]:'' reconnaissent le scénario darwinnien, mais considèrent que pour expliquer cette évolution on ne peut pas recourir uniquement à la SélectionNaturelle, mais qu'il faut recourir à un principe intelligent.

Quel est le critère de [[Scientificité]]? Tous les débats autour du créationnisme sont aussi des débats autour de la scientificité.
<<tiddler Auteur>>

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Cummins","prénom":"Robert","initiales":"R"}</data>
{{floatleft{[img(120px,auto)[Arthur Danto|./imagesWiki/ArthurDanto.jpg]]}}}
''Arthur Coleman Danto'' (1924 - ) est un philosophe et critique d'art étasunien.

!Publications
<<forEachTiddler
	where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Danto","prénom":"Arthur","initiales":"A"}</data>

<<tiddler Article>>Dans cet article, les auteurs montrent comment l'objectivité scientifique se moralise vers la fin du ~XIXe siècle à partir d'une conception mécanique de la connaissance, c'est-à-dire une conception dans laquelle l'homme devait s'effacer pour laisser la place à une reproduction mécanique des images, jugée moins subjective au sens où elle n'implique supposément aucune interprétation de ce qui est reproduit.

L'épistémologie du ~XVIIe siècle aspirait au point de vue des anges; au ~XIXe siècle, l'objectivité aspire à l'auto-discipline des saints. Cet idéal d'objectivité cherche à éliminer la présence de l'observateur.

Au ~XVIIIe siècle, pour être fidèles à la nature (//truth to nature//), les savants n'hésitaient pas à interpréter les images, c'est-à-dire à montrer l'essence des choses. Au ~XIXe siècle, cette interprétation est devenue suspecte de subjectivité. Pour l'éliminer, on poursuit une objectivité mécanique.

+++![Fidélité à la Nature (Truth to nature)]
Les faiseurs d'atlas scientifiques du ~XVIIIe siècle présentaient des objets représentatifs des objets naturels. Il s'agissait d'images standardisées et d'une certaine manière idéalisées faites pour entraîner l'oeil à voir les objets réels. Il fallait pour cela éliminer les idiosyncrasies de l'objet et du sujet. Il fallait donc procéder à un choix d'images parmi la trop grande variété des objets naturels. Il fallait "fabriquer" des objets de travail. L'objet standard fabriqué par la science a donc une valeur normative, et pas seulement descriptive.

C'est ce problème du choix, et donc de l'interprétation de la nature, qui a provoqué la crise de confiance ayant aboutit à la conception mécanique. Car les scientifiques se rendent compte du caractère problématique de leurs jugements sur la typicalité des spécimens représentés.
===
+++![Objectivité et reproduction mécanique]
Entre la fin du ~XIXe et le début du ~XXe siècle, avec l'apparition de techniques de reproduction mécanique comme la photographie, celles-ci deviennent l'idéal de la reproduction scientifique, car elles permettent - croit-on - d'éliminer la médiation de l'observateur entre l'objet et son image. La machine présentait l'avantage de ne pas interpréter la réalité et donc de ne pas introduire de biais subjectif dans sa représentation.

Quand la photographie est, quant à la précision ou à la fidélité de la représentation, inférieure au dessin, on préfère quand même la photo. On va jusqu'à faire des imperfections des photos le signe de leur objectivité. On renonce à la perfection, à l’idéal, au nom de l’objectivité. Ne pas interférer, laisser parler les choses par elles mêmes. “Accuracy had to be sacrificed on the altar of objectivity.” (114) On préfère l'autenticité à la similarité.

Au XXe siècle, on commence à se rendre compte que les techniques photomécaniques n’ont fait que déplacer le problème de la subjectivité, au lieu de l’éliminer.
===
+++![L'objectivité moralisée]
C'est la non-intervention humaine, pas la vérisimilitude, qui était au coeur de l'objectivité mécanique. Mais cette non-intervention est chargé de connotations morales dans le cadre d'une religion séculaire de la connaissance dont les scientifiques seraient les prêtres et leur refus d'interpréter la nature une forme d'abnégation ascétique. Elle requiert auto-discipline et purification.

L'objectivité mécanique s'est confondue avec les autres acceptions de l'objectivité. L'acception métaphysique, qui l'identifie à la vérité. Et l'acception "//aperspectival//" qui correspond au fait d'échapper à toute perspective.
===

<<tiddler RéférenceArticle>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere>>
----
<data>{"titrearticle":"The Image of Objectivity","datepublication":"1992","journal":"Representations","volumejournal":"40","numérojournal":"special issue","pagesarticle":"81-128","nom":"Daston","prénom":"et al.","initiales":"et al.","pagescitation":"95"}</data>
{{floatleft{[img(120px,auto)[Lorraine Daston|./imagesWiki/LorraineDaston.jpeg][http://www.mpiwg-berlin.mpg.de/en/index.html]]}}}

!Publications
<<forEachTiddler where
'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Daston","prénom":"Lorraine","initiales":"L"}</data>
</data>
<data>
/***
|''Name:''|DataTiddlerPlugin|
|''Version:''|1.0.6 (2006-08-26)|
|''Source:''|http://tiddlywiki.abego-software.de/#DataTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
!Description
Enhance your tiddlers with structured data (such as strings, booleans, numbers, or even arrays and compound objects) that can be easily accessed and modified through named fields (in JavaScript code).

Such tiddler data can be used in various applications. E.g. you may create tables that collect data from various tiddlers. 

''//Example: "Table with all December Expenses"//''
{{{
<<forEachTiddler
    where
        'tiddler.tags.contains("expense") && tiddler.data("month") == "Dec"'
    write
        '"|[["+tiddler.title+"]]|"+tiddler.data("descr")+"| "+tiddler.data("amount")+"|\n"'
>>
}}}
//(This assumes that expenses are stored in tiddlers tagged with "expense".)//
<<forEachTiddler
    where
        'tiddler.tags.contains("expense") && tiddler.data("month") == "Dec"'
    write
        '"|[["+tiddler.title+"]]|"+tiddler.data("descr")+"| "+tiddler.data("amount")+"|\n"'
>>
For other examples see DataTiddlerExamples.




''Access and Modify Tiddler Data''

You can "attach" data to every tiddler by assigning a JavaScript value (such as a string, boolean, number, or even arrays and compound objects) to named fields. 

These values can be accessed and modified through the following Tiddler methods:
|!Method|!Example|!Description|
|{{{data(field)}}}|{{{t.data("age")}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined {{{undefined}}} is returned.|
|{{{data(field,defaultValue)}}}|{{{t.data("isVIP",false)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined the defaultValue is returned.|
|{{{data()}}}|{{{t.data()}}}|Returns the data object of the tiddler, with a property for every field. The properties of the returned data object may only be read and not be modified. To modify the data use DataTiddler.setData(...) or the corresponding Tiddler method.|
|{{{setData(field,value)}}}|{{{t.setData("age",42)}}}|Sets the value of the given data field of the tiddler to the value. When the value is {{{undefined}}} the field is removed.|
|{{{setData(field,value,defaultValue)}}}|{{{t.setData("isVIP",flag,false)}}}|Sets the value of the given data field of the tiddler to the value. When the value is equal to the defaultValue no value is set (and the field is removed).|

Alternatively you may use the following functions to access and modify the data. In this case the tiddler argument is either a tiddler or the name of a tiddler.
|!Method|!Description|
|{{{DataTiddler.getData(tiddler,field)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined {{{undefined}}} is returned.|
|{{{DataTiddler.getData(tiddler,field,defaultValue)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined the defaultValue is returned.|
|{{{DataTiddler.getDataObject(tiddler)}}}|Returns the data object of the tiddler, with a property for every field. The properties of the returned data object may only be read and not be modified. To modify the data use DataTiddler.setData(...) or the corresponding Tiddler method.|
|{{{DataTiddler.setData(tiddler,field,value)}}}|Sets the value of the given data field of the tiddler to the value. When the value is {{{undefined}}} the field is removed.|
|{{{DataTiddler.setData(tiddler,field,value,defaultValue)}}}|Sets the value of the given data field of the tiddler to the value. When the value is equal to the defaultValue no value is set (and the field is removed).|
//(For details on the various functions see the detailed comments in the source code.)//


''Data Representation in a Tiddler''

The data of a tiddler is stored as plain text in the tiddler's content/text, inside a "data" section that is framed by a {{{<data>...</data>}}} block. Inside the data section the information is stored in the [[JSON format|http://www.crockford.com/JSON/index.html]]. 

//''Data Section Example:''//
{{{
<data>{"isVIP":true,"user":"John Brown","age":34}</data>
}}}

The data section is not displayed when viewing the tiddler (see also "The showData Macro").

Beside the data section a tiddler may have all kind of other content.

Typically you will not access the data section text directly but use the methods given above. Nevertheless you may retrieve the text of the data section's content through the {{{DataTiddler.getDataText(tiddler)}}} function.


''Saving Changes''

The "setData" methods respect the "ForceMinorUpdate" and "AutoSave" configuration values. I.e. when "ForceMinorUpdate" is true changing a value using setData will not affect the "modifier" and "modified" attributes. With "AutoSave" set to true every setData will directly save the changes after a setData.


''Notifications''

No notifications are sent when a tiddler's data value is changed through the "setData" methods. 

''Escape Data Section''
In case that you want to use the text {{{<data>}}} or {{{</data>}}} in a tiddler text you must prefix the text with a tilde ('~'). Otherwise it may be wrongly considered as the data section. The tiddler text {{{~<data>}}} is displayed as {{{<data>}}}.


''The showData Macro''

By default the data of a tiddler (that is stored in the {{{<data>...</data>}}} section of the tiddler) is not displayed. If you want to display this data you may used the {{{<<showData ...>>}}} macro:

''Syntax:'' 
|>|{{{<<}}}''showData '' [''JSON''] [//tiddlerName//] {{{>>}}}|
|''JSON''|By default the data is rendered as a table with a "Name" and "Value" column. When defining ''JSON'' the data is rendered in JSON format|
|//tiddlerName//|Defines the tiddler holding the data to be displayed. When no tiddler is given the tiddler containing the showData macro is used. When the tiddler name contains spaces you must quote the name (or use the {{{[[...]]}}} syntax.)|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|


!Revision history
* v1.0.6 (2006-08-26) 
** Removed misleading comment
* v1.0.5 (2006-02-27) (Internal Release Only)
** Internal
*** Make "JSLint" conform
* v1.0.4 (2006-02-05)
** Bugfix: showData fails in TiddlyWiki 2.0
* v1.0.3 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.2 (2005-12-22)
** Enhancements:
*** Handle texts "<data>" or "</data>" more robust when used in a tiddler text or as a field value.
*** Improved (JSON) error messages.
** Bugs fixed: 
*** References are not updated when using the DataTiddler.
*** Changes to compound objects are not always saved.
*** "~</data>" is not rendered correctly (expected "</data>")
* v1.0.1 (2005-12-13)
** Features: 
*** The showData macro supports an optional "tiddlername" argument to specify the tiddler containing the data to be displayed
** Bugs fixed: 
*** A script immediately following a data section is deleted when the data is changed. (Thanks to GeoffS for reporting.)
* v1.0.0 (2005-12-12)
** initial version

!Code
***/
//{{{
//============================================================================
//============================================================================
//                           DataTiddlerPlugin
//============================================================================
//============================================================================

// Ensure that the DataTiddler Plugin is only installed once.
//
if (!version.extensions.DataTiddlerPlugin) {



version.extensions.DataTiddlerPlugin = {
    major: 1, minor: 0, revision: 6,
    date: new Date(2006, 7, 26), 
    type: 'plugin',
    source: "http://tiddlywiki.abego-software.de/#DataTiddlerPlugin"
};

// For backward compatibility with v1.2.x
//
if (!window.story) window.story=window; 
if (!TiddlyWiki.prototype.getTiddler) {
	TiddlyWiki.prototype.getTiddler = function(title) { 
		var t = this.tiddlers[title]; 
		return (t !== undefined && t instanceof Tiddler) ? t : null; 
	};
}

//============================================================================
// DataTiddler Class
//============================================================================

// ---------------------------------------------------------------------------
// Configurations and constants 
// ---------------------------------------------------------------------------

function DataTiddler() {
}

DataTiddler = {
    // Function to stringify a JavaScript value, producing the text for the data section content.
    // (Must match the implementation of DataTiddler.parse.)
    //
    stringify : null,
    

    // Function to parse the text for the data section content, producing a JavaScript value.
    // (Must match the implementation of DataTiddler.stringify.)
    //
    parse : null
};

// Ensure access for IE
window.DataTiddler = DataTiddler;

// ---------------------------------------------------------------------------
// Data Accessor and Mutator
// ---------------------------------------------------------------------------


// Returns the value of the given data field of the tiddler.
// When no such field is defined or its value is undefined
// the defaultValue is returned.
// 
// @param tiddler either a tiddler name or a tiddler
//
DataTiddler.getData = function(tiddler, field, defaultValue) {
    var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;
    if (!(t instanceof Tiddler)) {
        throw "Tiddler expected. Got "+tiddler;
    }

    return DataTiddler.getTiddlerDataValue(t, field, defaultValue);
};


// Sets the value of the given data field of the tiddler to
// the value. When the value is equal to the defaultValue
// no value is set (and the field is removed)
//
// Changing data of a tiddler will not trigger notifications.
// 
// @param tiddler either a tiddler name or a tiddler
//
DataTiddler.setData = function(tiddler, field, value, defaultValue) {
    var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;
    if (!(t instanceof Tiddler)) {
        throw "Tiddler expected. Got "+tiddler+ "("+t+")";
    }

    DataTiddler.setTiddlerDataValue(t, field, value, defaultValue);
};


// Returns the data object of the tiddler, with a property for every field.
//
// The properties of the returned data object may only be read and
// not be modified. To modify the data use DataTiddler.setData(...) 
// or the corresponding Tiddler method.
//
// If no data section is defined a new (empty) object is returned.
//
// @param tiddler either a tiddler name or a Tiddler
//
DataTiddler.getDataObject = function(tiddler) {
    var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;
    if (!(t instanceof Tiddler)) {
        throw "Tiddler expected. Got "+tiddler;
    }

    return DataTiddler.getTiddlerDataObject(t);
};

// Returns the text of the content of the data section of the tiddler.
//
// When no data section is defined for the tiddler null is returned 
//
// @param tiddler either a tiddler name or a Tiddler
// @return [may be null]
//
DataTiddler.getDataText = function(tiddler) {
    var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;
    if (!(t instanceof Tiddler)) {
        throw "Tiddler expected. Got "+tiddler;
    }

    return DataTiddler.readDataSectionText(t);
};


// ---------------------------------------------------------------------------
// Internal helper methods (must not be used by code from outside this plugin)
// ---------------------------------------------------------------------------

// Internal.
//
// The original JSONError is not very user friendly, 
// especially it does not define a toString() method
// Therefore we extend it here.
//
DataTiddler.extendJSONError = function(ex) {
	if (ex.name == 'JSONError') {
        ex.toString = function() {
			return ex.name + ": "+ex.message+" ("+ex.text+")";
		};
	}
	return ex;
};

// Internal.
//
// @param t a Tiddler
//
DataTiddler.getTiddlerDataObject = function(t) {
    if (t.dataObject === undefined) {
        var data = DataTiddler.readData(t);
        t.dataObject = (data) ? data : {};
    }
    
    return t.dataObject;
};


// Internal.
//
// @param tiddler a Tiddler
//
DataTiddler.getTiddlerDataValue = function(tiddler, field, defaultValue) {
    var value = DataTiddler.getTiddlerDataObject(tiddler)[field];
    return (value === undefined) ? defaultValue : value;
};


// Internal.
//
// @param tiddler a Tiddler
//
DataTiddler.setTiddlerDataValue = function(tiddler, field, value, defaultValue) {
    var data = DataTiddler.getTiddlerDataObject(tiddler);
    var oldValue = data[field];
	
    if (value == defaultValue) {
        if (oldValue !== undefined) {
            delete data[field];
            DataTiddler.save(tiddler);
        }
        return;
    }
    data[field] = value;
    DataTiddler.save(tiddler);
};

// Internal.
//
// Reads the data section from the tiddler's content and returns its text
// (as a String).
//
// Returns null when no data is defined.
//
// @param tiddler a Tiddler
// @return [may be null]
//
DataTiddler.readDataSectionText = function(tiddler) {
    var matches = DataTiddler.getDataTiddlerMatches(tiddler);
    if (matches === null || !matches[2]) {
        return null;
    }
    return matches[2];
};

// Internal.
//
// Reads the data section from the tiddler's content and returns it
// (as an internalized object).
//
// Returns null when no data is defined.
//
// @param tiddler a Tiddler
// @return [may be null]
//
DataTiddler.readData = function(tiddler) {
    var text = DataTiddler.readDataSectionText(tiddler);
	try {
	    return text ? DataTiddler.parse(text) : null;
	} catch(ex) {
		throw DataTiddler.extendJSONError(ex);
	}
};

// Internal.
// 
// Returns the serialized text of the data of the given tiddler, as it
// should be stored in the data section.
//
// @param tiddler a Tiddler
//
DataTiddler.getDataTextOfTiddler = function(tiddler) {
    var data = DataTiddler.getTiddlerDataObject(tiddler);
    return DataTiddler.stringify(data);
};


// Internal.
// 
DataTiddler.indexOfNonEscapedText = function(s, subString, startIndex) {
	var index = s.indexOf(subString, startIndex);
	while ((index > 0) && (s[index-1] == '~')) { 
		index = s.indexOf(subString, index+1);
	}
	return index;
};

// Internal.
//
DataTiddler.getDataSectionInfo = function(text) {
	// Special care must be taken to handle "<data>" and "</data>" texts inside
	// a data section. 
	// Also take care not to use an escaped <data> (i.e. "~<data>") as the start 
	// of a data section. (Same for </data>)

    // NOTE: we are explicitly searching for a data section that contains a JSON
    // string, i.e. framed with braces. This way we are little bit more robust in
    // case the tiddler contains unescaped texts "<data>" or "</data>". This must
    // be changed when using a different stringifier.

	var startTagText = "<data>{";
	var endTagText = "}</data>";

	var startPos = 0;

	// Find the first not escaped "<data>".
	var startDataTagIndex = DataTiddler.indexOfNonEscapedText(text, startTagText, 0);
	if (startDataTagIndex < 0) {
		return null;
	}

	// Find the *last* not escaped "</data>".
	var endDataTagIndex = text.indexOf(endTagText, startDataTagIndex);
	if (endDataTagIndex < 0) {
		return null;
	}
	var nextEndDataTagIndex;
	while ((nextEndDataTagIndex = text.indexOf(endTagText, endDataTagIndex+1)) >= 0) {
		endDataTagIndex = nextEndDataTagIndex;
	}

	return {
		prefixEnd: startDataTagIndex, 
		dataStart: startDataTagIndex+(startTagText.length)-1, 
		dataEnd: endDataTagIndex, 
		suffixStart: endDataTagIndex+(endTagText.length)
	};
};

// Internal.
// 
// Returns the "matches" of a content of a DataTiddler on the
// "data" regular expression. Return null when no data is defined
// in the tiddler content.
//
// Group 1: text before data section (prefix)
// Group 2: content of data section
// Group 3: text behind data section (suffix)
//
// @param tiddler a Tiddler
// @return [may be null] null when the tiddler contains no data section, otherwise see above.
//
DataTiddler.getDataTiddlerMatches = function(tiddler) {
	var text = tiddler.text;
	var info = DataTiddler.getDataSectionInfo(text);
	if (!info) {
		return null;
	}

	var prefix = text.substr(0,info.prefixEnd);
	var data = text.substr(info.dataStart, info.dataEnd-info.dataStart+1);
	var suffix = text.substr(info.suffixStart);
	
	return [text, prefix, data, suffix];
};


// Internal.
//
// Saves the data in a <data> block of the given tiddler (as a minor change). 
//
// The "chkAutoSave" and "chkForceMinorUpdate" options are respected. 
// I.e. the TiddlyWiki *file* is only saved when AutoSave is on.
//
// Notifications are not send. 
//
// This method should only be called when the data really has changed. 
//
// @param tiddler
//             the tiddler to be saved.
//
DataTiddler.save = function(tiddler) {

    var matches = DataTiddler.getDataTiddlerMatches(tiddler);

    var prefix;
    var suffix;
    if (matches === null) {
        prefix = tiddler.text;
        suffix = "";
    } else {
        prefix = matches[1];
        suffix = matches[3];
    }

    var dataText = DataTiddler.getDataTextOfTiddler(tiddler);
    var newText = 
            (dataText !== null) 
                ? prefix + "<data>" + dataText + "</data>" + suffix
                : prefix + suffix;
    if (newText != tiddler.text) {
        // make the change in the tiddlers text
        
        // ... see DataTiddler.MyTiddlerChangedFunction
        tiddler.isDataTiddlerChange = true;
        
        // ... do the action change
        tiddler.set(
                tiddler.title,
                newText,
                config.options.txtUserName, 
                config.options.chkForceMinorUpdate? undefined : new Date(),
                tiddler.tags);

        // ... see DataTiddler.MyTiddlerChangedFunction
        delete tiddler.isDataTiddlerChange;

        // Mark the store as dirty.
        store.dirty = true;
 
        // AutoSave if option is selected
        if(config.options.chkAutoSave) {
           saveChanges();
        }
    }
};

// Internal.
//
DataTiddler.MyTiddlerChangedFunction = function() {
    // Remove the data object from the tiddler when the tiddler is changed
    // by code other than DataTiddler code. 
    //
    // This is necessary since the data object is just a "cached version" 
    // of the data defined in the data section of the tiddler and the 
    // "external" change may have changed the content of the data section.
    // Thus we are not sure if the data object reflects the data section 
    // contents. 
    // 
    // By deleting the data object we ensure that the data object is 
    // reconstructed the next time it is needed, with the data defined by
    // the data section in the tiddler's text.
    
    // To indicate that a change is a "DataTiddler change" a temporary
    // property "isDataTiddlerChange" is added to the tiddler.
    if (this.dataObject && !this.isDataTiddlerChange) {
        delete this.dataObject;
    }
    
    // call the original code.
	DataTiddler.originalTiddlerChangedFunction.apply(this, arguments);
};


//============================================================================
// Formatters
//============================================================================

// This formatter ensures that "~<data>" is rendered as "<data>". This is used to 
// escape the "<data>" of a data section, just in case someone really wants to use
// "<data>" as a text in a tiddler and not start a data section.
//
// Same for </data>.
//
config.formatters.push( {
    name: "data-escape",
    match: "~<\\/?data>",

    handler: function(w) {
            w.outputText(w.output,w.matchStart + 1,w.nextMatch);
    }
} );


// This formatter ensures that <data>...</data> sections are not rendered.
//
config.formatters.push( {
    name: "data",
    match: "<data>",

    handler: function(w) {
		var info = DataTiddler.getDataSectionInfo(w.source);
		if (info && info.prefixEnd == w.matchStart) {
            w.nextMatch = info.suffixStart;
		} else {
			w.outputText(w.output,w.matchStart,w.nextMatch);
		}
    }
} );


//============================================================================
// Tiddler Class Extension
//============================================================================

// "Hijack" the changed method ---------------------------------------------------

DataTiddler.originalTiddlerChangedFunction = Tiddler.prototype.changed;
Tiddler.prototype.changed = DataTiddler.MyTiddlerChangedFunction;

// Define accessor methods -------------------------------------------------------

// Returns the value of the given data field of the tiddler. When no such field 
// is defined or its value is undefined the defaultValue is returned.
//
// When field is undefined (or null) the data object is returned. (See 
// DataTiddler.getDataObject.)
//
// @param field [may be null, undefined]
// @param defaultValue [may be null, undefined]
// @return [may be null, undefined]
//
Tiddler.prototype.data = function(field, defaultValue) {
    return (field) 
         ? DataTiddler.getTiddlerDataValue(this, field, defaultValue)
         : DataTiddler.getTiddlerDataObject(this);
};

// Sets the value of the given data field of the tiddler to the value. When the 
// value is equal to the defaultValue no value is set (and the field is removed).
//
// @param value [may be null, undefined]
// @param defaultValue [may be null, undefined]
//
Tiddler.prototype.setData = function(field, value, defaultValue) {
    DataTiddler.setTiddlerDataValue(this, field, value, defaultValue);
};


//============================================================================
// showData Macro
//============================================================================

config.macros.showData = {
     // Standard Properties
     label: "showData",
     prompt: "Display the values stored in the data section of the tiddler"
};

config.macros.showData.handler = function(place,macroName,params) {
    // --- Parsing ------------------------------------------

    var i = 0; // index running over the params
    // Parse the optional "JSON"
    var showInJSONFormat = false;
    if ((i < params.length) && params[i] == "JSON") {
        i++;
        showInJSONFormat = true;
    }
    
    var tiddlerName = story.findContainingTiddler(place).id.substr(7);
    if (i < params.length) {
        tiddlerName = params[i];
        i++;
    }

    // --- Processing ------------------------------------------
    try {
        if (showInJSONFormat) {
            this.renderDataInJSONFormat(place, tiddlerName);
        } else {
            this.renderDataAsTable(place, tiddlerName);
        }
    } catch (e) {
        this.createErrorElement(place, e);
    }
};

config.macros.showData.renderDataInJSONFormat = function(place,tiddlerName) {
    var text = DataTiddler.getDataText(tiddlerName);
    if (text) {
        createTiddlyElement(place,"pre",null,null,text);
    }
};

config.macros.showData.renderDataAsTable = function(place,tiddlerName) {
    var text = "|!Name|!Value|\n";
    var data = DataTiddler.getDataObject(tiddlerName);
    if (data) {
        for (var i in data) {
            var value = data[i];
            text += "|"+i+"|"+DataTiddler.stringify(value)+"|\n";
        }
    }
    
    wikify(text, place);
};


// Internal.
//
// Creates an element that holds an error message
// 
config.macros.showData.createErrorElement = function(place, exception) {
    var message = (exception.description) ? exception.description : exception.toString();
    return createTiddlyElement(place,"span",null,"showDataError","<<showData ...>>: "+message);
};

// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
    ".showDataError{color: #ffffff;background-color: #880000;}",
    "showData");


} // of "install only once"
// Used Globals (for JSLint) ==============

// ... TiddlyWiki Core
/*global 	createTiddlyElement, saveChanges, store, story, wikify */
// ... DataTiddler
/*global 	DataTiddler */
// ... JSON
/*global 	JSON */
			

/***
!JSON Code, used to serialize the data
***/
/*
Copyright (c) 2005 JSON.org

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The Software shall be used for Good, not Evil.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/

/*
    The global object JSON contains two methods.

    JSON.stringify(value) takes a JavaScript value and produces a JSON text.
    The value must not be cyclical.

    JSON.parse(text) takes a JSON text and produces a JavaScript value. It will
    throw a 'JSONError' exception if there is an error.
*/
var JSON = {
    copyright: '(c)2005 JSON.org',
    license: 'http://www.crockford.com/JSON/license.html',
/*
    Stringify a JavaScript value, producing a JSON text.
*/
    stringify: function (v) {
        var a = [];

/*
    Emit a string.
*/
        function e(s) {
            a[a.length] = s;
        }

/*
    Convert a value.
*/
        function g(x) {
            var c, i, l, v;

            switch (typeof x) {
            case 'object':
                if (x) {
                    if (x instanceof Array) {
                        e('[');
                        l = a.length;
                        for (i = 0; i < x.length; i += 1) {
                            v = x[i];
                            if (typeof v != 'undefined' &&
                                    typeof v != 'function') {
                                if (l < a.length) {
                                    e(',');
                                }
                                g(v);
                            }
                        }
                        e(']');
                        return;
                    } else if (typeof x.toString != 'undefined') {
                        e('{');
                        l = a.length;
                        for (i in x) {
                            v = x[i];
                            if (x.hasOwnProperty(i) &&
                                    typeof v != 'undefined' &&
                                    typeof v != 'function') {
                                if (l < a.length) {
                                    e(',');
                                }
                                g(i);
                                e(':');
                                g(v);
                            }
                        }
                        return e('}');
                    }
                }
                e('null');
                return;
            case 'number':
                e(isFinite(x) ? +x : 'null');
                return;
            case 'string':
                l = x.length;
                e('"');
                for (i = 0; i < l; i += 1) {
                    c = x.charAt(i);
                    if (c >= ' ') {
                        if (c == '\\' || c == '"') {
                            e('\\');
                        }
                        e(c);
                    } else {
                        switch (c) {
                            case '\b':
                                e('\\b');
                                break;
                            case '\f':
                                e('\\f');
                                break;
                            case '\n':
                                e('\\n');
                                break;
                            case '\r':
                                e('\\r');
                                break;
                            case '\t':
                                e('\\t');
                                break;
                            default:
                                c = c.charCodeAt();
                                e('\\u00' + Math.floor(c / 16).toString(16) +
                                    (c % 16).toString(16));
                        }
                    }
                }
                e('"');
                return;
            case 'boolean':
                e(String(x));
                return;
            default:
                e('null');
                return;
            }
        }
        g(v);
        return a.join('');
    },
/*
    Parse a JSON text, producing a JavaScript value.
*/
    parse: function (text) {
        var p = /^\s*(([,:{}\[\]])|"(\\.|[^\x00-\x1f"\\])*"|-?\d+(\.\d*)?([eE][+-]?\d+)?|true|false|null)\s*/,
            token,
            operator;

        function error(m, t) {
            throw {
                name: 'JSONError',
                message: m,
                text: t || operator || token
            };
        }

        function next(b) {
            if (b && b != operator) {
                error("Expected '" + b + "'");
            }
            if (text) {
                var t = p.exec(text);
                if (t) {
                    if (t[2]) {
                        token = null;
                        operator = t[2];
                    } else {
                        operator = null;
                        try {
                            token = eval(t[1]);
                        } catch (e) {
                            error("Bad token", t[1]);
                        }
                    }
                    text = text.substring(t[0].length);
                } else {
                    error("Unrecognized token", text);
                }
            } else {
                token = operator = undefined;
            }
        }


        function val() {
            var k, o;
            switch (operator) {
            case '{':
                next('{');
                o = {};
                if (operator != '}') {
                    for (;;) {
                        if (operator || typeof token != 'string') {
                            error("Missing key");
                        }
                        k = token;
                        next();
                        next(':');
                        o[k] = val();
                        if (operator != ',') {
                            break;
                        }
                        next(',');
                    }
                }
                next('}');
                return o;
            case '[':
                next('[');
                o = [];
                if (operator != ']') {
                    for (;;) {
                        o.push(val());
                        if (operator != ',') {
                            break;
                        }
                        next(',');
                    }
                }
                next(']');
                return o;
            default:
                if (operator !== null) {
                    error("Missing value");
                }
                k = token;
                next();
                return k;
            }
        }
        next();
        return val();
    }
};

/***
!Setup the data serialization
***/

DataTiddler.format = "JSON";
DataTiddler.stringify = JSON.stringify;
DataTiddler.parse = JSON.parse;

//}}}

<<tiddler HideTiddlerTags>><<datadb>><data>{"db":[["Bitbol","Michel","L'aveuglante proximité du réel","1999","Flammarion","x","x"],["Monod","Jacques","Le hasard et la nécessité","1970","[[Seuil]]","x","x"],["Taylor","Charles","Les sources du moi","1989","Seuil","x","x"]],"schema":[["nom","","","y"],["prénom","","","y"],["titrelivre","","","y"],["datepublication","","","y"],["noméditeur","","","y"],["collection","","",""],["test","","",""]],"view":"schema","zq":""}</data>
! <part Titre> 1. Tracing Links of Causation [[→|Davies (2001) - Ch.1]] </part>


<part Résumé> Dans ce chapitre introductif, l'auteur présente ses idées principales:
* Le naturalisme et la normativité biologique sont incompatibles.
* Les fonctions sont des [[propriétés|Propriété]] des systèmes hiérarchiquement organisés, mais ne se limitent pas aux systèmes biologiques.
* Les fonctions des artefacts ne servent pas de modèle aux fonctions biologiques, et vice-versa.
* Sa proposition est révisionniste (elle rejette la téléologie) mais pas éliminativiste (elle n'est pas relative aux intérêts épistémiques). +++[Citation]
|<<tiddler [[Davies 2001:8-9/explanatoryInterests]]>>|
===

* Il rejette toute idée de finalité (contre Aristote): les fins naturelles n'existent pas.
* L'apparence de finalité (purposiveness) peut s'expliquer par des processus strictement mécaniques.
</part>
<<tiddler AutoRefresh on>>
! <part Titre>  2. Approaching the Norms of Nature [[>|Davies (2001) - Ch.2]] </part>


<part Résumé> Présentation des approches [[historique|ApprocheEtiologique]], [[systémique|ApprocheSystémique]], et [[combinée|ApprocheMixte]]. </part>
! <part Titre>  3. Discarding Selected Functions [[>|Davies (2001) - Ch.3]] </part>


<part Résumé> Il n'y a qu'une seule vraie théorie des fonctions, la théorie [[systémique|ApprocheSystémique]]. </part>
! <part Titre>  4. Defeating Promiscuity: Hierarchical Systems and Systemic Functions [[>|Davies (2001) - Ch.4]] </part>


<part Résumé> Répondant aux critiques formulées à l'encontre de [[Cummins|Cummins, Robert]] selon lesquelles sa définition attribue des fonctions à tout et n'importe quoi (par exemple des nuages), il propose de limiter l'attribution fonctionnelle aux systèmes hiérarchiquement organisés. </part>
<<tiddler AutoRefresh on>>
!! <part Titre>  5. Naturalizing Functions: Evidence, Methodology, and Ontology [[>|Davies (2001) - Ch.5]] </part>


<part Résumé> L'approche historique échoue dans sa tentative de [[naturalisation|Naturalisme]] des fonctions.
* Une théorie n'est naturaliste que si elle ouverte à un test empirique ou théorique. (p. 107)
* Une théorie des fonctions peut être testée à deux niveaux:
** au niveau des attributions fonctionnelles
** au niveau de l'ontologie et de la méthodologie de la théorie elle-même, notamment vis-à-vis de sa conformité aux théories bien admises.
</part>
<part Contenu>
+++!!![5.1 Confirming the Attribution of Selected Functions]
* Les preuves historiques étant rares, les attributions fonctionnelles reposent souvent sur des spéculations.
* Les preuves historiques sont innécessaires, puisque des découvertes biologiques importantes se sont faites sans connaître l'histoire. Exple de [[Nagel|Nagel, Ernest]]: [[Harvey]] et la fonction du coeur. 
** Discussion de la réponse de [[Millikan|Millikan, Ruth Garrett]] sur ce point: insatisfaisante.
** Discussion de la réponse de [[Neander (1991)|Neander, K (1991): "Functions as Selected Effects"]].
*** Dialectique entre les concepts et les définitions théoriques.
* Il est difficile d'identifier les traits organiques causalement responsables de la sélection, même dans des populations actuelles. ([[p. 119|Davies 2001:119]])
===
+++!!![5.2 Confirmation and the Causes of Selection]
''Problème des niveaux de sélection:'' Quand un organisme évolue par sélection, quelles propriétés de l'organisme sont causalement responsables de son succès sélectif (génotypiques, phénotypiques, les deux à la fois, ou autre chose)? On ne sait pas toujours à quoi attribuer la fonction. Ce problème a été soulevé par [[Brandon|Brandon, RN]].
===
+++!!![5.3 Confirming the Theory of Selected Functions]
Problèmes méthodologiques de la théorie.
===
+++!!![5.4 Confirmation and the Ontology of Selected Functions]
L'ontologie de la théorie est inacceptable d'un point de vue naturaliste. ([[Davies 2001:137]])+++[...]
* Minimalisme: un trait possède la fonction F quand il descend de tokens sélectionnés en vertu de F. Les propriétés physiques ne comptent pas, ce qui compte c'est une relation historique. ([[Millikan 1989|Millikan (1989): "In defense of proper function")([[p.137|Davies 2001:137]])
** Selon Davies, cette posture est intenable du point de vue naturaliste, car on ne voit pas quel processus naturel pourrait imposer ou déterminer la fonction d'un trait au cours de l'évolution. +++[citation]
|<<tiddler [[Davies 2001:139/causalDetermination]]>>|
===

** Pire encore, on ne voit pas par quel mécanisme un trait pourrait acquérir une norme, de telle manière qu'un trait physiquement incapable d'accomplir sa fonction soit considéré dysfonctionnel ([[Malfonction]]).
** Si on opte pour la thèse selon laquelle la fonction d'un trait est liée au succès sélectif //__et__// à ses capacités physiques présentes, alors on obtient des fonctions qui sont des propriétés abstraites et non-causales, ce qui les rend difficilement compatibles avec la méthode et les postulations des sciences de la nature. ([[Davies 2001:142]])
*** La théorie darwinienne ne requière pas ce type de norme, et est même contraire à son esprit (réintroduction d'une téléologie).
*** Les nombres et les ensembles sont également des propriétés abstraites et non-causales dont la science ne peut pas se passer, mais dans le cas des fonctions il y a une alternative (systémique) à ce type de fonctions.
===

+++[Commentaires]
> @@color:blue;<<tiddler [[Davies (2001) - Ch.5 - Note Ontologie/commentaire]]>>@@
===
===
+++!!![5.5 Complexity]
La raison pour laquelle les systèmes biologiques semblent être orientés vers une fin, c'est leur grande complexité. Hypothèse psychologique: plus les systèmes hiérarchiques sont complexes (=interdépendants), plus nous sommes enclins à leur attribuer une fonction. Les systèmes hiérarchiques complexes ont deux caractéristiques notables :
* La stabilité dans le temps
* L'autoperpétuation
|<<tiddler [[Davies 2001:153/stableSelfPerpetuatingSystems]]>>|
|<<tiddler [[Davies 2001:154/properFunctionIsIllusion]]>>|
+++[commentaire]
>@@color:blue;<<tiddler [[Davies 2001:154/properFunctionIsIllusion - Notes/commentaire]]>>@@
===

Différence entre Davies et [[Nagel, E. (1977)]]. Selon Davies, [[goal-directedness|GoalDirectedness]] n'est pas une condition nécessaire pour l'attribution correcte des fonctions épistémiques. La hiérarchie est nécessaire, mais pas la complexité interne; il peut donc y avoir des fonctions systémiques en l'absence de [[goal-directedness|GoalDirectedness]]. D'un autre point de vue, les fonctions systémiques sont relatives à une //capacité// du système, mais toutes les capacités ne sont pas des buts (//goals//) au sens de Nagel. (p.155)
===

</part>
> <<tiddler [[Davies (2001) - Ch.05/ontologySelectedFunctions]]>>

<<tiddler Note>><<tiddler Idées>>
<part commentaire> Toute cette discussion autour de l'ontologie des '//selected functions//' se fait contre une posture de type [[Millikan|Millikan, Ruth Garrett]]. Mais je doute que la critique reste valable quand on s'en tient à une analyse conceptuelle du langage des biologistes. Dans ce cas, on ne parle plus d'une entité, mais d'un concept, et on pourrait montrer que les biologistes utilisent un concept qui, effectivement, renvoie à une ontologie à propos de laquelle on peut être sceptique.

C'est-à-dire que [[Davies|Davies, Paul Sheldon]] porte une critique (justifiée de mon point de vue) à l'encontre de l'idée que les fonctions //existent// en tant que propriétés dans le monde. Sa critique est nommément dirigée contre [[Millikan|Millikan, Ruth Garrett]], mais il en tire une conclusion générale qui est le rejet de la conception étiologique. Cependant, il va peut-être trop vite en besogne. Si on se limite à faire de l'analyse conceptuelle, on pourrait dire que, bien que les fonctions n'existent pas au sens habituel, leur usage conceptuel n'en est pas moins légitime. Après tout, on peut également douter de l'existence des atomes et des particules.

Il me semble que derrière la position de Davies il y a le modèle épistémologique de la physique. </part>
<<tiddler AutoRefresh on>>
<<tiddler Notes>>
! <part Titre>  6. Guiding Inquiry: The Theoretical Roles of Systemic Functions [[>|Davies (2001) - Ch.6]] </part>


<part Résumé> ''Decomposition, localisation.'' Les fonctions systémiques jouent d'abord un rôle comme guide de la recherche dans une démarche analytique: pour expliquer une capacité du système, on postule des mécanismes physiques (//bottom-up//) qu'il faut ensuite vérifier empiriquement. L'approche de Davies se veut naturaliste à deux niveaux, celui des attributions fonctionnelles, et celui de la théorie elle-même. +++[citation]
|<<tiddler [[Davies 2001:158/naturalisme]]>>|
===


''Connectionism:'' Le modèle connexionniste limite fortement la possibilité de décomposition et localisation, mais l'auteur n'est pas d'accord sur le fait que ce modèle empêche l'attribution de fonctions.

[[Malfunctions|Malfonction]]'':'' L'apparente normativité des fonctions est un effet psychologique lié à nos expectatives. +++[citation]
|<<tiddler [[Davies 2001:149/malfunctionExpectations]]>>|
===
</part>


<part Contenu>
!! 6.1 The Inquiry- Guiding Role of Systemic Functions
L'auteur ne cherche pas à expliquer l'usage que les biologistes font du concept de fonction, mais à expliquer le fonctionnement des systèmes complexes et le rôle du concept de fonction dans ce travail. En premier lieu, il ne s'agit pas d'expliquer, mais d'orienter dans la recherche. Attribuer une fonction, c'est d'abord postuler des mécanismes causals sous-jacents qu'il faudra ensuite confirmer. C'est une démarche analytique (comme voir les aiguilles d'une montre et postuler les rouages responsables de leur mouvement, pour ensuite aller vérifier empiriquement). Exemples de Gall (phrénologie) et de Watson (ADN). 
|<<tiddler [[Davies 2001:164/decomposition]]>>|
|<<tiddler [[Davies 2001:166-167/naturalisticMethods]]>>|
+++[commentaires]
<<<
[[Fonctions: Pourquoi en Biologie et pas en Physique?]]
<<tiddler [[Fonctions: Pourquoi en Biologie et pas en Physique?]]>>
<<<
===

!! 6.2 The Limits of Decomposition and Localization
Selon Bechtel & Richardson, certains systèmes sont si intégrés, leurs composants si interdépendants, qu'il devient impossible de décomposer la capacité globale du système en capacités de niveau inférieur attribuables à ses composants. Donc, selon eux, l'attribution de fonctions ne serait plus possible. Exemple des réseaux neuronnaux. Le modèle connexionniste limite fortement la possibilité de décomposition et localisation, mais l'auteur n'est pas d'accord sur le fait que ce modèle empêche l'attribution de fonctions.

!! 6.3 Systemic Malfunctions and Expectations
La pratique classificatoire qu'implique la théorie des fonctions produit en nous des expectatives quand aux types de systèmes et aux tokens de ces types. Ce sont ces expectatives qui expliquent notre tendance à dire que certains tokens [[malfonctionnent|Malfonction]].
</part>

<<tiddler AutoRefresh on>>

! <part Titre>  7. Defining Functional Types: Success and Malfunctions [[>|Davies (2001) - Ch.7]] </part>


<part Résumé> Les approches historique et combinée sont incapables de rendre compte de la possibilité des dysfonctions alors que c'est pour elles une caractéristique centrale. Elles doivent être rejetées. </part>
! <part Titre> Préface [[>|Davies (2001) - Preface]] </part>


<part Résumé> L'auteur se positionne clairement contre l'interprétation des fonctions en termes de sélection naturelle (approche historique). Par ailleurs, il affirme que les fonctions sont des propriétés. +++[citations]
|<<tiddler [[Davies 2001:xiii/functionalProperties]]>>|
|<<tiddler [[Davies 2001:xiii/historyNotEssential]]>>|
|<<tiddler [[Davies 2001:xiii/naturalSelection]]>>|
=== </part>


<<tiddler AutoRefresh on>>
<<tiddler AutoRefresh on>><<tiddler Note>>
<<tiddler Citation>>
!causalDetermination
<part causalDetermination> "What natural features of the causal-mechanical processes that constitute a selective history have the power to determine that descendent tokens are for the performance of some task?" ([[Davies 2001:139]]) </part>
|<<tiddler [[Davies 2001:139/causalDetermination]]>>|
<<tiddler Idées>>En fait, cette remarque me semble d'autant plus pertinente que c'est bien ce que je me suis demandé à propos de l'[[explication de la vie|VieMinimale]] depuis la perspective [[évolutionniste|ApprocheEvolutionniste]]. C'est-à-dire que si la vie dépend d'une évolution darwinienne, alors combien de générations faut-il attendre? Et attendre quoi?
* Attendre que l'évolution (donc la vie) __se manifeste__:
** elle exisistait peut-être déjà, mais on ne le savait pas; il y a une différence entre le moment où l'évolution (la vie) commence, et le moment où nous pouvons le vérifier; mais y a-t-il vraiment un moment déterminé où les choses commencent?
*** oui, sauf qu'il peut être plus ou moins flou, et plus ou moins facile à cerner; tout dépend de ce qu'on appelle un 'moment': une seconde précise, une heure, un jour, un an, un millénaire, etc., ?
*** non, mais on peut adopter une ontologie [[gradualiste|GraduaLisme]]
** à partir du moment où nous pouvons dire qu'il y a évolution, nous pouvons dire qu'il y a vie; mais cela ne veut pas dire qu'une propriété nouvelle soit apparue; c'est plutôt un mode de description qui devient disponible, une catégorie qui devient applicable; ici on se place dans une perspective épistémique: la vie n'existe pas idépendamment de nos capacités et catégories cognitives
* Attendre que la vie apparaisse
** Si la vie est identifiée à l'évolution, alors la remarque de Davies s'applique pareillement

<<tiddler Citation>>
!malfunctionExpectations
<part malfunctionExpectations> "On my view, natural traits cannot malfunction; they can disappoint our expectations, but they cannot malfunction." ([[p.149|Davies 2001:149]])
</part>
<<tiddler Citation>>
!stableSelfPerpetuatingSystems
<part stableSelfPerpetuatingSystems> "My suggestion, then, is that certain of our psychological capacities and limitations incline us to conceptualize the capacities of stable, self-perpetuating systems as especially functional." ([[p.153|Davies 2001:153]]) </part><data>{"isLivre":true}</data>
<<tiddler Citation>>
!properFunctionIsIllusion
<part properFunctionIsIllusion> "The intuition that some traits are "properly" functional is illusory, but the intuition that some are especially important within the system's internal economy is both real and true." ([[Davies 2001:154]]) </part>
|bgcolor:#F7D8A0;vertical-align:middle; ''<<tiddler [[Davies 2001:154/properFunctionIsIllusion]]>>''|

<<tiddler Idées>><part commentaire> En quel sens, ou depuis quel point de vue certains traits sont-ils plus 'importants' que d'autres? N'est-ce pas de //notre// point de vue? Et selon quels critères? N'y a-t-il pas là derrière une espèce de jugement de valeur caché? D'un point de vue strictement physique, il n'y a pas des choses plus 'importantes' que d'autres. Par contre, du point de vue d'un ingénieur, oui. Mais si Davies veut faire des fonctions systémiques quelque chose qui n'est pas relatif à nos intérêts épistémiques, ou pas seulement, alors je ne vois pas en quel sens il peut dire que l'intuition de l'importance de certains traits est à la fois réelle et vraie. </part>
<<tiddler Citation>>
!naturalisme
<part naturalisme> "Specific attributions are naturalistic because the theory requires evidence for physical mechanisms that instantiate the attributed functions. The theory as a whole is naturalistic because it is an integral part of inquiry into hierarchical systems and because the ontology of the theory is thoroughly naturalistic." ([[Davies 2001:158]]) </part>
<<tiddler Citation>>
!decomposition
<part decomposition> "[Decomposition and localization] The ultimate goal of this top-down strategy is discovery of physical mechanisms internal to the system responsible for the functional capacities listed in our taxonomy." ([[Davies 2001:164]]) </part>
<<tiddler Citation>>
!naturalisticMethods
<part naturalisticMethods> "[...] naturalism, as I construe it, is a commitment not to a specific ontology but rather to the methods of inquiry employed by our best natural sciences." ([[Davies 2001:166-167]]) </part>
<<tiddler Citation>>
!nonphysicalNorms
<part nonphysicalNorms> "the historical approach, in attempting to account for the possibility of malfunctions, commits itself to the existence of quite specific norms of performance that are noncausal and nonphysical in nature." ([[Davies 2001:5]]) </part>


!définition
<part définition> "[...] functions are nothing more than systemic capacities that contribute to the exercise of higher-level capacities we wish to understand and control." ([[Davies 2001:5]]) </part>
<<tiddler Citation>>
!explanatoryInterests
<part explanatoryInterests> "Our explanatory interests may be important in the discovery of systemic functions, but our interests are neither necessary nor sufficient for the existence of such functions." ([[Davies 2001:8-9]]) </part>
<<tiddler Citation>>
!functionalProperties
<part functionalProperties> "I shall argue that, while most natural traits indeed have functional properties, those properties are not constituted by the selective success of ancestral tokens. Natural selection, I believe, is inessential to the __existence of functions__." ([[Davies 2001:xiii]]; //c'est moi qui souligne//) </part>

!historyNotEssential
<part historyNotEssential> "Functions are essentially systemic; history is not essential." ([[Davies 2001:xiii]]) </part>

!naturalSelection
<part naturalSelection> "@@color:brown;Functions are contributions to systemic capacities and, while selection can preserve or eliminate those functions, selection is not their source.@@" ([[Davies 2001:xiii]]) </part>
{{floatleft{[img(120px,auto)[./imagesWiki/Davies-NormsOfNature.jpg][http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=4220]]}}}
++++![Résumé]

''Approche Systémique:'' L'auteur propose de définir les [[fonctions biologiques|Fonction]] à partir de l'[[approche systémique|ApprocheSystémique]] de [[Cummins|Cummins, Robert]], __contre__ les [[approches historiques ou étiologiques|ApprocheEtiologique]].

''Naturalisme:'' Au nom d'un [[naturalisme|Naturalisme]] strict, il s'oppose à toute conception [[normativiste|Normativité]] et/ou [[téléologique|Téléologie]] des fonctions biologiques.

''Révisionnisme:'' Sa proposition est +++^[révisionniste]
Car il ne cherche pas à rendre compte de l'usage courant du concept et remet en question les intuitions.
===
, mais pas +++^[éliminativiste]
Qui ne fait pas la différence entre une fonction et une disposition, d'où une élimination de fait du concept, réduit à une façon de parler.
===
(comme celle de [[Cummins|Cummins, Robert]]```C'est du moins ce que lui reprochent certains, dont Enç et aussi [[Bigelow & Pargetter]]```).

L'auteur propose une version alternative de l'[[approche systémique|ApprocheSystémique]] de [[Cummins|Cummins, Robert]] en y ajoutant +++[quatre thèses:]>
#''Généralité:'' L'approche systémique est plus générale et subsume l'approche historique. (voir [[chp 3|Davies (2001) - Ch.3]])
#''Restriction:'' L'approche systémique doit être limitée aux systèmes hiérarchiquement organisés. (voir [[chp 4|Davies (2001) - Ch.4]]) +++[notes]
>@@color:blue;Davies veut limiter son approche systémique aux systèmes qui sont hiérarchiquement organisés. Comme si en effet la fonctionnalité était un phénomène explicable par les sciences de la nature. De cette manière, il ignore volontairement le caractère fonctionnel d'artefacts aussi simples qu'une chaise. De fait, il refuse de considérer que les artefacts et les systèmes biologiques soient explicables dans les mêmes termes. Il considère que les fonctions sont des propriétés de systèmes complexes (pas nécessairement biologiques).@@
===

#''Révisionnisme:'' L'intuition selon laquelle il faut distinguer fonctionel/accidentel et dysfonctionnel/non-fonctionnel est erronée, mais on peut en expliquer la source. (voir [[chp 5|Davies (2001) - Ch.5]], [[6|Davies (2001) - Ch.6]], et [[7|Davies (2001) - Ch.7]])
#''Naturalisme:'' L'approche systémique est supérieure du point de vue du [[naturalisme|Naturalisme]]. +++[»]
|En effet, <<tiddler [[Davies 2001:5/nonphysicalNorms]]>>|
|Ailleurs: <<tiddler [[Davies 2001:139/causalDetermination]]>>|
>@@color:blue;Davies discute de l'existence de normes naturelles et de leur caractère causal et physique. Il semble aussi concevoir les fonctions comme des propriétés indépendantes qui seraient fixées par la Nature elle-même, en vertu de certains mécanismes causals. Cela en fait un adversaire tout désigné pour moi, et un point de départ pour la question du naturalisme en biologie.@@
>>@@color:blue;Montrer que la question pertinente à propos des normes n'est peut-être pas leur existence ni leur caractère physique. Ce serait plutôt une question de langage. Si on adopte un certain type de langage, alors on peut parler de normes. Si on adopte un langage mécaniste, alors on ne peut pas parler de normes, mais seulement de causes physiques.@@
===
 (voir [[chp 5|Davies (2001) - Ch.5]] et [[6|Davies (2001) - Ch.6]])
===


|DÉFINITION: <<tiddler [[Davies 2001:5/définition]]>>|

===

+++![Chapitres]
!! <<tiddler [[Davies (2001) - Preface/Titre]]>>
<<tiddler [[Davies (2001) - Preface/Résumé]]>>
!! <<tiddler [[Davies (2001) - Ch.1/Titre]]>>
<<tiddler [[Davies (2001) - Ch.1/Résumé]]>>
!! <<tiddler [[Davies (2001) - Ch.2/Titre]]>>
<<tiddler [[Davies (2001) - Ch.2/Résumé]]>>
!! <<tiddler [[Davies (2001) - Ch.3/Titre]]>>
<<tiddler [[Davies (2001) - Ch.3/Résumé]]>>
!! <<tiddler [[Davies (2001) - Ch.4/Titre]]>>
<<tiddler [[Davies (2001) - Ch.4/Résumé]]>>
<<tiddler [[Davies (2001) - Ch.5]]>>
!! <<tiddler [[Davies (2001) - Ch.6/Titre]]>>
<<tiddler [[Davies (2001) - Ch.6/Résumé]]>>
!! <<tiddler [[Davies (2001) - Ch.7/Titre]]>>
<<tiddler [[Davies (2001) - Ch.7/Résumé]]>>
<<newChapterHere>>
===

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var titrelivre=DataTiddler.getData(titre,"titrelivre")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var villeédition=DataTiddler.getData(titre,"villeédition")
   var noméditeur=DataTiddler.getData(titre,"noméditeur")
   var dateédition=DataTiddler.getData(titre,"dateédition")
   return "|bgcolor(#ffff99): ''Référence:'' "+nom+", "+initiales+" ("+datepublication+"): //"+titrelivre+"// "+villeédition+": "+noméditeur+", "+dateédition+"|";
</script>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var pagescitation=DataTiddler.getData(titre,"pagescitation")
   return nom+", "+initiales+" "+datepublication+":"+pagescitation;
</script>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere label:"nouvelle note">><<newChapterHere>>
----
<data>{"nom":"Davies","prénom":"Paul Sheldon","initiales":"PS","titrelivre":"Norms of Nature","datepublication":"2001","villeédition":"Cambridge, MA","noméditeur":"Bradford Books","dateédition":"2001","isLivre":true}</data>
{{floatleft{[img(120px,auto)[Paul Sheldon Davies, page perso|./imagesWiki/DaviesPS.jpg][http://web.wm.edu/philosophy/directory.php?personid=14847]]}}}

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Davies","prénom":"Paul Sheldon","initiales":"PS","titrelivre":"Hiroshima","datepublication":"1277","villeédition":"Paris"}</data>

<<tiddler AutoRefresh on>>{{floatleft{[img[http://ecx.images-amazon.com/images/I/41FVJ2T25YL._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU08_AA240_SH20_.jpg][http://www.amazon.fr/gp/reader/0199291152/ref=sib_dp_pt/171-9052646-6496247#reader-link]]}}}
++++![Résumé]
[[Dawkins|Dawkins, Richard]] cherche à montrer que l'unité de sélection de l'évolution darwinienne est le gène. Il définit la vie sur la base de réplicateurs. Il introduit pour la première fois la notion de "mème", qui est l'équivalent du gène dans le domaine culturel.
Contient en avant propos une justification intéressante du langage anthropomorphique qu'il utilise.
===

+++![Chapitres]
<<newChapterHere>>
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
etc.
===

<<tiddler RéférenceLivre>>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere label:"nouvelle note">><<newChapterHere>>
----
<data>{"nom":"Dawkins","prénom":"Richard","initiales":"R","titrelivre":"The Selfish Gene","datepublication":"1976","villeédition":"Oxford","noméditeur":"Oxford University Press","dateédition":"2006 (2° éd.)"}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!vieDéfinitionUniverselle
<part vieDéfinitionUniverselle> "The laws of physics are supposed to be true all over the accessible universe. ''Are there any principles of biology that are likely to have similar universal validity?'' When astronauts voyage to distant planets and look for life, they can expect to find cratures too strange and unearthly for us to imagine. But is there anything that must be true of all life, whereever it is found, and whatever the basis of its chemistry? If forms of life exist exist whose chemistry is based on silicon rather than carbon, or ammonia rather than water, if creatures are discovered that boil to death at -- 100 degrees centigrade, if a form of life is found that is not based on chemistry at all but on electronic reverberating circuits, will there still be any general principle that is true of all life? Obviously I do not know but, if I had to bet, I would put my money on ''one fundamental principle. This is the law that all life evolves by the differential survival of replicating entities.'' The gene, the DNA molecule, happens to be the @@color:red;''replicating entity''@@ that prevails on our own planet. There may be others. If there are, provided certain other conditions are met, they will almost inevitably tend to become the basis for an evolutionary process." ([[Dawkins, R 1976:191-2]]) </part>

<data>{"nom":"Dawkins","prénom":"Richard","initiales":"R","titrelivre":"The Selfish Gene","datepublication":"1976","numérochapitre":"undefined","titrechapitre":"undefined","numéropage":"191-2"}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!intuitionPremièrePersonne
<part intuitionPremièrePersonne> "Jacques Monod [...] sais approximatively that, when trying to think through a chemical problem, he would ask himself what he would do if he were an electron. Peter Atkins, in his wonderful book Creation Revisisted, uses a similar personification when considering the refraction of a light beam, passing into a medium of higher refractive index which slows it down. [...] Personification of this kind is not just a quaint didactic device. It can also help a professional scientist to get the right answer, in the face of tricky temptations to error. Such is the case with Darwinian calculations of altruism and selfishness, cooperation and spite. It is very easy to get the wrong answer. Personifying genes, if done with due care and caution, often turns out to be the shortest route to rescuing a Darwinian theorist drowning in muddle." ([[Dawkins, R 1976:x-xi]]) </part>

<data>{"nom":"Dawkins","prénom":"Richard","initiales":"R","titrelivre":"The Selfish Gene","datepublication":"1976","numérochapitre":"undefined","titrechapitre":"introduction","numéropage":"x-xi"}</data>
{{floatleft{[img(120px,auto)[Richard Dawkins|./imagesWiki/dawkins.jpg][http://fr.wikipedia.org/wiki/Richard_Dawkins]]}}}
!Publications
<<forEachTiddler where
'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Dawkins","prénom":"Richard","initiales":"R"}</data>
WikiPhilo
<<tiddler HideTiddlerTags>>
<html><div align="center"> <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/kt24h_Ia2UA&hl=fr&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/kt24h_Ia2UA&hl=fr&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></div></html>

{{floatleft{[img(150px,auto)[Gilles Deleuze, wikipedia|imagesWiki/deleuze.jpg][http://fr.wikipedia.org/wiki/Gilles_Deleuze]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Deleuze","prénom":"Gilles","initiales":"G"}</data>
En sciences sociales, on parle beaucoup de //croyance//. Or, l'attribution de croyances en dehors de l'humain pose problème. Dans certains cas, elle semble être sous l'emprise de la subjectivité, infectée de relativisme culturel, etc. Dans d'autres cas, l'attribution de croyances paraît évidente et parfaitement objective. Dans de tels cas, il semble plausible de supposer que, en principe, il devrait être possible de confirmer ces attributions objectives en "trouvant quelque chose dans la tête de celui à qui on attribue une croyance".

"Soit tu crois qu'il y a du lait dans le frigo, soit tu ne crois pas qu'il y en a". L'état du cerveau, dans un cas et dans l'autre, ne sera pas le même; de sorte que l'on pourrait vérifier, en observant l'état du cerveau, si la personne possède ou non la croyance qu'on lui attribue.
!![[1. What kinds of minds are there?|Dennett (1996) - ch.01]]
Quels sont les types d'esprit qui existent? Et comment le savons nous? La première question est ontologique, la seconde est épistémologique. Les deux questions sont liées, car ce qui distingue les esprits des autres choses de l'univers tient précisément à la manière dont nous les connaissons. Nous savons que nous avons un esprit, et nous savons que nous avons un cerveau, mais il s'agit de connaissances d'un genre différent+++[...]
+++!!![We mind-havers, we minders]> L'appartenance à la classe des choses dotées d'un esprit a des implications morales.
===
+++!!![Words and minds]> Quiconque comprend les mots que j'écris ou que je prononce a un esprit, car seuls les esprits sont capables de comprendre le langage. Les êtres humains partagent un monde subjectif, d'une manière qui est tout à fait inaccessible aux autres animaux, grâce au langage que nous parlons. Aucun autre moyen de communication n'est aussi puissant pour partager des expériences entre individus, pour comprendre ce que l'autre ressent, accéder à sa vie mentale, etc.
===
+++!!![The problem of incommunicative minds]> Peut-il y avoir des êtres dotés d'un esprit mais dépourvus de langage (donc incapables de communiquer)? Nous avons tendance à penser que oui. D'un autre côté, nous avons aussi tendance à penser que certaines créatures, comme les bactéries ou les plantes, n'ont pas d'esprit et agissent automatiquement, inconsciemment. Mais où se situe la frontière entre les uns et les autres? Le problème est que nous nous n'avons aucune garantie scientifique au-delà de nos intuitions quant aux choses qui ont ou n'ont pas un esprit. Or, nos intuitions peuvent nous tromper.
===

Ce que propose Dennett, pour chercher une réponse plus solide et plus convainquante, est d'adopter une perspective historique, évolutionniste: nous avons évolué à partir de créatures avec des esprits plus simples que le nôtre, qui ont évolué à partir de créatures encore plus simples. On peut ainsi remonter à une époque où il n'y avait pas d'esprits du tout sur la Terre. Comment les choses ont-elles commencé, et comment ont-elles évolué?
===
!![[2. Intentionality: The intentional systems approach|Dennett (1996) - ch.02]]
L'auteur adopte une posture à la fois évolutionniste et interprétationniste concernant l'intentionnalité. Il faut en chercher les origines dans les premières macromolécules qui ont commencé à se répliquer et qui ont enclenché le processus évolutif, mais il s'agit en même temps d'une stratégie interprétative (prédictive) par laquelle nous //attribuons// à des systèmes simples une intentionnalité+++[...]
+++!!![Simple beginnings: The birth of agency]> Les premières macromolécules, comme l'ARN et l'ADN, n'ont certainement pas d'esprit, mais elles ont une incroyable capacité de réplication. Elles sont sans doute les premiers objets capables de réaliser des //actions// (au lieu d'avoir seulement des //effets//). Contrairement à elles, les humains sommes capables d'actions //intentionnelles//. Cependant, l'agentivité inconsciente des macromolécules est la seule origine possible de notre propre agentivité. Nous sommes des descendants directs de ces machines autoréplicantes et notre corps en est entièrement constitué. Tous nos ancêtres sont des //systèmes intentionnels//:
|<<tiddler [[Dennett 1996:26/intentionalSystems]]>>|
===
+++!!![Adopting the intentional stance]>
|<<tiddler [[Dennett 1996:27/intentionalStance]]>>|
Cette stratégie, si elle est employée avec précaution, peut dénouer les mystères de l'esprit, de tous les esprits. Elle consiste, basiquement, à traiter une entité comme un agent, afin de prédire son comportement. Elle se distingue de deux autres stratégies: la //physical stance// et la //design stance//. Les prédictions de la //design stance// marchent très bien pour les artefacts, mais aussi pour les êtres vivants et leurs parties (ces "artefacts de Mère Nature"). Les prédictions de l'//intentional stance// concernent des systèmes complexes et permettent de prédire leur comportement //comme si// ils étaient des agents rationnels [l'auteur emploie le //as if// p.31].

Ce qui caractérise un agent rationnel, dit Dennett, c'est le fait qu'il recherche son propre bien. +++[citation]
|<<tiddler [[Dennett 1996:31-32/agentsInterests]]>>|
===

La capacité qu'on les organismes de discriminer ce qui est bon ou mauvais pour eux et d'y apporter une réponse corporelle est l'origine des [[fonctions|fonction biologique]]. +++[citation]
|<<tiddler [[Dennett 1996:32-33/birthOfFunction]]>>|
===

L'//intentional stance// consiste à traiter les systèmes intentionnels (macromolécules, thermostats, plantes, amibes, etc.) comme des agents rationnels, c'est-à-dire à leur attribuer des actions intelligentes, de manière à faire des prédictions. +++[citation]
|<<tiddler [[Dennett 1996:34/agentsRationnels]]>>|
===

===
+++!!![The misguided goal of propositional precision]>
Les philosophes commettent l'erreur de chercher à préciser le contenu de la "pensé" des animaux non-humains à partir du langage propositionnel humain. Or, celui-ci permet des distinctions fines qui n'ont aucune raison d'exister pour d'autres créatures. C'est-à-dire que nous cherchons à retrouver chez d'autres la même précision propositionnelle que chez l'homme.
===
+++!!![Original and derived intentionality]>
Certains philosophes, dont Searle, distinguent intentionnalité intrinsèque (ou originale) et dérivée, laquelle est propre des artefacts. Mais on peut considérer le cerveau humain comme un artefact créé par Mère Nature (l'évolution par sélection naturelle); il devrait donc n'avoir qu'une intentionalité dérivée.
===
===
!![[3. The body and its minds|Dennett (1996) - ch.03]]
Escribir el texto para 'Nuevo Tiddler'
Escribir el texto para 'Nuevo Tiddler'
<<tiddler Citation>>
!intentionalSystems
<part intentionalSystems> "I call all these entities, from the simplest to the most complex, //intentional systems//, and I call the perspective from which their agenthood (pseudo or genuine) is made visible, the //intentional stance//." ([[Dennett 1996:26]])
</part>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!intentionalStance
<part intentionalStance> "The intentional stance is the strategy of interpreting the behaviour of an entity (person, animal, artifact, whatever) by treating it //as if// it were a rational agent who governed its 'choice' of 'action' by a 'consideration' of its 'beliefs' and 'desires'." ([[Dennett 1996:27]])
</part>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom");
   var initiales=DataTiddler.getData(titre,"initiales");
   var datepublication=DataTiddler.getData(titre,"datepublication");
   var tagname=nom+", "+initiales+" ("+datepublication+") - citations";
   return "<<navigation modified TagsTypesDB "+tagname+">>";
   return "<<navigation modified TagsTypesDB "+tagname+" "+tagname+" "+tagname+">>";
</script>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!agentsInterests
<part agentsInterests> "The intentional stance is undeniably a useful shorcut in such a case [of a chess-playing computer], but how seriously should we take it? What does a computer care, really, about whether it wins or loses? Why say that the alarm clock //desires// to obey its master? We can use this contrast between natural and artificial goals to heighten our appreciation of the fact that all real goals ultimately spring from the predicament of a living, self-protective thing. But we must also recognize that the intentional stance //works// (when it does) whether or not the attributed goals are genuine or natural or 'really appreciated' by the so-called agent, and this tolerance is crucial to understanding how genuine goal-seeking could be established in the first place. Does the macromolecule //really// want to replicate itself? The intentional stance explains what is going on, regardeless of how we answer that question. Consider a simple organism_say, a planarian or an amoeba_moving non-randomly across the bottom of a laboratory dish, alway heading to the nutrient-rich end of the dish, or away from the toxic end. This organism is seeking the good, or shunning the bad_its own good and bad, not those of some human artifact-user. Seeking one's own good is a fundamental feature of any rational agent, but are these simple organisms seeking or just 'seeking'? We don't need to answer that question. The organism is a predictable intentional system in either case." ([[pp.31-32|Dennett 1996:31-32]])
</part>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!birthOfFunction
<part birthOfFunction> "Even the simplest organisms, if they are to favor what is good for them, need some sense organs of discriminative powers_some simple switches that turn ON in the presence of good and OFF in its absence_and these switches, or //transducers//, must be united to the right bodily responses. This requirement is the birth of //function//. A rock can't malfunction, for it has been well- or ill-equipped to further any good. When we decide to interpret an entity from the intentional stance, it is as if we put ourselves in the role of its guardian, asking ourselves, in effect, "If //I// were in this organism's predicament, what would I do?" And here we expose the underlying anthropomorphism of the intentional stance: we treat all intentional systems as if they were just like us_which of course they are not." ([[pp.32-33|Dennett 1996:32-33]])
</part>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!agentsRationnels
<part agentsRationnels> "//Intentional systems// are, by definition, all and only those entities whose behaviour is predictable/explicable from the intentional stance. Self-replicating macromolecules, thermostats, amoebas, plants, rats, bats, people, and chess-playing computers are all intentional systems_some much more interesting than others. Since the point of the intentional stance is to treat an entity as an agent in order to predict its actions, we have to suppose that it is a smart agent, since a stupid agent might do any dumb thing at all. This bold leap of supposing that the agent will make only the smart moves (given its limited perspective) is what gives us the leverage to make predictions. We describe that limited perspective by attributing //particular// beliefs and desires to the agent on the basis of its perception of the situation and its goals or needs." ([[p.34|Dennett 1996:34]])
</part>
<<tiddler AutoRefresh on>><<tiddler Livre>>

++++![Résumé]

===

+++![Chapitres]
<<newChapterHere>>
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
etc.
===

<<tiddler RéférenceLivre>>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere label:"nouvelle note">><<newChapterHere>>
----
<data>{"nom":"Dennett","prénom":"Daniel","initiales":"D","titrearticle":"","datepublication":"","journal":""}</data>
<<tiddler AutoRefresh on>>{{floatleft{[img[http://ecx.images-amazon.com/images/I/51J37EFQX7L._SL500_AA240_.jpg][http://www.amazon.fr/Kinds-Minds-Towards-Understanding-Consciousness/dp/0465073514/ref=sr_1_1?ie=UTF8&s=english-books&qid=1221204822&sr=8-1]]}}}
++++![Résumé]
Dennett cherche à comprendre l'esprit, les différentes formes d'esprits, depuis une perspective évolutionniste. L'esprit de l'animal humain est semblable à celui des autres animaux sur bien des points, et différent sur d'autres points. Pour comprendre ces similitudes et ces différences, il faut revenir sur les processus évolutifs qui les ont fait apparaître.
Dennett y reprend sa théorie de l'//[[intentional stance|Dennett, D (1987): The Intentional Stance]]//.
===

+++![Chapitres]
<<tiddler [[Dennett (1996) - ch.01]]>>
<<tiddler [[Dennett (1996) - ch.02]]>>
<<tiddler [[Dennett (1996) - ch.03]]>>
<<newChapterHere>>
===

<<tiddler RéférenceLivre>>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere label:"nouvelle note">><<newChapterHere>>
----
<data>{"nom":"Dennett","prénom":"Daniel","initiales":"D","titrelivre":"Kinds of Minds","datepublication":"1996","villeédition":"New York","noméditeur":"Basic Books","dateédition":"1996"}</data>
{{floatleft{[img(120px,auto)[Daniel C. Dennett, image wikipedia|./imagesWiki/Daniel_Dennett.png][http://fr.wikipedia.org/wiki/Daniel_Clement_Dennett]]}}}
++++![Résumé]
''Daniel Clement Dennett'' est un philosophe américain né le 28 mars 1942. C'est l'un des plus importants philosophes contemporains, en [[philosophie de l'esprit|PhiloEsprit]] et en [[philosophie des sciences|PhiloSciences]], et en ce qui concerne la [[théorie de l'évolution|Darwinisme]] et les [[sciences cognitives|SciencesCognitives]]. Il est actuellement professeur de philosophie et directeur du //Center for Cognitive Studies// de l'université de Tufts (Medford, Massachusetts).
===

!Publications
<<forEachTiddler where
'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Dennett","prénom":"Daniel","initiales":"D","titrearticle":"","datepublication":"","journal":""}</data>
/***
|''Name''|DeprecatedFunctionsPlugin|
|''Description''|Provides support for functions removed from the TiddlyWiki core|
|''Version''|1.0.0|
|''Status''|stable|
|''Source''|http://www.tiddlywiki.com/coreplugins.html#DeprecatedFunctionsPlugin|
|''~CodeRepository:''|http://svn.tiddlywiki.org/Trunk/association/plugins/DeprecatedFunctionsPlugin/DeprecatedFunctionsPlugin.js |
|''License''|[[BSD open source license]]|
|''~CoreVersion''|2.3.0|
|''Feedback''|[[TiddlyWiki community|http://groups.google.com/group/TiddlyWiki]] |
|''Keywords''|legacySupport|
!Code
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};

//--
//-- Deprecated code
//--

// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
	w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};

// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
	var lookaheadRegExp = new RegExp(this.lookahead,"mg");
	lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = lookaheadRegExp.exec(w.source);
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var text = lookaheadMatch[1];
		if(config.browser.isIE)
			text = text.replace(/\n/g,"\r");
		createTiddlyElement(w.output,"pre",null,null,text);
		w.nextMatch = lookaheadRegExp.lastIndex;
	}
};

// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
	createTiddlyElement(place,"br");
};

// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
	var i = this.indexOf(item);
	return i == -1 ? null : i;
};

// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
	return store.getLoader().internalizeTiddler(store,this,title,divRef);
};

// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
	return store.getSaver().externalizeTiddler(store,this);
};

// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
	return store.allTiddlersAsHtml();
}

// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
	refreshPageTemplate(title);
}

// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
	story.displayTiddlers(srcElement,titles,template,animate);
}

// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
	story.displayTiddler(srcElement,title,template,animate);
}

// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;

// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");

}
//}}}
{{floatleft{[img(120px,auto)[Descartes, wikipedia|./imagesWiki/descartes.jpg][http://fr.wikipedia.org/wiki/Descartes]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Descartes","prénom":"René","initiales":"R"}</data>

{{floatleft{[img(120px,auto)[John Dewey, wikipedia|./imagesWiki/dewey.gif][http://en.wikipedia.org/wiki/John_Dewey]]}}}

!Publications
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Dewey","prénom":"John","initiales":"J"}</data>

|<html><FORM action="file:///c:/" target="_blank"><INPUT type=submit value="disco c:\" name="button" class="btn" name=submit2></FORM></html>|<html><FORM action="file:///d:/" target="_blank"><INPUT type=submit value="disco d:\" name="button" class="btn" name=submit2></FORM></html>|<html><FORM action="file:///f:/" target="_blank"><INPUT type=submit value="disco f:\" name="button" class="btn" name=submit2></FORM></html>|<html><FORM action="file:///w:/" target="_blank"><INPUT type=submit value="USB W:\" name="button" class="btn" name=submit2></FORM></html>|



<<tiddler Concepts>>
<<tiddler Concepts>>
|"Il est toujours utile, lorsqu'il s'agit de s'informer sur le noyau notionnel d'un terme théorique passé dans le vocabulaire intellectuel d'emploi courant, de se référer à un dictionnaire de langue. Un dictionnaire de langue a ceci d'intéressant qu'il n'est lié que par l'obligation de rendre compte d'un usage attesté de chaque terme, et qu'à ce titre, il extrait assez correctement, sans égard particulier pour le spécialiste, la substance de ce qui, d'un concept, est retenu dans l'usage comme admissible par tous."|

{{textright{
Patrick Tort, "Darwinisme", dans Lecourt (dir.), //Dictionnaire d'histoire et philosophie des sciences//, PUF, 2003.
}}}



<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler wikibar'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='editor' macro='edit alias'></div><div class='editorFooter'><span macro='message abegoTiddlerAlias.lingo.aliasPrompt'></span></div>
<!--}}}-->






L'ésotérisme est synonyme de [[gnose|Gnose]], qui est une forme de connaissance fondée sur le symbolisme, et qui a une dimension à la fois intellectuelle et expérientielle. C'est une forme de pensée qui apparaît sous sa forme spécifique à la [[Renaissance]] et qui comporte quatre caractéristiques fondamentales:
# L'idée des correspondances/interdépendances universelles.
# L'idée que ''la nature est vivante'' et toute ''pleine de significations''.
# L'idée d'imagination active, imagination créatrice s'exerçant sur des supports de médiation (symboles). 
# L'idée de transformation, de transmutation. Par exemple alchimie.

Voir IbnArabi




Aenean eros arcu, condimentum nec, dapibus ut, tincidunt sit amet, urna. Quisque viverra, eros sed imperdiet iaculis, est risus facilisis quam, id malesuada arcu nulla luctus urna. Nullam et est. Vestibulum velit sem, faucibus cursus, dapibus vestibulum, pellentesque et, urna. Donec luctus. Donec lectus. Aliquam eget eros facilisis tortor feugiat sollicitudin. Integer lobortis vulputate sapien. Sed iaculis erat ac nunc. Etiam eu enim. Mauris ipsum urna, rhoncus at, bibendum sit amet, euismod eget, dolor. Mauris fermentum quam vitae ligula. Vestibulum in libero feugiat justo dictum consectetuer. Vestibulum euismod purus eget elit. Nunc sed massa porta elit bibendum posuere. Nunc pulvinar justo sit amet odio. In sed est. Phasellus ornare elementum nulla. Nulla ipsum neque, cursus a, viverra a, imperdiet at, enim. Quisque facilisis, diam sed accumsan suscipit, odio arcu hendrerit dolor, quis aliquet massa nulla nec sem.
!heading 1
!!heading 2
!!!heading3
----
<<tag button>>
This is a link to a [[StyleSheet]] tiddler.

> This is a blockquote
> This is a blockquote
> This is a blockquote
|>|>| !This is a header |h
|column1|column2|column3|
|row2| row2 |row2|
|column1|column2|column3|
|row2| row2 |row2|
|column1|column2|column3|
|row2| row2 |row2|
<<tiddler Concepts>>
Depuis Aristote au moins, expliquer c'est répondre aux questions du "comment" et du "pourquoi".

Voir:
* [[Explication scientifique]]
* [[Explication téléologique]]
* [[Expliquer et comprendre]]
<<tiddler Concept>>
!Explication scientifique
!![[Positivisme logique]]
Les sciences décrivent et prédisent, mais n'expliquent pas; car le positivisme c'est l'espoir d'éliminer la métaphysique. Les théories scientifiques sont des "instruments" destinés à effectuer des prédictions observables plutôt que des explications de la réalité ou des représentations (vraies ou fausses) de la réalité.
!![[Modèle déductif-nomologique]]
 A partir des années 1930, des philosophes comme [[Popper|Popper, Karl]], [[Hempel|Hempel, Carl]] et [[Oppenheim|Oppenheim, Paul]] remettent en question l'idée que les sciences empiriques n'expliquent pas les phénomènes. Dans les années '60 et '70, cette conception devient la "[[Received View]]": expliquer un phénomène, c'est montrer comment il peut être subsumé sous une loi de la nature. De cette manière, on peut expliquer un phénomène en le déduisant des lois de la nature et des conditions initiales: c'est le modèle déductif-nomologique (D-N)
!![[Modèle inductif-statistique]]
 C'est une variante du modèle D-N où les lois sont statistiques. C'est le modèle I-S. Il est défendu par [[Hempel|Hempel, Carl]], mais pas par tous les partisans du modèle D-N.
!![[Explication causale/mécanique]]
 Beaucoup d'objections à la received view portent sur le fait que les modèles d'explication qu'elle propose n'ont pas de contraintes causales. Les opposants sont [[Michael Scriven|Scriven, Michael]] (à partir des années '50), [[Wesley Salmon|Salmon, Wesley]] ('60), et [[Peter Railton|Railton, Peter]] ('70). Selon eux, expliquer un phénomène c'est en identifier les causes, ou en exposer les mécanismes sous-jacents.
!![[Explication comme Unification]]
 Développée par [[Michael Friedman|Friedman, Michael]] et [[Philip Kitcher|Kitcher, Philip]], cette conception consiste à dire qu'on explique le monde quand on réduit le nombre de présuppositions indépendantes qu'il faut introduire pour rendre compte de ce qui s'y passe. On explique un phénomène dans la mesure où on l'inscrit dans une conception du monde ou //Weltanschauung//.
!![[Explication pragmatiste]]
 D'autres auteurs, comme [[Achinstein|Achinstein, Peter]] et [[van Fraassen|van Fraassen, Bas]] analysent l'explication (pas seulement scientifique) en termes pragmatistes (plutôt que causals, logiques, ou légaux).
----
Problème de l'explication téléologique: référence à des fins, avec ou sans intentionalité (chez [[Aristote]]).
Sous sa forme moderne, l'opposition entre expliquer et comprendre naît à la fin du XIXème siècle, à partir des termes allemands //erklären// et //verstehen//, dont le premier désigne le mode d'explication par des causes naturelles dans les sciences physiques, et le second, le mode d'explication par des raisons dans les sciences humaines. Mais en remontant aux sources de la pensée scientifique, on retrouve une opposition analogue entre le mécanisme et la finalité. Et cette dernière opposition peut être retracée jusqu'au //Phédon// de [[Platon]].

Dans le cadre de la philosophie allemande de la fin du XIXème siècle, l'opposition a été défendue par W. Dilthey et G. Simmel pour rendre compte de la méthode propres aux "sciences de l'esprit" dont l'Histoire fournissait le paradigme. La compréhension des choses de l'esprit, c'est-à-dire des choses qui relèvent non pas de la nature mais de la culture, requière une interprétation, une [[herméneutique|Herméneutique]].

Dans le cadre de la philosophie analytique de l'action et de l'esprit, l'opposition est liée à celle entre les raisons et les causes. [[Davidson|Davidson, Donald]], par exemple, propose de traiter les raisons comme des causes, dans la mesure où il y a survenance du mental sur le physique, dans son monisme anomale. Cette question est toujours d'actualité quand on parle de la causalité mentale.

Voir le texte de K.O. Apel, //Expliquer et Comprendre//.
/***
|Name:|ExtentTagButtonPlugin|
|Description:|Adds a New tiddler button in the tag drop down|
|Version:|3.2 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#ExtendTagButtonPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{

window.onClickTag_mptw_orig = window.onClickTag;
window.onClickTag = function(e) {
	window.onClickTag_mptw_orig.apply(this,arguments);
	var tag = this.getAttribute("tag");
	var title = this.getAttribute("tiddler");
	// Thanks Saq, you're a genius :)
	var popup = Popup.stack[Popup.stack.length-1].popup;
	createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
	wikify("<<newTiddler label:'New tiddler' tag:'"+tag+"'>>",createTiddlyElement(popup,"li"));
	return false;
}

//}}}

Voir l'extension [[tiddly snip|http://tiddlysnip.com/#About]]
<html><div align="center"><iframe src="http://www.facebook.com/profile.php?id=710683329" frameborder="0" width="100%" height="600"></iframe></div></html>
/***
|FileDropPlugin|h
|author : BradleyMeck|
|version : 0.1.1|
|date : Nov 13 2006|
|usage : drag a file onto the TW to have it be made into a tiddler|
|browser(s) supported : Mozilla|

Note: this version has been 'tweaked' by Eric Shulman (http://www.TiddlyTools.com) to add suspend/resume notification handling to improve performance when multiple files are dropped at once.

!Trouble Shooting
*If the plugin does not seem to work, open up the page "about:config" (just type it in the address bar) and make sure @@color(blue):signed.applets.codebase_principal_support@@ is set to @@color(blue):true@@

!Revisions
*Multiple File Dropping API updated, to end all capturing events after yours return a value that makes if(myFunctionsReturnValue) evaluate to true
*Added support for multiple file drop handlers
**Use the config.macros.fileDrop.addEventListener(@@color(green):String Flavor@@, @@color(green):Function handler(nsiFile){}@@, @@color(green):Boolean addToFront@@) function
***Standard Flavor is "application/x-moz-file"
***addToFront gives your handler priority over all others at time of add
*Old plugin would disallow drops of text vetween applications because it didn't check if the transfer was a file.

!Example Handler
*Adds simple file import control, add this to a tiddler tagged {{{systemConfig}}} to make file dropping work
{{{
config.macros.fileDrop.addEventListener("application/x-moz-file",function(nsiFile)
{
 if(
    confirm("You have dropped the file \""+nsiFile.path+"\" onto the page, it will be imported as a tiddler. Is that ok?")
    )
 {
 var newDate = new Date();
 var title = prompt("what would you like to name the tiddler?");
 store.saveTiddler(title,title,loadFile(nsiFile.path),config.options.txtUserName,newDate,[]);
 }
 return true;
})
}}}

!Example Handler without popups and opening the tiddler on load
*Adds simple file import control, add this to a tiddler tagged {{{systemConfig}}} to make file dropping work
{{{
config.macros.fileDrop.addEventListener("application/x-moz-file",function(nsiFile)
{
 var newDate = new Date();
 store.saveTiddler(nsiFile.path,nsiFile.path,loadFile(nsiFile.path),config.options.txtUserName,newDate,[]);
 story.displayTiddler(null,nsiFile.path)
 return true;
})
}}}
!Code
***/

//{{{
config.macros.fileDrop = {version : {major : 0, minor : 0, revision: 1}};
config.macros.fileDrop.customDropHandlers = [];

config.macros.fileDrop.dragDropHandler = function(evt) {

 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
 // Load in the native DragService manager from the browser.
 var dragService = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);

 // Load in the currently-executing Drag/drop session.
 var dragSession = dragService.getCurrentSession();

 // Create an instance of an nsITransferable object using reflection.
 var transferObject = Components.classes["@mozilla.org/widget/transferable;1"].createInstance();

 // Bind the object explicitly to the nsITransferable interface. We need to do this to ensure that
 // methods and properties are present and work as expected later on.
 transferObject = transferObject.QueryInterface(Components.interfaces.nsITransferable);

 // I've chosen to add only the x-moz-file MIME type. Any type can be added, and the data for that format
 // will be retrieved from the Drag/drop service.
 transferObject.addDataFlavor("application/x-moz-file");

 // Get the number of items currently being dropped in this drag/drop operation.
 var numItems = dragSession.numDropItems;
// ELS 2007.12.03: performance improvement when dropping multiple files
if (numItems>1) {
	clearMessage();
	displayMessage("Reading "+numItems+" files...");
	store.suspendNotifications();
}
 for (var i = 0; i < numItems; i++)
 {
 // Get the data for the given drag item from the drag session into our prepared
 // Transfer object.
 dragSession.getData(transferObject, i);

 // We need to pass in Javascript 'Object's to any XPConnect method which
 // requires OUT parameters. The out value will then be saved as a new
 // property called Object.value.
 var dataObj = {};
 var dropSizeObj = {};

for(var ind = 0; ind < config.macros.fileDrop.customDropHandlers.length; ind++)
{
  var item = config.macros.fileDrop.customDropHandlers[ind];
  if(dragSession.isDataFlavorSupported(item.flavor))
  {
    transferObject.getTransferData(item.flavor, dataObj, dropSizeObj);
    var droppedFile = dataObj.value.QueryInterface(Components.interfaces.nsIFile);
    // Display all of the returned parameters with an Alert dialog.
    var result = item.handler.call(item,droppedFile);
 // Since the event is handled, prevent it from going to a higher-level event handler.
	 evt.stopPropagation();
	 evt.preventDefault();
    if(result){break;}
  }
}
 }
// ELS 2007.12.03: performance improvement and feedback after dropping multiple files
if (numItems>1) {
	store.resumeNotifications();
	store.notifyAll();
	displayMessage(numItems+" files have been processed");
}
}

if(!window.event)
{
 // Register the event handler, and set the 'capture' flag to true so we get this event
 // before it bubbles up through the browser.
 window.addEventListener("dragdrop", config.macros.fileDrop.dragDropHandler , true);
}

config.macros.fileDrop.addEventListener = function(paramflavor,func,inFront)
{
var obj = {};
obj.flavor = paramflavor;
obj.handler = func;
if(!inFront)
{config.macros.fileDrop.customDropHandlers.push(obj);}
else{config.macros.fileDrop.customDropHandlers.shift(obj);}
}
//}}}
/***
|Name|FileDropPluginConfig|
|Source|http://www.TiddlyTools.com/#FileDropPluginConfig|
|Version|1.5.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|FileDropPlugin, AttachFilePlugin|
|Overrides||
|Options|##Configuration|
|Description|Adds drag-and-drop handlers for creating binary attachments or directory lists|

__TiddlyTools FileDrop+AttachFile extended handler:__
* use just filename instead of whole path as tiddler title
* check for existing tiddler and prompt for new name
* handle folder drops (drops each file or creates a file list in a tiddler)
* use AttachFilePlugin if MIME type is not text/plain
* autotag created tiddlers (e.g., "temporary", "dropped", etc.)
* option to suppress automatic display of newly created tiddlers
* suspend/resume notifications when handling multiple files (performance improvement)
!!!!!Configuration
<<<
<<option chkFileDropTrimFilename>> Omit file extensions from tiddler titles when creating new tiddlers
&nbsp;&nbsp;{{{usage: <<option chkFileDropTrimFilename>> }}}
<<option chkFileDropDisplay>> Automatically display newly created tiddlers
&nbsp;&nbsp;{{{usage: <<option chkFileDropDisplay>> }}}
Tag newly created tiddlers with: <<option txtFileDropTags>>
&nbsp;&nbsp;{{{usage: <<option txtFileDropTags>>}}}

__FileDrop+AttachFile configuration options:__
<<option chkFileDropAttachLocalLink>> Include reference to local path/filename
&nbsp;&nbsp;{{{usage: <<option chkFileDropAttachLocalLink>> }}}
<<option chkFileDropAttachEncodeData>> Include binary file data as encoded "base64" text
&nbsp;&nbsp;{{{usage: <<option chkFileDropAttachEncodeData>> }}}
...only if file is smaller than: <<option txtFileDropAttachDataLimit>> bytes
&nbsp;&nbsp;{{{usage: <<option txtFileDropAttachDataLimit>>}}}

See [[FileDropPlugin]] for more documentation on handler implementation specifics, including sample code for default drop handlers.
<<<
!!!!!Revisions
<<<
2008.08.11 [1.5.1] added chkFileDropAttachLocalLink option to allow suppression of local path/file link
2007.01.01 [0.9.9] initial release with extensions for AttachFilePlugin
<<<
!!!!!Code
***/
//{{{
if (config.options.chkFileDropAttachEncodeData==undefined)
	config.options.chkFileDropAttachEncodeData=true;
if (config.options.chkFileDropAttachLocalLink==undefined)
	config.options.chkFileDropAttachLocalLink=true;
if (config.options.txtFileDropAttachDataLimit==undefined)
	config.options.txtFileDropAttachDataLimit=32768;
if (config.options.txtFileDropTags==undefined)
	config.options.txtFileDropTags="";
if (config.options.chkFileDropDisplay==undefined)
	config.options.chkFileDropDisplay=true;
if (config.options.chkFileDropTrimFilename==undefined)
	config.options.chkFileDropTrimFilename=false;

config.macros.fileDrop.addEventListener("application/x-moz-file",function(nsiFile)
{
	var header="Index of %0\n^^(as of %1)^^\n|!filename| !size | !modified |\n";
	var item="|[[%0|%1]]| %2|%3|\n";
	var footer="Total of %0 bytes in %1 files\n";

	var now=new Date();
	var files=[nsiFile];
	if (nsiFile.isDirectory()) {
		var folder=nsiFile.directoryEntries;
		var files=[];
		while (folder.hasMoreElements()) {
			var f=folder.getNext().QueryInterface(Components.interfaces.nsILocalFile);
			if (f instanceof Components.interfaces.nsILocalFile && !f.isDirectory()) files.push(f);
		}
		var msg=nsiFile.path.replace(/\\/g,"/")+"\n\n";
		msg+="contains "+files.length+" files... ";
		msg+="select OK to attach all files or CANCEL to create a list...";
		if (!confirm(msg)) { // create a list in a tiddler
			var title=nsiFile.leafName; // tiddler name is last directory name in path
			while (title && title.length && store.tiddlerExists(title)) {
				if (confirm(config.messages.overwriteWarning.format([title]))) break; // use existing title
				title=prompt("Please enter a different tiddler title for this file",nsiFile.path.replace(/\\/g,"/"));
			}
			if (!title || !title.length) return true; // aborted by user... we're done!
			var text=header.format([nsiFile.path.replace(/\\/g,"/"),now.toLocaleString()]);
			var total=0;
			for (var i=0; i<files.length; i++) { var f=files[i];
				var name=f.leafName;
				if (config.options.chkFileDropTrimFilename)
					{ var p=name.split("."); if (p.length>1) p.pop(); name=p.join("."); }
				var path="file:///"+f.path.replace(/\\/g,"/");
				var size=f.fileSize; total+=size;
				var when=new Date(f.lastModifiedTime).formatString("YYYY.0MM.0DD 0hh:0mm:0ss");
				text+=item.format([name,path,size,when]);
			}
			text+=footer.format([total,files.length]);
			var newtags=config.options.txtFileDropTags?config.options.txtFileDropTags.readBracketedList():[];
			store.saveTiddler(null,title,text,config.options.txtUserName,now,newtags);
			if (config.options.chkFileDropDisplay) story.displayTiddler(null,title);
			return true;
		}
	}
	if (files.length>1) store.suspendNotifications();
	for (i=0; i<files.length; i++) {
		var file=files[i];
		if (file.isDirectory()) continue; // skip over nested directories
		var type="text/plain";
		var title=file.leafName; // tiddler name is file name
		if (config.options.chkFileDropTrimFilename)
			{ var p=title.split("."); if (p.length>1) p.pop(); title=p.join("."); }
		var path=file.path;
		var size=file.fileSize;
		while (title && title.length && store.tiddlerExists(title)) {
			if (confirm(config.messages.overwriteWarning.format([title]))) break; // use existing title
			title=prompt("Please enter a different tiddler title for this file",path.replace(/\\/g,"/"));
		}
		if (!title || !title.length) continue; // cancelled by user... skip this file
		if (config.macros.attach) {
			type=config.macros.attach.getMIMEType(file.leafName,"");
			if (!type.length)
				type=prompt("Unrecognized file type.  Please enter a MIME type for this file","text/plain");
			if (!type||!type.length) continue; // cancelled by user... skip this file
		}
		var newtags=config.options.txtFileDropTags?config.options.txtFileDropTags.readBracketedList():[];
		if (type=="text/plain")
			store.saveTiddler(null,title,loadFile(path),config.options.txtUserName,now,newtags);
		else {
			// only encode data if enabled and file is smaller than limit.  Default is 32768 (32K) bytes.
			var embed=config.options.chkFileDropAttachEncodeData
				&& file.fileSize<config.options.txtFileDropAttachDataLimit;
			newtags.push("attachment"); newtags.push("excludeMissing");
			var localfile="";
			if (config.options.chkFileDropAttachLocalLink) {
				// if file is in current document folder,
				// remove path prefix and use relative reference
				var localfile=path;
				var h=document.location.href;
				folder=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
				if (localfile.substr(0,folder.length)==folder)
					localfile='./'+localfile.substr(folder.length);
			}
			config.macros.attach.createAttachmentTiddler(path,
				now.formatString(config.macros.timeline.dateFormat),
				"attached by FileDropPlugin", newtags,
				title, embed, config.options.chkFileDropAttachLocalLink, false,
				localfile, "", type,!config.options.chkFileDropDisplay);
		}
		if (config.options.chkFileDropDisplay) story.displayTiddler(null,title);
	}
	if (files.length>1) { store.resumeNotifications(); store.notifyAll(); }
	if (window.FFDEBUG) console.log(new Date()-now);
	return true;
})
//}}}


Voir [[Davidson|Davidson, Donald]], [[Dennett|Dennett, Daniel]], et [[Rorty|Rorty, Richard]].

L'attribution de croyances et désirs dans le cadre de la folk psychology dépend de la corrélation du comportement, verbal et autre, avec l'environnement. Le contenu de nos croyances est une fonction des objets et circonstances publiques, il n'est pas enfermé dans notre tête. Le contenu des croyances est contextuel, il n'est pas quelque part dans la tête.
On attribue une fonction à un item X (dans un système S) pour répondre à quatre types de questions: 
*Pourquoi X a-t-il été créé? 
*A quoi X sert-il? (//What it is good for?//) 
*Pourquoi X existe-t-il? 
*Quel est le rôle de X dans le système S? 

''La première question'' renvoie à un agent, qui est le créateur de X. La fonction dans ce cas est ''relative à une intention'' du créateur. C'est donc une conception de type [[mentaliste|Mentalisme]]. L'interprétation la plus courante est [[créationniste|Créationnisme]]: le créateur est un homme ou un Dieu. Dans un cadre scientifique, on peut adopter une interprétation métaphorique; l'attribution de fonctions pouvant ainsi être considérée comme une façon de parler. Une autre interprétation, non religieuse ni mentaliste, est cependant possible. C'est celle que propose [[Philip Kitcher|Kitcher, P (1998): "Function and Design"]] quand il conçoit les fonctions biologiques en termes de //[[design|Design]]//. 

''La seconde question'' implique des valeurs. Elle met l'accent sur le fait que la fonction de X est toujours, d'une manière ou d'une autre, positive, bénéfique. Elle suppose que l'item X est, d'une manière ou d'une autre, //bon pour// quelque chose. Le cœur, par exemple, fait plusieurs choses: il pompe le sang, il fait du bruit, etc., mais ces activités n'ont pas toutes une utilité. Le bruit du cœur ne sert à rien (bien qu'il puisse être utilisé pour déceler une maladie cardiaque), il n'a pas de fonction. Le problème est de savoir qui réalise l'évaluation; autrement dit, une fonction est une activité bonne pour qui ou pour quoi? C'est le problème de l'[[Objectivité]] des valeurs. Ce problème fait que les interprétations du concept de fonction en termes de valeurs aient été écartées car dénuées de valeur scientifique (voir [[Hempel, Carl G.]] et [[Canfield]] ?). Je crois que [[Ayala, Francisco]] défend aussi une conception en termes d'utilité. Le dernier en date est sans doute [[Bedau|Bedau, M (1992): "Where is the good in teleology?"]].

''La troisième question'' est d'ordre historique. C'est le passé, l'


La fonction de X est ce pour quoi X:
*''a été créé'' +++
*Mentalisme: X a été créé par quelqu'un dans un certain but. La fonction de X correspond à l'intention originelle.
*Design: 
===

*''existe''; elle est sa raison d'être.
*''est utile'', ce à quoi il sert.
*''est bon'' (//What it is good for//).

De quel genre d'entité s'agit-il? Est-ce une [[propriété|Propriété]]?



![[Trois problèmes classiques|Fonctions: trois problèmes classiques]]
<<tiddler [[Fonctions: trois problèmes classiques]]>>
----

++++[Nuage de mots-clefs]>
<<tagCloud =Fonction>>
===
----
<<tiddler Concepts>>
++++![Histoire]
The word ''FUNCTION'' first appears in a Latin manuscript "Methodus tangentium inversa, seu de fuctionibus" written by [[Gottfried Wilhelm Leibniz|Leibniz, Gottfried Wilhelm von]] (1646-1716) in 1673. Leibniz used the word in the non-analytical sense, as a magnitude which performs a special duty. He considered a function in terms of "mathematical job" — the "employee" being just a curve. He apparently conceived of a line doing "something" in a given //figura// ["aliis linearum in figura data functiones facientium generibus assumtis"]. From the beginning of his manuscript, however, Leibniz demonstrated that he already possessed the idea of function, a term he denominates //relatio//.

A paper "De linea ex lineis numero infinitis ordinatim..." in the //Acta Eruditorum// of April 1692, pp. 169-170, signed "O. V. E." but probably written by Leibniz, uses //functiones// in a sense to denote the various 'offices' which a straight line may fulfil in relation to a curve, viz. its tangent, normal, etc.

In the Acta Eruditorum of July 1694, "Nova Calculi differentialis..." (page 316), Leibniz used the word //function// almost in its technical sense, defining //function// as "a part of a straight line which is cut off by straight lines drawn solely by means of a fixed point, and of a point in the curve which is given together with its degree of curvature." The examples given were the ordinate, abscissa, tangent, normal, etc. [Cf. page 150 of Leibniz' "Mathematische Schriften," vol. III, edited by C. I. Gerhardt, ~Berlin-Halle (~Asher-Schmidt), 1849-63.]

In September 1694, Johann Bernoulli wrote in a letter to Leibniz, "quantitatem quomodocunque formatam ex indeterminatis et constantibus," although there is no explicit reference to the Latin term //functio//. The letter appears in //Mathematische Schriften//.

On July 5, 1698, Johann Bernoulli, in another letter to Leibniz, for the first time deliberately assigned a specialized use of the term //function// in the analytical sense, writing "earum [applicatarum] quaecunque functiones per alias applicatas //PZ// expressae." (Cajori 1919, page 211) [Cf. page 507 of Leibniz' "Mathematische Schriften," vol. III, edited by C. I. Gerhardt, ~Berlin-Halle (~Asher-Schmidt), 1849-63. Also see pages 506-510 and 525-526] At the end of that month, Leibniz replied (p. 526), showing his approval.

''//Function//'' is found in English in 1779 in //Chambers' Cyclopedia//: "The term function is used in algebra, for an analytical expression any way compounded of a variable quantity, and of numbers, or constant quantities" (~OED2).

(Information for this entry was provided by Julio González Cabillón and the ~OED2.)

:(source: http://members.aol.com/jeff570/mathword.html)
===
<<tiddler Idées>>
Davies utilise des exemples du domaine biologique, mais sa conception des fonctions systémiques n'a rien de spécifique à la biologie. De fait, il cite également des exemples techniques (fibre optique) ou physiques (dissolution de cristaux de sel). Mais dans ce cas son raisonnement devrait également être applicable au discours des physiciens, et pas seulement à celui des biologistes. Or, les physiciens n'utilisent pas (ou pas de la même manière et pas ouvertement) le concept de fonction, malgré le fait qu'ils emploient une démarche analytique telle que la décrit l'auteur. Donc, si les physiciens peuvent s'en passer, pourquoi les biologistes en auraient-ils besoin, puisque leur démarche analytique est comparable?

La théorie de Davies est donc insatisfaisante, car ou bien il fait des fonctions une simple façon de parler, qui peut être plus ou moins partagée par les physiciens et les biologistes, et alors il n'y a pas plus de propriétés fonctionnelles en biologie qu'en physique, ou bien les fonctions font référence à quelque chose de plus substantiel, mais alors Davies n'explique pas pourquoi les physiciens peuvent s'en passer et pas les biologistes.

Il me semble qu'on oscille entre une conception étiologique trop spécifique à la biologie, et une conception systémique qui n'a rien de spécifique à la biologie.

<<<
[[Biologie et physique: le hasard et la nécessité]]
<<tiddler [[Biologie et physique: le hasard et la nécessité]]>>
<<<
<<tiddler Note>>
[[Woodfield (1976)|Woodfield, A (1976): Teleology]], p.108, énonce trois problèmes liés aux fonctions:
#[[Hempel|Hempel, Carl G.]]'s problem. Why is it that only some of an item's activities are functions, and the others accidental?
#[[Nagel|Nagel, Ernest]]'s problem. Why is it that we ascribe functions to the parts of some systems (like organisms) but not to the parts of others (like the solar system)?
#The problem of functional explanation. How can it be explanatory of an item to cite one of its effects?
/***
|Name|FontSizePlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#FontSizePlugin|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Resize tiddler text on the fly. The text size is remembered between sessions by use of a cookie.
You can customize the maximum and minimum allowed sizes.
(only affects tiddler content text, not any other text)

Also, you can load a TW file with a font-size specified in the url.
Eg: http://tw.lewcid.org/#font:110

!Demo:
Try using the font-size buttons in the sidebar, or in the MainMenu above.

!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Then put {{{<<fontSize "font-size:">>}}} in your SideBarOptions tiddler, or anywhere else that you might like.

!Usage
{{{<<fontSize>>}}} results in <<fontSize>>
{{{<<fontSize font-size: >>}}} results in <<fontSize font-size:>>

!Customizing:
The buttons and prefix text are wrapped in a span with class fontResizer, for easy css styling.
To change the default font-size, and the maximum and minimum font-size allowed, edit the config.fontSize.settings section of the code below.

!Notes:
This plugin assumes that the initial font-size is 100% and then increases or decreases the size by 10%. This stepsize of 10% can also be customized.

!History:
*27-07-06, version 1.0 : prevented double clicks from triggering editing of containing tiddler.
*25-07-06,  version 0.9

!Code
***/

//{{{
config.fontSize={};

//configuration settings
config.fontSize.settings =
{
            defaultSize : 100,  // all sizes in %
            maxSize : 200,
            minSize : 40,
            stepSize : 10
};

//startup code
var fontSettings = config.fontSize.settings;

if (!config.options.txtFontSize)
            {config.options.txtFontSize = fontSettings.defaultSize;
            saveOptionCookie("txtFontSize");}
setStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\n","fontResizerStyles");
setStylesheet("#contentWrapper .fontResizer .button {display:inline;font-size:105%; font-weight:bold; margin:0 1px; padding: 0 3px; text-align:center !important;}\n .fontResizer {margin:0 0.5em;}","fontResizerButtonStyles");

//macro
config.macros.fontSize={};
config.macros.fontSize.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{

               var sp = createTiddlyElement(place,"span",null,"fontResizer");
               sp.ondblclick=this.onDblClick;
               if (params[0])
                           createTiddlyText(sp,params[0]);
               createTiddlyButton(sp,"+","increase font-size",this.incFont);
               createTiddlyButton(sp,"=","reset font-size",this.resetFont);
               createTiddlyButton(sp,"–","decrease font-size",this.decFont);
}

config.macros.fontSize.onDblClick = function (e)
{
             if (!e) var e = window.event;
             e.cancelBubble = true;
             if (e.stopPropagation) e.stopPropagation();
             return false;
}

config.macros.fontSize.setFont = function ()
{
               saveOptionCookie("txtFontSize");
               setStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\n","fontResizerStyles");
}

config.macros.fontSize.incFont=function()
{
               if (config.options.txtFontSize < fontSettings.maxSize)
                  config.options.txtFontSize = (config.options.txtFontSize*1)+fontSettings.stepSize;
               config.macros.fontSize.setFont();
}

config.macros.fontSize.decFont=function()
{

               if (config.options.txtFontSize > fontSettings.minSize)
                  config.options.txtFontSize = (config.options.txtFontSize*1) - fontSettings.stepSize;
               config.macros.fontSize.setFont();
}

config.macros.fontSize.resetFont=function()
{

               config.options.txtFontSize=fontSettings.defaultSize;
               config.macros.fontSize.setFont();
}

config.paramifiers.font =
{
               onstart: function(v)
                  {
                   config.options.txtFontSize = v;
                   config.macros.fontSize.setFont();
                  }
};
//}}}
//~~(Part of the [[ForEachTiddlerPlugin]])~~//

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|


''Using JavaScript''

To give you a lot of flexibility the [[ForEachTiddlerMacro]] uses JavaScript in its arguments. Even if you are not that familiar with JavaScript you may find forEachTiddler useful. Just have a look at the various ready-to-use [[ForEachTiddlerExamples]] and adapt them to your needs.

''The Elements of the Macro''

The arguments of the ForEachTiddlerMacro consist of multiple parts, each of them being optional.

<<slider chkFETInClause [[inClause]] "inClause" "inClause">>
<<slider chkFETWhereClause [[whereClause]] "whereClause" "whereClause">>
<<slider chkFETSortClause [[sortClause]] "sortClause" "sortClause">>
<<slider chkFETScriptClause [[scriptClause]] "scriptClause" "scriptClause">>
<<slider chkFETActions [[Action Specification]] "Action Specification" "Action Specification">>

''Using Macros and ">" inside the forEachTiddler Macro''

You may use other macro calls into the expression, especially in the actionParameters. To avoid that the {{{>>}}} of such a macro call is misinterpreted as the end of the {{{<<forEachTiddler...>>}}} macro you must escape the {{{>>}}} of the inner macro with {{{$))}}} E.g. if you want to use {{{<<tiddler ...>>}}} inside the {{{forEachTiddler}}} macro you have to write {{{<<tiddler ...$))}}}.

In addition it is necessary to escape single {{{>}}} with the text {{{$)}}}.

''Using {{{<<tiddler ... with: ...>>}}} to re-use ForEachTiddler definitions''

Sometimes you may want to use a certain ForEachTiddler definition in slight variations. E.g. you may want to list either the tiddlers tagged with "ToDo" and in the other case with "Done". To do so you may use "Tiddler parameters". Here an example:

Replace the variable part of the ForEachTiddler definition with $1 ($2,... $9 are supported). E.g. you may create the tiddler "ListTaggedTiddlers" like this
{{{
<<forEachTiddler 
 where 
 'tiddler.tags.contains("$1")'
>>
}}}

Now you can use the ListTaggedTiddlers for various specific tags, using the {{{<<tiddler ...>>}}} macro:
{{{
<<tiddler ListTaggedTiddlers with: "systemConfig">>
}}}
{{{
<<tiddler ListTaggedTiddlers with: "Plugin">>
}}}


See also [[ForEachTiddlerExamples]].
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]]  is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].

!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features: 
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) 
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features: 
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs: 
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features: 
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version

!Code
***/
//{{{

	
//============================================================================
//============================================================================
//		   ForEachTiddlerPlugin
//============================================================================
//============================================================================

// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {

if (!window.abego) window.abego = {};

version.extensions.ForEachTiddlerPlugin = {
	major: 1, minor: 0, revision: 8, 
	date: new Date(2007,3,12), 
	source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
	licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
	copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};

// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
	TiddlyWiki.prototype.forEachTiddler = function(callback) {
		for(var t in this.tiddlers) {
			callback.call(this,t,this.tiddlers[t]);
		}
	};
}

//============================================================================
// forEachTiddler Macro
//============================================================================

version.extensions.forEachTiddler = {
	major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};

// ---------------------------------------------------------------------------
// Configurations and constants 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler = {
	 // Standard Properties
	 label: "forEachTiddler",
	 prompt: "Perform actions on a (sorted) selection of tiddlers",

	 // actions
	 actions: {
		 addToList: {},
		 write: {}
	 }
};

// ---------------------------------------------------------------------------
//  The forEachTiddler Macro Handler 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.getContainingTiddler = function(e) {
	while(e && !hasClass(e,"tiddler"))
		e = e.parentNode;
	var title = e ? e.getAttribute("tiddler") : null; 
	return title ? store.getTiddler(title) : null;
};

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);

	if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params
	// Parse the "in" clause
	var tiddlyWikiPath = undefined;
	if ((i < params.length) && params[i] == "in") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "TiddlyWiki path expected behind 'in'.");
			return;
		}
		tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the where clause
	var whereClause ="true";
	if ((i < params.length) && params[i] == "where") {
		i++;
		whereClause = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the sort stuff
	var sortClause = null;
	var sortAscending = true; 
	if ((i < params.length) && params[i] == "sortBy") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "sortClause missing behind 'sortBy'.");
			return;
		}
		sortClause = this.paramEncode(params[i]);
		i++;

		if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
			 sortAscending = params[i] == "ascending";
			 i++;
		}
	}

	// Parse the script
	var scriptText = null;
	if ((i < params.length) && params[i] == "script") {
		i++;
		scriptText = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the action. 
	// When we are already at the end use the default action
	var actionName = "addToList";
	if (i < params.length) {
	   if (!config.macros.forEachTiddler.actions[params[i]]) {
			this.handleError(place, "Unknown action '"+params[i]+"'.");
			return;
		} else {
			actionName = params[i]; 
			i++;
		}
	} 
	
	// Get the action parameter
	// (the parsing is done inside the individual action implementation.)
	var actionParameter = params.slice(i);


	// --- Processing ------------------------------------------
	try {
		this.performMacro({
				place: place, 
				inTiddler: tiddler,
				whereClause: whereClause, 
				sortClause: sortClause, 
				sortAscending: sortAscending, 
				actionName: actionName, 
				actionParameter: actionParameter, 
				scriptText: scriptText, 
				tiddlyWikiPath: tiddlyWikiPath});

	} catch (e) {
		this.handleError(place, e);
	}
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {

	var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

	var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
	context["tiddlyWiki"] = tiddlyWiki;
	
	// Get the tiddlers, as defined by the whereClause
	var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
	context["tiddlers"] = tiddlers;

	// Sort the tiddlers, when sorting is required.
	if (parameter.sortClause) {
		this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
	}

	return {tiddlers: tiddlers, context: context};
};

// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
	return this.getTiddlersAndContext(parameter).tiddlers;
};

// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
//				  The following properties are supported:
//
//						place
//						whereClause
//						sortClause
//						sortAscending
//						actionName
//						actionParameter
//						scriptText
//						tiddlyWikiPath
//
//					All properties are optional. 
//					For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
	var tiddlersAndContext = this.getTiddlersAndContext(parameter);

	// Perform the action
	var actionName = parameter.actionName ? parameter.actionName : "addToList";
	var action = config.macros.forEachTiddler.actions[actionName];
	if (!action) {
		this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
		return;
	}

	var actionHandler = action.handler;
	actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};

// ---------------------------------------------------------------------------
//  The actions 
// ---------------------------------------------------------------------------

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;

	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
		return;
	}

	// Perform the action.
	var list = document.createElement("ul");
	place.appendChild(list);
	for (var i = 0; i < tiddlers.length; i++) {
		var tiddler = tiddlers[i];
		var listItem = document.createElement("li");
		list.appendChild(listItem);
		createTiddlyLink(listItem, tiddler.title, true);
	}
};

abego.parseNamedParameter = function(name, parameter, i) {
	var beginExpression = null;
	if ((i < parameter.length) && parameter[i] == name) {
		i++;
		if (i >= parameter.length) {
			throw "Missing text behind '%0'".format([name]);
		}
		
		return config.macros.forEachTiddler.paramEncode(parameter[i]);
	}
	return null;
}

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;
	if (p >= parameter.length) {
		this.handleError(place, "Missing expression behind 'write'.");
		return;
	}

	var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
	p++;

	// Parse the "begin" option
	var beginExpression = abego.parseNamedParameter("begin", parameter, p);
	if (beginExpression !== null) 
		p += 2;
	var endExpression = abego.parseNamedParameter("end", parameter, p);
	if (endExpression !== null) 
		p += 2;
	var noneExpression = abego.parseNamedParameter("none", parameter, p);
	if (noneExpression !== null) 
		p += 2;

	// Parse the "toFile" option
	var filename = null;
	var lineSeparator = undefined;
	if ((p < parameter.length) && parameter[p] == "toFile") {
		p++;
		if (p >= parameter.length) {
			this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
			return;
		}
		
		filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
		p++;
		if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
			p++;
			if (p >= parameter.length) {
				this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
				return;
			}
			lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
			p++;
		}
	}
	
	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
		return;
	}

	// Perform the action.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
	var count = tiddlers.length;
	var text = "";
	if (count > 0 && beginExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
	
	for (var i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		text += func(tiddler, context, count, i);
	}
	
	if (count > 0 && endExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

	if (count == 0 && noneExpression) 
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
		

	if (filename) {
		if (lineSeparator !== undefined) {
			lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
			text = text.replace(/\n/mg,lineSeparator);
		}
		saveFile(filename, convertUnicodeToUTF8(text));
	} else {
		var wrapper = createTiddlyElement(place, "span");
		wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
	}
};


// ---------------------------------------------------------------------------
//  Helpers
// ---------------------------------------------------------------------------

// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
	return {
		place : placeParam, 
		whereClause : whereClauseParam, 
		sortClause : sortClauseParam, 
		sortAscending : sortAscendingParam, 
		script : scriptText,
		actionName : actionNameParam, 
		actionParameter : actionParameterParam,
		tiddlyWikiPath : tiddlyWikiPathParam,
		inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
		viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result
	};
};

// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of 
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
	if (!idPrefix) {
		idPrefix = "store";
	}
	var lenPrefix = idPrefix.length;
	
	// Read the content of the given file
	var content = loadFile(this.getLocalPath(path));
	if(content === null) {
		throw "TiddlyWiki '"+path+"' not found.";
	}
	
	var tiddlyWiki = new TiddlyWiki();

	// Starting with TW 2.2 there is a helper function to import the tiddlers
	if (tiddlyWiki.importTiddlyWiki) {
		if (!tiddlyWiki.importTiddlyWiki(content))
			throw "File '"+path+"' is not a TiddlyWiki.";
		tiddlyWiki.dirty = false;
		return tiddlyWiki;
	}
	
	// The legacy code, for TW < 2.2
	
	// Locate the storeArea div's
	var posOpeningDiv = content.indexOf(startSaveArea);
	var posClosingDiv = content.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
		throw "File '"+path+"' is not a TiddlyWiki.";
	}
	var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
	
	// Create a "div" element that contains the storage text
	var myStorageDiv = document.createElement("div");
	myStorageDiv.innerHTML = storageText;
	myStorageDiv.normalize();
	
	// Create all tiddlers in a new TiddlyWiki
	// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
	var store = myStorageDiv.childNodes;
	for(var t = 0; t < store.length; t++) {
		var e = store[t];
		var title = null;
		if(e.getAttribute)
			title = e.getAttribute("tiddler");
		if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
			title = e.id.substr(lenPrefix);
		if(title && title !== "") {
			var tiddler = tiddlyWiki.createTiddler(title);
			tiddler.loadFromDiv(e,title);
		}
	}
	tiddlyWiki.dirty = false;

	return tiddlyWiki;
};


	
// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
// 
//	 (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
	var script = context["script"];
	var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
	var fullText = (script ? script+";" : "")+functionText+";theFunction;";
	return eval(fullText);
};

// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
	var result = [];
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
	tiddlyWiki.forEachTiddler(function(title,tiddler) {
		if (func(tiddler, context, undefined, undefined)) {
			result.push(tiddler);
		}
	});
	return result;
};

// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
	var message = "Extra parameter behind '"+actionName+"':";
	for (var i = firstUnusedIndex; i < parameter.length; i++) {
		message += " "+parameter[i];
	}
	this.handleError(place, message);
};

// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
	var result = 
		(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
			? 0
			: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? -1 
			   : +1; 
	return result;
};

// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
	var result = 
		(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
			? 0
			: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? +1 
			   : -1; 
	return result;
};

// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
	// To avoid evaluating the sortClause whenever two items are compared 
	// we pre-calculate the sortValue for every item in the array and store it in a 
	// temporary property ("forEachTiddlerSortValue") of the tiddlers.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
	var count = tiddlers.length;
	var i;
	for (i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
	}

	// Do the sorting
	tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);

	// Delete the temporary property that holds the sortValue.	
	for (i = 0; i < tiddlers.length; i++) {
		delete tiddlers[i].forEachTiddlerSortValue;
	}
};


// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
	displayMessage(message);
};

// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
	var message ="<<"+macroName;
	for (var i = 0; i < params.length; i++) {
		message += " "+params[i];
	}
	message += ">>";
	displayMessage(message);
};


// Internal.
//
// Creates an element that holds an error message
// 
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
	var message = (exception.description) ? exception.description : exception.toString();
	return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};

// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
	if (place) {
		this.createErrorElement(place, exception);
	} else {
		throw exception;
	}
};

// Internal.
//
// Encodes the given string.
//
// Replaces 
//	 "$))" to ">>"
//	 "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
	var reGTGT = new RegExp("\\$\\)\\)","mg");
	var reGT = new RegExp("\\$\\)","mg");
	return s.replace(reGTGT, ">>").replace(reGT, ">");
};

// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
// 
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
	// Remove any location part of the URL
	var hashPos = originalPath.indexOf("#");
	if(hashPos != -1)
		originalPath = originalPath.substr(0,hashPos);
	// Convert to a native file format assuming
	// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
	// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
	// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
	// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
	var localPath;
	if(originalPath.charAt(9) == ":") // pc local file
		localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
		localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
		localPath = unescape(originalPath.substr(7));
	else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
		localPath = unescape(originalPath.substr(5));
	else // pc network file
		localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");	
	return localPath;
};

// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
	".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
	"forEachTiddler");

//============================================================================
// End of forEachTiddler Macro
//============================================================================


//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
	var n =  prefix.length;
	return (this.length >= n) && (this.slice(0, n) == prefix);
};



//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
	var n = suffix.length;
	return (this.length >= n) && (this.right(n) == suffix);
};


//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
	return this.indexOf(substring) >= 0;
};

//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or 
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == item) {
			return i;
		}
	}
	return -1;
};

//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false. 
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
	return (this.indexOf(item) >= 0);
};

//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements 
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (this.contains(items[i])) {
			return true;
		}
	}
	return false;
};


//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
// 
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null] 
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (!this.contains(items[i])) {
			return false;
		}
	}
	return true;
};


} // of "install only once"

// Used Globals (for JSLint) ==============
// ... DOM
/*global 	document */
// ... TiddlyWiki Core
/*global 	convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink, 
			displayMessage, endSaveArea, hasClass, loadFile, saveFile, 
			startSaveArea, store, wikify */
//}}}


/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/

A FormTemplate is used with the [[FormTiddlerPlugin]]. It is a tiddler that contains one or more HTML INPUT elements and defines the layout of a form. 

Other tiddlers can reference a FormTemplate through the [[FormTiddlerMacro]].

(See [[FormTiddler Introduction]])
|!Example|!Comment|
|[[SimpleForm|SimpleForm (Card 1)]]|Three forms, using a simple template with "username" and "password" fields|
|[[BiggerForm|BiggerForm (Card 1)]]|Three forms, using a template with all supported Form input elements|
|[[Bugreports]]|Use forms and filtered lists to maintain bug reports|
|[[Contacts|JoeBlock]]|Manage your contacts in forms|
The [[FormTiddlerPlugin]] allows you to enter your data in a form and store the form's data in your tiddlers.

(For more information on tiddler data see the [[DataTiddlerPlugin]].)

//''Define ~FormTemplate''//

When you want to enter data in a form you first have to define a [[FormTemplate]] tiddler. A FormTemplate tiddler is a tiddler that contains named HTML INPUT elements (such as textfields, password fields, lists etc.) that define the stuff that should be edited in the form. E.g. you may have a FormTemplate that looks like this:

<html>
 <b>Name:</b><br/>
 <input name=userName type=text /><br/>
 <b>Password:</b><br/>
 <input name=pwd type=password /><br/>
</html>

The correspond HTML text looks like this
{{{
<html>
 <b>Name:</b><br/>
 <input name=userName type=text /><br/>
 <b>Password:</b><br/>
 <input name=pwd type=password /><br/>
</html>
}}}

The name of the INPUT element is also the name of the data field it is editing. E.g. a text field defined like this: 
{{{
<input name=userName type=text />
}}}
will edit the data field "userName" of the tiddler.


You are free to layout the INPUT elements as you like, but don't add a "form" element around them and don't define 'onchange' handlers, since this will be done automatically by the {{{<<formTiddler ...>>}}} macro.


//''Use ~FormTemplates (through the {{{<<formTiddler ...>>}}} macro)''//

In a second step you add the {{{<<formTiddler ...>>}}} macro to tiddlers that should be edited. In the macro you are referencing the [[FormTemplate]] that should be used to edit the tiddler's data. You may refer to the same FormTemplate tiddler in as many tiddlers as you like. Every such tiddler displays the same INPUT elements as the FormTemplate, but with the "data" of each individual tiddler.

In addition you may more than one {{{<<formTiddler...>>}}} macro call in one tiddler. Just make sure that the names of the elements in the referenced FormTemplate tiddlers do not collide. This feature may be useful if you want to construct a larger input form from a set of smaller FormTemplates.

You can easily create tiddlers with an embedded {{{<<formTiddler...>>}}} macro call using the [[<<newTiddlerWithForm...>>|NewTiddlerWithFormMacro]] macro. The macro shows a button similar to the "new tiddler" button and creates the requested tiddler, ready to enter data. For details see NewTiddlerWithFormMacro.


//''"Structured" and "Free" Data''//

Typically you will edit a tiddler that uses the {{{<<formTiddler...>>}}} macro through the form. But you are free to also edit the tiddler "as usual", through the build-in edit feature. I.e. you may mix "structured data" (as entered through the form) with "free data". I.e. on a "Contact" tiddler you may add an image to the tiddler, or add extra links to related persons. Or you add more tags. Just make sure that you don't modify the {{{<data>...</data>}}} section of the tiddler, since this contains the data maintained by the form.

Also notice that since the data entered in the forms is stored in the tiddler's text (in the {{{<data>...</data>}}} section) using the "search" feature will also find the texts you entered in the forms (even though it will not hilite the texts in the fields).


//''Applications''//

Using the [[FormTiddlerPlugin]] it is easy to manage things like:
* [[Contacts]]
* [[Bugreports]]
* ~ToDo Lists
* and many more.

Since a FormTemplate is typically used for many tiddlers of the same kind you may also consider using the ForEachTiddlerMacro to collect data across multiple tiddlers (e.g. to get a list of all contacts, a summary page for the bug reports etc.)

(See also [[FormTiddler Examples]])


//''HTML Elements''//

For those not that familiar with the HTML INPUT elements here a short overview with HTML snippets. 
|!Type|!HTML Example|!Comment|
|button|{{{<input name=btn type=button value="Just a button" />}}}|no data|
|checkbox|{{{<input name=isVIP type=checkbox />is VIP}}}||
|file|{{{<input name=attachment type=file />}}}|The "file" input element typically does not restore the path of the previously selected file. Nevertheless the path of the file is stored in the tiddler.|
|hidden|{{{<input name=hiddenValue type=hidden value="This is a hidden value" />}}}||
|password|{{{<input name=pwd type=password />}}}|The data entered in a "password" field is stored as clear text in the tiddler.|
|radio|{{{<input name=level type=radio value="Beginner" />Beginner<input name=level type=radio value="Expert" />Expert<input name=level type=radio value="Guru" />Guru}}}||
|reset|{{{<input name=btnReset type=reset />}}}|no data|
|select-one|{{{<select name=browser ><option>Firefox<option>Internet Explorer<option>Opera<option>Other</select >}}}||
|select-multiple|{{{<select name=music MULTIPLE ><option> R&B <option> Jazz <option> Blues <option> New Age</select >}}}||
|submit|{{{<input name=btnSubmit type=submit />}}}|no data|
|text|{{{<input name=userName type=text/>}}}||
|textarea|{{{<TEXTAREA name=notes rows=4 cols=80 ></TEXTAREA>}}}||

For details consult the Web or a textbook on HTML editing.
The {{{<<formTiddler ...>>}}} macro defined by the FormTiddlerPlugin. 

When a tiddler T1 references the (FormTemplate) tiddler T2 in the FormTiddlerMacro, the data of T1 can be edited through the INPUT elements defined by T2.
/***
<<checkForDataTiddlerPlugin>>
|''Name:''|FormTiddlerPlugin|
|''Version:''|1.0.6 (2007-06-24)|
|''Source:''|http://tiddlywiki.abego-software.de/#FormTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
|''Macros:''|formTiddler, checkForDataTiddlerPlugin, newTiddlerWithForm|
|''Requires:''|DataTiddlerPlugin|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
!Description
Use form-based tiddlers to enter your tiddler data using text fields, listboxes, checkboxes etc. (All standard HTML Form input elements supported).

''Syntax:'' 
|>|{{{<<}}}''formTiddler'' //tiddlerName//{{{>>}}}|
|//tiddlerName//|The name of the FormTemplate tiddler to be used to edit the data of the tiddler containing the macro.|

|>|{{{<<}}}''newTiddlerWithForm'' //formTemplateName// //buttonLabel// [//titleExpression// [''askUser'']] {{{>>}}}|
|//formTemplateName//|The name of the tiddler that defines the form the new tiddler should use.|
|//buttonLabel//|The label of the button|
|//titleExpression//|A (quoted) JavaScript String expression that defines the title (/name) of the new tiddler.|
|''askUser''|Typically the user is not asked for the title when a title is specified (and not yet used). When ''askUser'' is given the user will be asked in any case. This may be used when the calculated title is just a suggestion that must be confirmed by the user|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

For details and how to use the macros see the [[introduction|FormTiddler Introduction]] and the [[examples|FormTiddler Examples]].

!Revision history
* v1.0.6 (2007-06-24)
** Fixed problem when using SELECT component in Internet Explorer (thanks to MaikBoenig for reporting)
* v1.0.5 (2006-02-24)
** Removed "debugger;" instruction
* v1.0.4 (2006-02-07)
** Bug: On IE no data is written to data section when field values changed (thanks to KenGirard for reporting)
* v1.0.3 (2006-02-05)
** Bug: {{{"No form template specified in <<formTiddler>>"}}} when using formTiddler macro on InternetExplorer (thanks to KenGirard for reporting)
* v1.0.2 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.1 (2005-12-22)
** Features: 
*** Support InternetExplorer
*** Added newTiddlerWithForm Macro
* v1.0.0 (2005-12-14)
** initial version

!Code
***/
//{{{

//============================================================================
//============================================================================
//						FormTiddlerPlugin
//============================================================================
//============================================================================

if (!window.abego) window.abego = {};

abego.getOptionsValue = function(element,i) {
	var v = element.options[i].value;
	if (!v && element.options[i].text)
		v = element.options[i].text;
	return v;
};

version.extensions.FormTiddlerPlugin = {
	major: 1, minor: 0, revision: 5,
	date: new Date(2006, 2, 24), 
	type: 'plugin',
	source: "http://tiddlywiki.abego-software.de/#FormTiddlerPlugin"
};

// For backward compatibility with v1.2.x
//
if (!window.story) window.story=window; 
if (!TiddlyWiki.prototype.getTiddler) TiddlyWiki.prototype.getTiddler = function(title) { return t = this.tiddlers[title]; return (t != undefined && t instanceof Tiddler) ? t : null; } 

//============================================================================
// formTiddler Macro
//============================================================================

// -------------------------------------------------------------------------------
// Configurations and constants 
// -------------------------------------------------------------------------------

config.macros.formTiddler = {
	// Standard Properties
	label: "formTiddler",
	version: {major: 1, minor: 0, revision: 4, date: new Date(2006, 2, 7)},
	prompt: "Edit tiddler data using forms",

	// Define the "setters" that set the values of INPUT elements of a given type
	// (must match the corresponding "getter")
	setter: {  
		button:				function(e, value) {/*contains no data */ },
		checkbox:			function(e, value) {e.checked = value;},
		file:				function(e, value) {try {e.value = value;} catch(e) {/* ignore, possibly security error*/}},
		hidden:				function(e, value) {e.value = value;},
		password:			function(e, value) {e.value = value;},
		radio:				function(e, value) {e.checked = (e.value == value);},
		reset:				function(e, value) {/*contains no data */ },
		"select-one":		function(e, value) {config.macros.formTiddler.setSelectOneValue(e,value);},
		"select-multiple":	function(e, value) {config.macros.formTiddler.setSelectMultipleValue(e,value);},
		submit:				function(e, value) {/*contains no data */},
		text:				function(e, value) {e.value = value;},
		textarea:			function(e, value) {e.value = value;}
	},

	// Define the "getters" that return the value of INPUT elements of a given type
	// Return undefined to not store any data.
	getter: {  
		button:				function(e, value) {return undefined;},
		checkbox:			function(e, value) {return e.checked;},
		file:				function(e, value) {return e.value;},
		hidden:				function(e, value) {return e.value;},
		password:			function(e, value) {return e.value;},
		radio:				function(e, value) {return e.checked ? e.value : undefined;},
		reset:				function(e, value) {return undefined;},
		"select-one":		function(e, value) {return config.macros.formTiddler.getSelectOneValue(e);},
		"select-multiple":	function(e, value) {return config.macros.formTiddler.getSelectMultipleValue(e);},
		submit:				function(e, value) {return undefined;},
		text:				function(e, value) {return e.value;},
		textarea:			function(e, value) {return e.value;}
	}
};


// -------------------------------------------------------------------------------
// The formTiddler Macro Handler 
// -------------------------------------------------------------------------------

config.macros.formTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if (!config.macros.formTiddler.checkForExtensions(place, macroName)) {
		return;
	}
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params

	// get the name of the form template tiddler
	var formTemplateName = undefined;
	if (i < params.length) {
		formTemplateName = params[i];
		i++;
	}

	if (!formTemplateName) {
		config.macros.formTiddler.createErrorElement(place, "No form template specified in <<" + macroName + ">>.");
		return;
	}


	// --- Processing ------------------------------------------

	// Get the form template text. 
	// (This contains the INPUT elements for the form.)
	var formTemplateTiddler = store.getTiddler(formTemplateName);
	if (!formTemplateTiddler) {
		config.macros.formTiddler.createErrorElement(place, "Form template '" + formTemplateName + "' not found.");
		return;
	}
	var templateText = formTemplateTiddler.text;
	if(!templateText) {
		// Shortcut: when template text is empty we do nothing.
		return;
	}

	// Get the name of the tiddler containing this "formTiddler" macro
	// (i.e. the tiddler, that will be edited and that contains the data)
	var tiddlerName = config.macros.formTiddler.getContainingTiddlerName(place);

	// Append a "form" element. 
	var formName = "form"+formTemplateName+"__"+tiddlerName;
	var e = document.createElement("form");
	e.setAttribute("name", formName);
	place.appendChild(e);

	// "Embed" the elements defined by the templateText (i.e. the INPUT elements) 
	// into the "form" element we just created
	wikify(templateText, e);

	// Initialize the INPUT elements.
	config.macros.formTiddler.initValuesAndHandlersInFormElements(formName, DataTiddler.getDataObject(tiddlerName));
}


// -------------------------------------------------------------------------------
// Form Data Access 
// -------------------------------------------------------------------------------

// Internal.
//
// Initialize the INPUT elements of the form with the values of their "matching"
// data fields in the tiddler. Also setup the onChange handler to ensure that
// changes in the INPUT elements are stored in the tiddler's data.
//
config.macros.formTiddler.initValuesAndHandlersInFormElements = function(formName, data) {
	// config.macros.formTiddler.trace("initValuesAndHandlersInFormElements(formName="+formName+", data="+data+")");

	// find the form
	var form = config.macros.formTiddler.findForm(formName);
	if (!form) {
		return;
	}

	try {
		var elems = form.elements;
		for (var i = 0; i < elems.length; i++) {
			var c = elems[i];
		
			var setter = config.macros.formTiddler.setter[c.type];
			if (setter) {
				var value = data[c.name];
				if (value != null) {
					setter(c, value);
				}
				c.onchange = onFormTiddlerChange;
			} else {
				config.macros.formTiddler.displayFormTiddlerError("No setter defined for INPUT element of type '"+c.type+"'. (Element '"+c.name+"' in form '"+formName+"')");
			}
		}
	} catch(e) {
		config.macros.formTiddler.displayFormTiddlerError("Error when updating elements with new formData. "+e);
	}
}


// Internal.
//
// @return [may be null]
//
config.macros.formTiddler.findForm = function(formName) {
	// We must manually iterate through the document's forms, since
	// IE does not support the "document[formName]" approach

	var forms = window.document.forms;
	for (var i = 0; i < forms.length; i++) {
		var form = forms[i];
		if (form.name == formName) {
			return form;
		}
	}

	return null;
}


// Internal.
//
config.macros.formTiddler.setSelectOneValue = function(element,value) {
	var n = element.options.length;
	for (var i = 0; i < n; i++) {
		element.options[i].selected = abego.getOptionsValue(element,i) == value;
	}
}

// Internal.
//
config.macros.formTiddler.setSelectMultipleValue = function(element,value) {
	var values = {};
	for (var i = 0; i < value.length; i++) {
		values[value[i]] = true;
	}
	
	var n = element.length;
	for (var i = 0; i < n; i++) {
		element.options[i].selected = !(!values[abego.getOptionsValue(element,i)]);
	}
}

// Internal.
//
config.macros.formTiddler.getSelectOneValue = function(element) {
	var i = element.selectedIndex;
	return (i >= 0) ? abego.getOptionsValue(element,i) : null;
}

// Internal.
//
config.macros.formTiddler.getSelectMultipleValue = function(element) {
	var values = [];
	var n = element.length;
	for (var i = 0; i < n; i++) {
		if (element.options[i].selected) {
			values.push(abego.getOptionsValue(element,i));
		}
	}
	return values;
}



// -------------------------------------------------------------------------------
// Helpers 
// -------------------------------------------------------------------------------

// Internal.
//
config.macros.formTiddler.checkForExtensions = function(place,macroName) {
	if (!version.extensions.DataTiddlerPlugin) {
		config.macros.formTiddler.createErrorElement(place, "<<" + macroName + ">> requires the DataTiddlerPlugin. (You can get it from http://tiddlywiki.abego-software.de/#DataTiddlerPlugin)");
		return false;
	}
	return true;
}

// Internal.
//
// Displays a trace message in the "TiddlyWiki" message pane.
// (used for debugging)
//
config.macros.formTiddler.trace = function(s) {
	displayMessage("Trace: "+s);
}

// Internal.
//
// Display some error message in the "TiddlyWiki" message pane.
//
config.macros.formTiddler.displayFormTiddlerError = function(s) {
	alert("FormTiddlerPlugin Error: "+s);
}

// Internal.
//
// Creates an element that holds an error message
// 
config.macros.formTiddler.createErrorElement = function(place, message) {
	return createTiddlyElement(place,"span",null,"formTiddlerError",message);
}

// Internal.
//
// Returns the name of the tiddler containing the given element.
// 
config.macros.formTiddler.getContainingTiddlerName = function(element) {
	return story.findContainingTiddler(element).id.substr(7);
}

// -------------------------------------------------------------------------------
// Event Handlers 
// -------------------------------------------------------------------------------

// This function must be called by the INPUT elements whenever their
// data changes. Typically this is done through an "onChange" handler.
//
function onFormTiddlerChange (e) {
	// config.macros.formTiddler.trace("onFormTiddlerChange "+e);

	if (!e) var e = window.event;

	var target = resolveTarget(e);
	var tiddlerName = config.macros.formTiddler.getContainingTiddlerName(target);
	var getter = config.macros.formTiddler.getter[target.type];
	if (getter) {
		var value = getter(target);
		DataTiddler.setData(tiddlerName, target.name, value);
	} else {
		config.macros.formTiddler.displayFormTiddlerError("No getter defined for INPUT element of type '"+target.type+"'. (Element '"+target.name+"' used in tiddler '"+tiddlerName+"')");
	}
}

// ensure that the function can be used in HTML event handler
window.onFormTiddlerChange = onFormTiddlerChange;


// -------------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// -------------------------------------------------------------------------------

setStylesheet(
	".formTiddlerError{color: #ffffff;background-color: #880000;}",
	"formTiddler");


//============================================================================
// checkForDataTiddlerPlugin Macro
//============================================================================

config.macros.checkForDataTiddlerPlugin = {
	// Standard Properties
	label: "checkForDataTiddlerPlugin",
	version: {major: 1, minor: 0, revision: 0, date: new Date(2005, 12, 14)},
	prompt: "Check if the DataTiddlerPlugin exists"
}

config.macros.checkForDataTiddlerPlugin.handler = function(place,macroName,params) {
	config.macros.formTiddler.checkForExtensions(place, config.macros.formTiddler.label);
}



//============================================================================
// newTiddlerWithForm Macro
//============================================================================

config.macros.newTiddlerWithForm = {
	// Standard Properties
	label: "newTiddlerWithForm",
	version: {major: 1, minor: 0, revision: 1, date: new Date(2006, 1, 6)},
	prompt: "Creates a new Tiddler with a <<formTiddler ...>> macro"
}

config.macros.newTiddlerWithForm.handler = function(place,macroName,params) {
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params

	// get the name of the form template tiddler
	var formTemplateName = undefined;
	if (i < params.length) {
		formTemplateName = params[i];
		i++;
	}

	if (!formTemplateName) {
		config.macros.formTiddler.createErrorElement(place, "No form template specified in <<" + macroName + ">>.");
		return;
	}

	// get the button label
	var buttonLabel = undefined;
	if (i < params.length) {
		buttonLabel = params[i];
		i++;
	}

	if (!buttonLabel) {
		config.macros.formTiddler.createErrorElement(place, "No button label specified in <<" + macroName + ">>.");
		return;
	}

	// get the (optional) tiddlerName script and "askUser"
	var tiddlerNameScript = undefined;
	var askUser = false;
	if (i < params.length) {
		tiddlerNameScript = params[i];
		i++;

		if (i < params.length && params[i] == "askUser") {
			askUser = true;
			i++;
		}
	}

	// --- Processing ------------------------------------------

	if(!readOnly) {
		var onClick = function() {
			var tiddlerName;
			if (tiddlerNameScript) {
				try {
					tiddlerName = eval(tiddlerNameScript);
				} catch (ex) {
				}
			}
			if (!tiddlerName || askUser) {
				tiddlerName = prompt("Please specify a tiddler name.", askUser ? tiddlerName : "");
			}
			while (tiddlerName && store.getTiddler(tiddlerName)) {
				tiddlerName = prompt("A tiddler named '"+tiddlerName+"' already exists.\n\n"+"Please specify a tiddler name.", tiddlerName);
			}

			// tiddlerName is either null (user canceled) or a name that is not yet in the store.
			if (tiddlerName) {
				var body = "<<formTiddler [["+formTemplateName+"]]>>";
				var tags = [];
				store.saveTiddler(tiddlerName,tiddlerName,body,config.options.txtUserName,new Date(),tags);
				story.displayTiddler(null,tiddlerName,1);
			}
		}

		createTiddlyButton(place,buttonLabel,buttonLabel,onClick);
    }
}

//}}}


/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/
!![[1. Espaces et classes|Foucault, M (1963) - ch.01]]
La médecine des espèces: classification des maladies.
<data>{"nom":"Foucault","prénom":"Michel","initiales":"M","titrelivre":"Naissance de la clinique","datepublication":"1963","numérochapitre":"numéro","titrechapitre":"titre du chapitre"}</data>
!![[2. Une conscience politique|Foucault, M (1963) - ch.02]]
Dimension sociale, populationnelle de la maladie (épidémies...)
<data>{"nom":"Foucault","prénom":"Michel","initiales":"M","titrelivre":"Naissance de la clinique","datepublication":"1963","numérochapitre":"numéro","titrechapitre":"titre du chapitre"}</data>
!![[3. Le champ libre|Foucault, M (1963) - ch.03]]
Réorganisation de la formation médicale avec la Révolution.
<data>{"nom":"Foucault","prénom":"Michel","initiales":"M","titrelivre":"Naissance de la clinique","datepublication":"1963","numérochapitre":"numéro","titrechapitre":"titre du chapitre"}</data>

!![[4. Vieillesse de la clinique|Foucault, M (1963) - ch.04]]
Les premières cliniques
<data>{"nom":"Foucault","prénom":"Michel","initiales":"M","titrelivre":"Naissance de la clinique","datepublication":"1963","villeédition":"Paris","noméditeur":"PUF","dateédition":"2005 (7° éd.)","pagescitation":"51"}</data>
<<tiddler Chapitre>><<tiddler RéférenceLivre>>
!![[05. La leçon des hôpitaux|Foucault, M (1963) - ch.05]]
<data>{"nom":"Foucault","prénom":"Michel","initiales":"M","titrelivre":"Naissance de la clinique","datepublication":"1963","villeédition":"Paris","noméditeur":"PUF","dateédition":"2005 (7° éd.)","pagescitation":"51","numérochapitre":"05","titrechapitre":"La leçon des hôpitaux"}</data>


{{floatleft{[img[http://ecx.images-amazon.com/images/I/31b5KnMhFQL._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU08_AA240_SH20_.jpg][http://www.amazon.fr/gp/reader/2130536395/ref=sib_dp_pt/171-9052646-6496247#reader-link]]}}}
++++![Résumé]
//Naissance de la clinique// est une histoire du regard médical et de ses transformations avec l'apparition de la clinique. C'est une histoire de la constitution du sujet, le malade, tel qu'il peut devenir objet de connaissance. C'est donc une histoire de l'[[objectivité|Objectivité]] médicale.
===

+++![Chapitres]
<<tiddler [[Foucault, M (1963) - ch.01]]>>
<<tiddler [[Foucault, M (1963) - ch.02]]>>
<<tiddler [[Foucault, M (1963) - ch.03]]>>
<<tiddler [[Foucault, M (1963) - ch.04]]>>
<<tiddler [[Foucault, M (1963) - ch.05]]>>
<<tiddler [[Foucault, M (1963) - ch.06]]>>
<<newChapterHere>>
===

<<tiddler RéférenceLivre>>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere label:"créer">>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Foucault","prénom":"Michel","initiales":"M","titrelivre":"Naissance de la clinique","datepublication":"1963","villeédition":"Paris","noméditeur":"PUF","dateédition":"2005 (7° éd.)","pagescitation":"51","numérochapitre":"05","titrechapitre":"La leçon des hôpitaux","isLivre":true}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!objectivitéRévélée
<part objectivitéRévélée> "[...] L'idée d'un domaine transparent, sans cloisonnement, ouvert de fond en comble à un regard armé pourtant de ses privilèges et de sa compétence, dissipait ses propres difficultés dans les pouvoirs prêtés à la liberté: en elle, ''la maladie devait formuler d'elle-même une vérité inaltérée et offerte, sans trouble, au regard du médecin'' [...]" ([[Foucault, M 1963:51]]) </part>
<data>{"nom":"Foucault","prénom":"Michel","initiales":"M","titrelivre":"Naissance de la clinique","datepublication":"1963","villeédition":"Paris","noméditeur":"PUF","dateédition":"2005 (7° éd.)","pagescitation":"51"}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!objectivitéDuRegard
<part objectivitéDuRegard> "Le regard [clinique] n'est plus réducteur, mais fondateur de l'individu dans sa qualité irréductible. Et par là il devient possible d'organiser autour de lui un langage rationnel. ''L'//objet// du discours peut aussi bien être un //sujet//, sans que les figures de l'objectivité soient pour autant altérées.'' C'est cette réorganisation //formelle et en profondeur//, plus que l'abandon des théories et des vieux systèmes, qui a ouvert la possibilité d'une //expérience clinique//; elle a levé le vieil interdit aristotélicien: ''on pourra enfin tenir sur l'individu un discours à structure scientifique''." ([[Foucault, M 1963:x]]) </part>

<data>{"nom":"Foucault","prénom":"Michel","initiales":"M","titrelivre":"Naissance de la clinique","datepublication":"1963","villeédition":"Paris","noméditeur":"PUF","dateédition":"2005 (7° éd.)","pagescitation":"x"}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!herméneutique
<part herméneutique> "[...] commenter, c'est admettre par définition un excès du signifié sur le signifiant, un reste nécessairement non formulé de la pensée que le langage a laissé dans l'ombre, résidu qui en est l'essence elle-même, poussée hors de son secret; mais commenter suppose aussi que ce non-parlé dort dans la parole, et que, par une surabondance propre au signifiant, on peut en l'interrogeant faire parler un contenu qui n'était pas explicitement signifié. [...]" ([[Foucault, M 1963:xii]]) </part>

<data>{"nom":"Foucault","prénom":"Michel","initiales":"M","titrelivre":"Naissance de la clinique","datepublication":"1963","villeédition":"Paris","noméditeur":"PUF","dateédition":"2005 (7° éd.)","pagescitation":"xii"}</data>
{{floatleft{[img(120px,auto)[Michel Foucault, wikipedia|./imagesWiki/MichelFoucault.jpeg][http://fr.wikipedia.org/wiki/Michel_Foucault]]}}}

!Publications
<<forEachTiddler
	where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Foucault","prénom":"Michel","initiales":"M","titrelivre":"Naissance de la clinique","datepublication":"1963","villeédition":"Paris","noméditeur":"PUF","dateédition":"2005 (7° éd.)"}</data>
/***
|Name|FramedLinksPlugin|
|Source|http://www.TiddlyTools.com/#FramedLinksPlugin|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|createExternalLink|
|Options|##Configuration|
|Description|clicking an external link opens an IFRAME following the link instead of opening a new tab/window|
This plugin causes clicks on external links to be rendered into inline frames (~IFRAMEs) instead of opening them in new browser tabs/windows.
!!!!!Usage
<<<
Just place an external link into your tiddler content using standard TiddlyWiki syntax.  When the {{{chkFramedLinks}}} checkbox is enabled or a tiddler is tagged with 'framedLinks' (see Configuration section, below), an IFRAME will be created dynamically whenever you click the external link.  Clicking on the link again removes the IFRAME.  You can hold down a modifier key (shift, control, or alt) while clicking a specific link to ''temporarily'' bypass the plugin-enhanced IFRAME handling and use the standard link handling behavior for that link.
<<<
!!!!!Configuration
<<<
<<option chkFramedLinks>> display inline frames for all external links
&nbsp; &nbsp; {{{usage: <<option chkFramedLinks>>}}}
<<option chkFramedLinksTag>> display inline frames for external links in tiddlers tagged with: <<option txtFramedLinksTag>> 
&nbsp; &nbsp; {{{usage: <<option chkFramedLinksTag>> and <<option txtFramedLinksTag>>}}}
IFRAME size (CSS units: %, em, px, cm, in) - width: <<option txtFrameWidth>> height: <<option txtFrameHeight>>
&nbsp; &nbsp; {{{usage: <<option txtFrameWidth>> <<option txtFrameHeight>>}}}
<<<
!!!!!Examples
<<<
Try these links:
*http://www.TiddlyWiki.com
*http://www.TiddlyTools.com
*http://groups.google.com/group/TiddlyWiki/topics
<<<
!!!!!Revisions
<<<
2008.09.13 [1.1.0] added support to selectively enable embedded IFRAMEs if the containing tiddler is tagged with 'framedLinks'
2007.11.29 [1.0.5] added slider animation and improved CSS handling for IFRAME height/width to maximize display area
2007.11.29 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.FramedLinksPlugin= {major: 1, minor: 1, revision: 0, date: new Date(2008,9,13)};

var co=config.options; // abbreviation
if (co.chkFramedLinks==undefined) co.chkFramedLinks=false;
if (co.chkFramedLinksTag==undefined) co.chkFramedLinksTag=true;
if (co.txtFramedLinksTag==undefined) co.txtFramedLinksTag="framedLinks";
if (co.txtFrameWidth==undefined) co.txtFrameWidth="100%";
if (co.txtFrameHeight==undefined) co.txtFrameHeight="80%";

window.framedLinks_createExternalLink=createExternalLink;
window.createExternalLink=function(place,url)
{
	var link=this.framedLinks_createExternalLink.apply(this,arguments);
	link.onclick=function(ev) { var e=ev?ev:window.event;
		var co=config.options; // abbreviation
		var here=story.findContainingTiddler(this);
		var enabled=co.chkFramedLinks || co.chkFramedLinksTag && here
			&& store.getTiddler(here.getAttribute("tiddler")).isTagged(co.txtFramedLinksTag);
		if (!enabled || e.ctrlKey || e.shiftKey || e.altKey) return; // BYPASS
		var p=this.parentNode; 
		var f=this.nextSibling?this.nextSibling.firstChild:null; // get the IFRAME... maybe...
		var w=co.txtFrameWidth; if (!w || !w.length) w="100%";
		var h=co.txtFrameHeight; if (!h || !h.length) h="80%";
		if (h.indexOf("%")) h=(findWindowHeight()*h.replace(/%/,"")/100)+"px"; // calc height as % of window
		var showing=f && f.nodeName.toUpperCase()=="IFRAME"; // does IFRAME really exist?
		var stretchCell=p.nodeName.toUpperCase()=="TD" && w.indexOf("%")!=-1 && w.replace(/%/,"")>=100;
		if (!showing) { // create an iframe
			link.style.display="block"; // force IFRAME onto line following link
			if (stretchCell) { p.setAttribute("savedWidth",p.style.width); p.style.width="100%"; } // adjust TD so IFRAME stretches
			var wrapper=createTiddlyElement(null,"span"); // wrapper for slider animation
			wrapper.setAttribute("url",this.href); // for async loading of frame after animation completes
			var f=createTiddlyElement(wrapper,"iframe"); // create IFRAME
			f.style.backgroundColor="#fff"; f.style.width=w; f.style.height=h;
			p.insertBefore(wrapper,this.nextSibling);
			function loadURL(wrapper) { var f=wrapper.firstChild; var url=wrapper.getAttribute("url");
				var d=f.contentDocument?f.contentDocument:(f.contentWindow?f.contentWindow.document:f.document);
				d.open(); d.writeln("<html>connecting to "+url+"</html>"); d.close();
				try { f.src=url; } // if the iframe can't handle the href
				catch(e) { alert(e.description?e.description:e.toString()); } // ... then report the error
				window.scrollTo(0,ensureVisible(wrapper));
			}
			if (!co.chkAnimate) loadURL(wrapper);
			else {
				var morph=new Slider(wrapper,true);
				morph.callback=loadURL;
				morph.properties.push({style: 'width', start: 0, end: 100, template: '%0%'});
				anim.startAnimating(morph);
			}
		} else { // remove iframe
			link.style.display="inline"; // restore link style
			if (stretchCell) p.style.width=p.getAttribute("savedWidth"); // restore previous width of TD
			if (!co.chkAnimate) p.removeChild(f.parentNode);
			else {
				var morph=new Slider(f.parentNode,false,false,"all");
				morph.properties.push({style: 'width', start: 100, end: 0, template: '%0%'});
				anim.startAnimating(morph);
			}
		}
		e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); return false;
	}
	return link;
}
//}}}
/***
|''Name:''|FrenchTranslationPlugin-TW240 |
|''Description:''|Translation of TiddlyWiki 2.4.0 into French |
|''Author:''|ocalTW ( FrenchTranslationPlugin (at) ocalTW (dot) com ) |
|''Source:''|http://www.tiddlywiki.fr#FrenchTranslationPlugin-TW240 |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/association/locales/core/fr/locale.fr.js (to be posted) |
|''Version:''|''2.4.0'' |
|''Date:''|May 10, 2008 |
|''History:''|Translations of v2.1.3 by Jacques Turbé, v2.2 by BidiX, v2.3 by ocalTW |
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]] |
***/
//{{{

//--
//-- Translateable strings
//--
// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone
if (config.options.txtUserName == 'YourName') // do not translate this line, but do translate the next line
 merge(config.options,{txtUserName: "VotreNom"});

merge(config.tasks,{
 save: {text: "sauvegarder", tooltip: "Sauvegarde vos modifications dans ce bloc-notes TiddlyWiki", action: saveChanges},
 sync: {text: "synchroniser", tooltip: "Synchronise les modifications avec d'autres fichiers ou d'autres serveurs TiddlyWiki", content: '<<sync>>'},
 importTask: {text: "importer", tooltip: "Importe des éléments et des extensions depuis d'autres fichiers ou d'autres serveurs TiddlyWiki", content: '<<importTiddlers>>'},
 tweak: {text: "réglages", tooltip: "Adapte l'apparence et le comportement de ce bloc-notes TiddlyWiki", content: '<<options>>'},
 upgrade: {text: "mise à jour", tooltip: "Met à jour le code du noyau TiddlyWiki", content: '<<upgrade>>'},
 plugins: {text: "extensions", tooltip: "Gère les extensions déjà installées", content: '<<plugins>>'}
 });

// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
 txtUserName: "Nom d'utilisateur qui signe les modifications", 
 chkRegExpSearch: "Activer les expressions régulières pour les recherches", 
 chkCaseSensitiveSearch: "La recherche est sensible à la casse des mots", 
 chkIncrementalSearch: "Recherche incremental en mode pas-à-pas",
 chkAnimate: "Activer les animations", 
 chkSaveBackups: "Générer un fichier backup lors de l'enregistrement des modifications", 
 chkAutoSave: "Enregistrer automatiquement les modifications", 
 chkGenerateAnRssFeed: "Générer un flux RSS lors de l'enregistrement des modifications", 
 chkSaveEmptyTemplate: "Générer un fichier de démarrage initial 'empty.html' lors de l'enregistrement des modifications", 
 chkOpenInNewWindow: "Ouvrir un lien externe dans une nouvelle fenêtre", 
 chkToggleLinks: "Fermer les éléments lorsque l'on clique sur des liens qu'ils contiennent", 
 chkHttpReadOnly: "Masquer les caractéristiques d'édition lorsqu'il est accédé par HTTP", 
 chkForceMinorUpdate: "Ne modifier ni le nom de l'utilisateur ni la date lors de l'édition des éléments", 
 chkConfirmDelete: "Demander une confirmation lors d'une suppression d'un élément", 
 chkInsertTabs: "Utiliser la touche 'tab' pour insérer une tabulation au lieu de changer de champs", 
 txtBackupFolder: "Nom du dossier dans lequel seront conservés les backups", 
 txtMaxEditRows: "Nombre maximum de lignes dans les zones d'édition", 
 txtFileSystemCharSet: "Jeux de caractères à utiliser lors de l'enregistrement des modifications (uniquement pour Firefox/Mozilla)"});

merge(config.messages,{
 customConfigError: "Problèmes rencontrés lors du chargement d'extensions. Consulter le 'PluginManager' (menu 'extensions') pour les détails", 
 pluginError: "Erreur : %0", 
 pluginDisabled: "L'extension a été désactivée par positionnement du mot-clé 'systemConfigDisable'", 
 pluginForced: "L'exécution a été forcée à cause du mot-clé 'systemConfigForce'", 
 pluginVersionError: "L'extension a été désactivée car elle nécessite une version plus récente de TiddlyWiki", 
 nothingSelected: "Aucune sélection faite. Il vous faut d'abord sélectionner au moins un item", 
 savedSnapshotError: "Ce bloc-notes TiddlyWiki ne semble pas conforme. Reportez-vous à http://www.tiddlywiki.com/#DownloadSoftware ", 
 subtitleUnknown: "(inconnu)", 
 undefinedTiddlerToolTip: "L'élément '%0' n'est pas encore créé.",
 shadowedTiddlerToolTip: "L'élément '%0' n'est pas encore créé, mais a un contenu par défaut.", 
 tiddlerLinkTooltip: "%0 - %1, %2", 
 externalLinkTooltip: "Lien externe vers %0", 
 noTags: "Il n'y a pas d'éléments avec mot-clés.", 
 notFileUrlError: "Vous devez sauvegarder ce bloc-notes TiddlyWiki dans un fichier avant de pouvoir enregistrer vos modifications", 
 cantSaveError: "Sauvegarde impossible : \n- soit votre navigateur ne permet pas de sauvegarder les sauvegardes (FireFox, Internet Explorer, Safari et Opera fonctionnent s'ils sont configurés corectement),\n- soit le chemin d'accès à votre fichier contient des caractères invalides\n- soit le fichier de ce bloc-notes TiddlyWiki a été déplacé ou renommé", 
 invalidFileError: "Le fichier '%0' choisi ne semble pas être un TiddlyWiki valide", 
 backupSaved: "Sauvegarde effectuée", 
 backupFailed: "Echec de l'enregistrement du fichier de backup", 
 rssSaved: "Flux RSS sauvegardé", 
 rssFailed: "Echec de l'enregistrement du fichier de flux RSS", 
 emptySaved: "Fichier de démarrage initial 'empty.html' enregistré", 
 emptyFailed: "Echec de l'enregistrement du fichier de démarrage initial 'empty.html'", 
 mainSaved: "Fichier principal du bloc-notes TiddlyWiki enregistré", 
 mainFailed: "Echec de l'enregistrement du fichier principal TiddlyWiki. Vos modifications n'ont pas été enregistrées",
 macroError: "Erreur dans la macro <<\%0>>", 
 macroErrorDetails: "Erreur d'exécution de la macro <<\%0>>:\n%1", 
 missingMacro: "Macro non trouvée", 
 overwriteWarning: "Il y a déjà un élément nommé '%0'. Confirmez pour le remplacer", 
 unsavedChangesWarning: "ATTENTION! Les dernières modifications de ce bloc-notes TiddlyWiki n'ont pas été enregistrées.\n\nOK pour les enregistrer\nANNULER pour les abandonner", 
 confirmExit: "--------------------------------\n\nCertaines modifications n'ont pas été enregistrées dans ce bloc-notes TiddlyWiki.\n\n Si vous quittez maintenant vous les perdrez définitievement.\n\n--------------------------------", 
 saveInstructions: "Sauvegarder", 
 unsupportedTWFormat: "Format de TiddlyWiki non supporté '%0'", 
 tiddlerSaveError: "Erreur lors de l'enregistrement de l'élément '%0'", 
 tiddlerLoadError: "Erreur lors du chargement de l'élément '%0'", 
 wrongSaveFormat: "Impossible d'enregistrer avec le format '%0'. Le format standard est utilisé pour sauvegarder.", 
 invalidFieldName: "Nom de champ invalide %0", 
 fieldCannotBeChanged: "Le champ '%0' ne peut être changé", 
 loadingMissingTiddler: "Tentative de récupération de l'élément '%0' à partir du serveur '%1' server à :\n\n'%2' dans l'espace de travail '%3'",
 upgradeDone: "ZZ La mise à jour en version %0 est maintenant terminée\n\nCliquez 'OK' pour recharger le TiddlyWiki que vous venez de mettre à jour"});

merge(config.messages.messageClose,{
 text: "fermer",
 tooltip: "fermer cette zone de messages"});

config.messages.backstage = {
 open: {text: "barre de services", tooltip: "Ouvre la barre de services pour effectuer des tâches de rédaction et d'édition"},
 close: {text: "fermer", tooltip: "Fermer la barre de services"},
 prompt: "services : ",
 decal: {
  edit: {text: "éditer", tooltip: "Editer l'élément '%0'"}
 }
};

config.messages.listView = {
 tiddlerTooltip: "Cliquer pour une vue complète de cet élément",
 previewUnavailable: "(aperçu non disponible)"
};

config.messages.dates.months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre","décembre"];
config.messages.dates.days = ["dimanche", "lundi","mardi", "mercredi", "jeudi", "vendredi", "samedi"]; 
config.messages.dates.shortDays = ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."]; 
// suffixes pour les dates, par exemple "1er",  
config.messages.dates.daySuffixes = ["er","","","","","","","","","", 
  "","","","","","","","","","", 
  "","","","","","","","","","", 
  ""];
config.messages.dates.am = "matin";
config.messages.dates.pm = "après-midi";

merge(config.messages.tiddlerPopup,{
 });

merge(config.views.wikified.tag,{
 labelNoTags: "pas de mot-clé",
 labelTags: "Mot-clé : ",
 openTag: "Ouvrir le mot-clé '%0'",
 tooltip: "Afficher les éléments ayant pour mot-clé '%0'",
 openAllText: "Tout ouvrir",
 openAllTooltip: "Ouvrir tous les éléments avec ce mot-clé",
 popupNone: "Pas d'autres éléments ayant pour mot-clé '%0'"});

merge(config.views.wikified,{
 defaultText: "L'élément '%0' n'a pas encore été créé. Double-cliquer pour le créer.",
 defaultModifier: "(manquant)",
 shadowModifier: "(élément masqué installé par défaut)",
 dateFormat: "DD MMM YYYY", // Utilisé pour changer le format de la date (ici : "YYYY MMM DD"), ne pas changer les lettres D (jour), M (mois) ou Y (année)
 createdPrompt: "créé le"}); 

merge(config.views.editor,{
 tagPrompt: "Mettre un espace entre chaque mot-clé, si nécessaire [[entre doubles crochets]], ou associer un mot-clé existant",
 defaultText: "Entrer le texte de '%0'"});

merge(config.views.editor.tagChooser,{
 text: "mot-clé",
 tooltip: "Sélectionner les mot-clés existants à associer à cet élément",
 popupNone: "Aucun mot-clé n'a encore été défini",
 tagTooltip: "Associer le mot-clé '%0'"});

merge(config.messages,{
 sizeTemplates:
 [
 {unit: 1024*1024*1024, template: "%0\u00a0GB"},
 {unit: 1024*1024, template: "%0\u00a0MB"},
 {unit: 1024, template: "%0\u00a0KB"},
 {unit: 1, template: "%0\u00a0B"}
 ]});

merge(config.macros.search,{
 label: "chercher",
 prompt: "Rechercher dans ce bloc-notes TiddlyWiki",
 accessKey: "F",
 successMsg: "%0 éléments répondent au critère %1",
 failureMsg: "Aucun élément ne répond au critère %0"});

merge(config.macros.tagging,{
 label: "éléments ayant pour mot-clé : ",
 labelNotTag: "pas de mot-clé",
 tooltip: "Afficher les éléments ayant pour mot-clé '%0'"});

merge(config.macros.timeline,{
 dateFormat: "DD MMM YYYY"}); // Utilisé pour changer le format de la date (ici : "YYYY MMM DD"), ne pas changer les lettres D (jour), M (mois) ou Y (année)

merge(config.macros.allTags,{
 tooltip: "Afficher les éléments ayant pour mot-clé '%0'",
 noTags: "Aucun élément n'a de mot-clé"});
config.macros.list.all.prompt = "Tous les éléments classés par ordre alphabétique";
config.macros.list.missing.prompt = "Eléments référencés par un lien mais qui ne sont pas non créés";
config.macros.list.orphans.prompt = "Eléments orphelins qui ne pas référencés par un lien dans d'autres éléments";
config.macros.list.shadowed.prompt = "Eléments masqués avec toujours leur contenu initial du modèle de référence TiddlyWiki";
config.macros.list.touched.prompt = "Eléments ayant été modifiés localement";

merge(config.macros.closeAll,{
 label: "tout fermer",
 prompt: "Fermer tous les éléments affichés (sauf ceux en cours d'édition)"});

merge(config.macros.permaview,{
 label: "permalien",
 prompt: "Lien vers l'URL qui référence la page avec tous les éléments actuellement affichés"});

merge(config.macros.saveChanges,{
 label: "sauvegarder",
 prompt: "Sauvegarde tous les éléments du bloc-notes TiddlyWiki",
 accessKey: "S"});

merge(config.macros.newTiddler,{
 label: "nouvel élément",
 prompt: "Crée un nouvel élément",
 title: "Nouvel Elément",
 accessKey: "N"});

merge(config.macros.newJournal,{
 label: "nouveau journal",
 prompt: "Crée un nouvel élément avec la date courante",
 accessKey: "J"});

merge(config.macros.options,{
 wizardTitle: "Réglage des options avancées",
 step1Title: "Ces options sont enregistrées dans des cookies de votre navigateur",
 step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Afficher les options inconnues</input>",
 unknownDescription: "//(inconnu)//",
 listViewTemplate: {
  columns: [
   {name: 'Option', field: 'option', title: "Option", type: 'String'},
   {name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
   {name: 'Name', field: 'name', title: "Nom", type: 'String'}
   ],
  rowClasses: [
   {className: 'lowlight', field: 'lowlight'}
   ]}
 });

merge(config.macros.plugins,{
 wizardTitle: "Gestionnaire des extensions",
 step1Title: "Extensions actuellement chargées",
 step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
 skippedText: "(Cette extension n'a pas été éxecutée car elle a été ajoutée après le démarrage de ce bloc-notes TiddlyWiki)",
 noPluginText: "Aucune extension n'est installée",
 confirmDeleteText: "Etes vous sûr(e) de vouloir supprimer ces extensions :\n\n%0",
 removeLabel: "Supprimer le mot-clé 'systemConfig'",
 removePrompt: "Supprime le mot-clé 'systemConfig'",
 deleteLabel: "supprimer",
 deletePrompt: "Suppression définitive de ces éléments",
 listViewTemplate: {
  columns: [
   {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
   {name: 'Tiddler', field: 'tiddler', title: "Elément", type: 'Tiddler'},
   {name: 'Size', field: 'size', tiddlerLink: 'size', title: "Taille", type: 'Size'},
   {name: 'Forced', field: 'forced', title: "Exécution forcée", tag: 'systemConfigForce', type: 'TagCheckbox'},
   {name: 'Disabled', field: 'disabled', title: "Désactivé", tag: 'systemConfigDisable', type: 'TagCheckbox'},
   {name: 'Executed', field: 'executed', title: "Chargé", type: 'Boolean', trueText: "Yes", falseText: "No"},
   {name: 'Startup Time', field: 'startupTime', title: "Durée de lancement", type: 'String'},
   {name: 'Error', field: 'error', title: "Etat", type: 'Boolean', trueText: "Error", falseText: "OK"},
   {name: 'Log', field: 'log', title: "Log", type: 'StringList'}
   ],
  rowClasses: [
   {className: 'error', field: 'error'},
   {className: 'warning', field: 'warning'}
   ]}
 });

merge(config.macros.toolbar,{
 moreLabel: "(suite)",
 morePrompt: "Affichage de commandes supplémentaires"
 });

merge(config.macros.refreshDisplay,{
 label: "réafficher",
 prompt: "Réaffichage du contenu complet du bloc-notes TiddlyWiki"
 });

merge(config.macros.importTiddlers,{
 readOnlyWarning: "Il n'est pas possible d'importer dans un bloc-notes TiddlyWiki qui n'est qu'en lecture seule. Essayez de l'ouvrir en local à partir d'une URL 'file://'",
 wizardTitle: "Importer des éléments depuis un autre fichier ou un serveur",
 step1Title: "Etape 1 : localiser le serveur ou le ficher du bloc-notes TiddlyWiki à importer",
 step1Html: "Spécifier le type du serveur : <select name='selTypes'><option value=''>Choisir ...</option></select><br>Indiquer l'URL ou le chemin : <input type='text' size=50 name='txtPath'><br>... ou rechercher un fichier en local : <input type='file' size=50 name='txtBrowse'><br><hr>... ou selectionner une source pré-définie : <select name='selFeeds'><option value=''>Choisir ...</option></select>",
 openLabel: "ouvrir",
 openPrompt: "Ouvre la connexion vers ce fichier ou ce serveur",
 openError: "Il y a des erreurs lors de l'accès au fichier contenant le bloc-notes TiddlyWiki",
 statusOpenHost: "Hôte en cours d'ouverture",
 statusGetWorkspaceList: "Obtenir la liste des espaces de travail disponibles",
 step2Title: "Etape 2 : choisir l'espace de travail",
 step2Html: "Entrer le nom d'un espace de travail : <input type='text' size=50 name='txtWorkspace'><br>... ou selectionner un espace de travail : <select name='selWorkspace'><option value=''>Choisir ...</option></select>",
 cancelLabel: "annuler",
 cancelPrompt: "Annule cette importation",
 statusOpenWorkspace: "Ouverture de l'espace de travail",
 statusGetTiddlerList: "Obtenir la liste des éléments disponibles",
 errorGettingTiddlerList: "Erreur lors de la récupération de la liste des éléments, cliquer sur 'Annuler' pour recommencer l'opération",
 step3Title: "Etape 3: Choisir les éléments à importer",
 step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Conserver ces éléments liés à ce serveur pour pouvoir synchroniser avec les changements ultérieurs</input><br><input type='checkbox' name='chkSave'>Enregistrer les détails de ce serveur dans un élément 'systemServer' nommé :</input> <input type='text' size=25 name='txtSaveTiddler'>",
 importLabel: "importer",
 importPrompt: "Importe ces éléments",
 confirmOverwriteText: "Etes-vous sûr de vouloir remplacer ces éléments :\n\n%0",
 step4Title: "Etape 4 : Importe %0 élément(s)",
 step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
 doneLabel: "fait",
 donePrompt: "Ferme cet assistant",
 statusDoingImport: "Importe ces éléments",
 statusDoneImport: "Tous les éléments ont été importés",
 systemServerNamePattern: "%2 sur %1",
 systemServerNamePatternNoWorkspace: "%1",
 confirmOverwriteSaveTiddler: "Cet élément '%0' existe déjà. Cliquer sur 'OK' pour le remplacer avec les caractéristiques de ce serveur ou 'Annule' pour les conserver en l'état",
 serverSaveTemplate: "|''Type :''|%0|\n|''URL :''|%1|\n|''Espace de travail :''|%2|\n\nCet élément avait été automatiquement créé pour enregistrer les détails de ce serveur",
 serverSaveModifier: "(Système)",
 listViewTemplate: {
  columns: [
   {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
   {name: 'Tiddler', field: 'tiddler', title: "Elément", type: 'Tiddler'},
   {name: 'Size', field: 'size', tiddlerLink: 'size', title: "Taille", type: 'Size'},
   {name: 'Tags', field: 'tags', title: "Mot-clé", type: 'Tags'}
   ],
  rowClasses: [
   ]}
 });

merge(config.macros.upgrade,{
	wizardTitle: "Mettre à jour le code du noyau TiddlyWiki",
	step1Title: "Mettre à jour ou réparer ce bloc-notes TiddlyWiki avant de lancer le processus de mise à jour",
	step1Html: "Vous allez démarrer la mise à jour du code du noyau TiddlyWiki (depuis <a href='%0' class='externalLink' target='_blank'>%1</a>). Le contenu de votre document sera préservé lors de cette mise à jour.<br><br>Il est important de savoir que des mises à jour du code du noyau ont par le passé, déjà eu pour effet de provoquer des effets de bords et des problèmes de compatibilités avec d'autres extensions (plugins). Si vous rencontrez des problèmes lors de cette mise à jour, consultez le site <a href='http://www.tiddlywiki.org/wiki/CoreUpgrades' class='externalLink' target='_blank'>http://www.tiddlywiki.org/wiki/CoreUpgrades</a>",
	errorCantUpgrade: "Impossible d'effectuer la mise à jour de ce bloc-notes TiddlyWiki. Vous ne pouvez effectuer des mises à jour que sur des bloc-notes TiddlyWiki stockés sur un disque local accessible en écriture",
	errorNotSaved: "Vous devez effectuer une sauvegarde de vos modifications avant de lancer le processus de mise à jour",
	step2Title: "Confirmer les détails du processus de mise à jour",
	step2Html_downgrade: "Vous êtes sur le point de faire un retour arrière vers TiddlyWiki version %0 depuis la version %1.<br><br>Faire un tel retour arrière vers une version précédente du code du noyau n'est pas recommandé.",
	step2Html_restore: "Il semble que ce bloc-notes TiddlyWiki utilise déjà la dernière version du code du noyau (%0).<br><br>Vous pouvez tout de même continuer à effectuer la mise à jour, afin de vous assurer que le code du noyau n'a été ni corrompu, ni endommagé",
	step2Html_upgrade: "Vous êtes sur le point de faire la mise à jour vers TiddlyWiki version %0 depuis la version %1",
	upgradeLabel: "mettre à jour",
	upgradePrompt: "Préparation du processus de mise à jour",
	statusPreparingBackup: "Préparation de la sauvegarde",
	statusSavingBackup: "Mise en sécurité du fichier de sauvegarde",
	errorSavingBackup: "Un problème a été rencontré lors de la mise en sécurité du fichier de sauvegarde",
	statusLoadingCore: "Chargement du code du noyau",
	errorLoadingCore: "Erreur lors du chargement du code du noyau",
	errorCoreFormat: "Erreur avec le nouveau code du noyau",
	statusSavingCore: "Sauvegarde du nouveau code du noyau",
	statusReloadingCore: "Rechargement du nouveau code du noyau",
	startLabel: "lancer",
	startPrompt: "Lancer le processus de mise à jour",
	cancelLabel: "annuler",
	cancelPrompt: "Annuler le processus de mise à jour",
	step3Title: "Mise à jour annulée",
	step3Html: "Vous avez annulé le processus de mise à jour"
	});

merge(config.macros.sync,{
 listViewTemplate: {
  columns: [
   {name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
   {name: 'Tiddler', field: 'tiddler', title: "Elément", type: 'Tiddler'},
   {name: 'Server Type', field: 'serverType', title: "Type de serveur", type: 'String'},
   {name: 'Server Host', field: 'serverHost', title: "Hôte serveur", type: 'String'},
   {name: 'Server Workspace', field: 'serverWorkspace', title: "Espace de travail du serveur", type: 'String'},
   {name: 'Status', field: 'status', title: "Etat de la synchronisation", type: 'String'},
   {name: 'Server URL', field: 'serverUrl', title: "URL du serveur", text: "View", type: 'Link'}
   ],
  rowClasses: [
   ],
  buttons: [
   {caption: "Synchronise ces éléments", name: 'sync'}
   ]},
 wizardTitle: "Synchronisation avec des serveurs externes et des fichiers",
 step1Title: "Choisir les éléments à synchroniser",
 step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
 syncLabel: "synchroniser",
 syncPrompt: "Synchronise ces éléments",
 hasChanged: "Modifié pendant la déconnection",
 hasNotChanged: "Non modifié pendant la déconnexion",
 syncStatusList: {
  none: {text: "...", color: "transparent"},
  changedServer: {text: "Modifié sur le serveur", color: '#80ff80'},
  changedLocally: {text: "Modifié pendant la déconnexion", color: '#80ff80'},
  changedBoth: {text: "Changé pendant la déconnexion et sur le serveur", color: '#ff8080'},
  notFound: {text: "Non trouvé sur le serveur", color: '#ffff80'},
  putToServer: {text: "Modifications enregistrées sur le serveur", color: '#ff80ff'},
  gotFromServer: {text: "Récupéré les modifications depuis le serveur", color: '#80ffff'}
  }
 });

merge(config.macros.annotations,{
 });

merge(config.commands.closeTiddler,{
 text: "X",
 tooltip: "Fermeture de cet élément"});

merge(config.commands.closeOthers,{
 text: "^",
 tooltip: "Fermeture de tous les autres éléments"});

merge(config.commands.editTiddler,{
 text: "éditer",
 tooltip: "Edition de cet élément",
 readOnlyText: "voir",
 readOnlyTooltip: "Affichage de la source de cet élément"});

merge(config.commands.saveTiddler,{
 text: "valider",
 tooltip: "Validation des modifications effectuées sur cet élément"});

merge(config.commands.cancelTiddler,{
 text: "annuler",
 tooltip: "Abandon des modifications effectuées sur cet élément",
 warning: "Confirmez-vous l'abandon de vos modifications de l'élément '%0'?",
 readOnlyText: "retour",
 readOnlyTooltip: "Retour à l'affichage normal de cet élément"});

merge(config.commands.deleteTiddler,{
 text: "supprimer",
 tooltip: "Suppression de cet élément",
 warning: "Confirmez-vous la suppression de '%0'?"});

merge(config.commands.permalink,{
 text: "permalien",
 tooltip: "Création d'un permalien pour cet élément"});

merge(config.commands.references,{
 text: "références",
 tooltip: "Affichage des éléments qui font référence à l'élément courant",
 popupNone: "Pas de référent(s)"});

merge(config.commands.jump,{
 text: "aller vers",
 tooltip: "Possibilité d'accès direct à l'un des éléments déjà ouverts dans le bloc-notes TiddlyWiki courant"});

merge(config.commands.syncing,{
 text: "synchronisation",
 tooltip: "Contrôle de la synchronisation de cet élément avec un serveur ou un fichier externe",
 currentlySyncing: "<div>Actuellement en cours de synchronisation avec <span class='popupHighlight'>'%0'</span> vers :</"+"div><div>host: <span class='popupHighlight'>%1</span></"+"div><div>workspace: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
 notCurrentlySyncing: "Pas de synchronisation en cours",
 captionUnSync: "Arrête la synchronisation de cet élément",
 chooseServer: "Synchronise cet élément avec un autre serveur :",
 currServerMarker: "\u25cf ",
 notCurrServerMarker: "  "});

merge(config.commands.fields,{
 text: "champs",
 tooltip: "Affichage des champs supplémentaires de cet élément",
 emptyText: "Il n'y a pas de champs supplémentaires pour cet élément",
 listViewTemplate: {
  columns: [
   {name: 'Field', field: 'field', title: "Champ", type: 'String'},
   {name: 'Value', field: 'value', title: "Valeur", type: 'String'}
   ],
  rowClasses: [
   ],
  buttons: [
   ]}});

merge(config.shadowTiddlers,{
 DefaultTiddlers: "GettingStarted",
 MainMenu: "GettingStarted",
 TranslatedGettingStarted: "Pour utiliser ce //bloc-notes// TiddlyWiki, commencez par modifier les //éléments// suivants (''//tiddlers//'' dans le jargon TiddlyWiki) :\n* __SiteTitle__ et __SiteSubtitle__ : Le titre et le sous-titre de ce //bloc-notes// TiddlyWiki. Après modification, ils apparaîtront aussi dans la barre de titre du navigateur)\n* __MainMenu__: Le menu principal (généralement à gauche)\n* __DefaultTiddlers__ : La liste les noms des //éléments// que vous voulez voir s'afficher à l'ouverture de ce //bloc-notes// TiddlyWiki. \n* Entrez également le ''nom d'utilisateur'' avec lequel seront signés vos ajouts ou vos modifications dans les //éléments// :\n** <<option txtUserName>>",
 SiteTitle: "Mon TiddlyWiki",
 SiteSubtitle: "organiseur personnel web interactif et autoporteur",
 SiteUrl: "http://www.tiddlywiki.com/",
 OptionsPanel: "Les options de configuration de ce bloc-notes TiddlyWiki sont sauvegardées dans des cookies de votre navigateur.\n\nNom d'utilisateur avec lequel seront signés vos ajouts ou vos modifications dans les éléments (par exemple Jeremy_Ruston).\n\n<<option txtUserName>>\n<<option chkSaveBackups>> Backup de chaque version\n<<option chkAutoSave>> Backup à chaque modification\n<<option chkRegExpSearch>> Expression régulières dans les recherches\n<<option chkCaseSensitiveSearch>> Respecter la casse dans les recherches\n<<option chkAnimate>> Animations à l'ouverture des éléments\n\n----\nVoir aussi [[Options Avancées|AdvancedOptions]]",
 SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options  »" "Modifie les options supplémentaires de ce bloc-notes TiddlyWiki">>',
 SideBarTabs: '<<tabs txtMainTab "Chrono" "Affichage chronologique" TabTimeline "Alpha" "Liste alphabétique des éléments" TabAll "Mot-clé" "Liste de tous les mot-clés" TabTags "Autres" "Autres listes" TabMore>>',
 TabMore: '<<tabs txtMoreTab "Manquants" "Eléments manquants" TabMoreMissing "Orphelins" "Eléments orphelins" TabMoreOrphans "Masqués" "Eléments masqués" TabMoreShadowed>>'});

merge(config.annotations,{
 AdvancedOptions: "Cet élément masqué permet d'accéder à différentes options avancées",
 ColorPalette: "Les valeurs de cet élément masqué détermine la palette des couleurs utilisées pour l'interface utilisateur de TiddlyWiki",
 DefaultTiddlers: "Les éléments enumérés dans cet élément seront automatiquement affichés au démarrage de TiddlyWiki",
 EditTemplate: "Le gabarit HTML dans cet élément masqué détermine la manière dont les éléments sont présentés lorsqu'ils sont édités",
 GettingStarted: "Cet élément fournit quelques instructions basiques pour utiliser un bloc-notes TiddlyWiki",
 ImportTiddlers: "Cet élément par défaut fournit l'accès à l'interface d'importation d'éléments",
 MainMenu: "Le contenu de cet élément défini le menu de la colonne de gauche de cette feuille HTML",
 MarkupPreHead: "Le contenu de cet élément est inséré au début de la section <head> du fichier HTML de ce bloc-notes TiddlyWiki",
 MarkupPostHead: "Le contenu de cet élément est inséré à la fin de la section <head> du fichier HTML de ce bloc-notes TiddlyWiki",
 MarkupPreBody: "Le contenu de cet élément est inséré au début de la section <body> du fichier HTML de ce bloc-notes TiddlyWiki",
 MarkupPostBody: "Le contenu de cet élément est inséré à la fin de la section <body> du fichier HTML de ce bloc-notes TiddlyWiki, immédiatement avant le bloc 'script'",
 OptionsPanel: "Le contenu de cet élément par défaut est utilisé par le panneau déroulant des options dans la colonne de droite de cette feuille HTML",
 PageTemplate: "Le gabarit HTML de cet élément masqué détermine la mise en page générale de ce bloc-notes TiddlyWiki",
 PluginManager: "Cet élément masqué permet d'accéder au gestionnaire d'extensions",
 SideBarOptions: "Le contenu de cet élément par défaut est utilisé par le panneau des options dans la barre de droite de la feuille HTML",
 SideBarTabs: "Le contenu de cet élément par défaut est utilisé par le panneau des onglets dans la barre de droite de la feuille HTML",
 SiteSubtitle: "Cet élément est utilisé comme deuxième partie du titre de la page",
 SiteTitle: "Cet élément est utilisé comme première partie du titre de la page",
 SiteUrl: "Cet élément par défaut doit contenir l'URL complet du site utilisé pour la publication",
 StyleSheetColours: "Cet élément par défaut contient des définitions CSS concernant les couleurs des composants de page",
 StyleSheet: "Cet éléments par défaut contient des définitions CSS personnalisées",
 StyleSheetLayout: "Cet éléments par défaut contient des définitions CSS concernant la mise en page de composants",
 StyleSheetLocale: "Cet élément par défaut contient des définitions CSS concernant la traduction ",
 StyleSheetPrint: "Cet élément par défaut contient des définitions CSS pour l'impression",
 TabAll: "Le contenu de cet élément par défaut est utilisé par le panneau de l'onglet 'Alpha' dans la colonne de droite de cette feuille HTML",
 TabMore: "Cet élément par défaut contient le contenu de l'onglet 'Suite' dans la barre de droite de l'écran",
 TabMoreMissing: "Cet élément par défaut contient le contenu de l'onglet 'Manquants' dans la colonne de droite de cette feuille HTML",
 TabMoreOrphans: "Cet élément par défaut contient le contenu de l'onglet 'Orphelins' dans la colonne de droite de cette feuille HTML",
 TabMoreShadowed: "Cet élément par défaut contient le contenu de l'onglet 'Défaut' dans la colonne de droite de cette feuille HTML",
 TabTags: "Cet élément par défaut contient le contenu de l'onglet 'Mot-clé' dans la colonne de droite de cette feuille HTML",
 TabTimeline: "Cet élément par défaut contient le contenu de l'onglet 'Chrono' dans la colonne de droite de cette feuille HTML",
 ViewTemplate: "Le gabarit HTML dans cet élément par défaut determine comment sont présentés les éléments"
 });
//}}}
<<tiddler Concepts>>
<<tiddler Idées>>Dans la [[définition de la vie|VieDéfinition]] de [[Varela|Varela, Francisco]], il faut une membrane, car on comprend que la membrane permet d'éviter la dilution des éléments de l'organisme. Cette membrane peut être de type vésicule, ou elle peut être extérieure à l'organisme, comme une goutte de lipides ou d'hydrocarbures, ou comme une poche minérale à l'intérieur de laquelle les éléments chimiques sont concentrés.

Mais on peut envisager la frontière du vivant autrement qu'avec une membrane. Il me semble que dans la définition autopoïétique de [[Varela|Varela, Francisco]] et [[Maturana|Maturana, Humberto]], l'identité de l'organisme est déterminée par la chaîne fermée de réactions chimiques, de type: A -> B -> C -> A

Un troisième type de frontière est d'ordre thermodynamique. Selon la définition de Carl Sagan, les êtres vivants sont des régions de l'espace où l'entropie diminue (ordre local), alors qu'elle augmente dans l'environnement, grâce à un flux d'énergie. Pour rendre compte de cette différence thermodynamique, il faut bien définir un intérieur et un extérieur du système.
/***
|Name|FullScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#FullScreenPlugin|
|Version|1.1|
|Requires|~TW2.x|
!Description:
Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.

!Demo:
Click the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.

!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Edit the ViewTemplate to add the fullscreen command to the toolbar.

!History:
*25-07-06: ver 1.1
*20-07-06: ver 1.0

!Code
***/
//{{{
var lewcidFullScreen = false;

config.commands.fullscreen =
{
            text:" ↕ ",
            tooltip:"Fullscreen mode"
};

config.commands.fullscreen.handler = function (event,src,title)
{
            if (lewcidFullScreen == false)
               {
                lewcidFullScreen = true;
                setStylesheet('#sidebar, .header, #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");
               }
            else
               {
                lewcidFullScreen = false;
                setStylesheet(' ',"lewcidFullScreenStyle");
               }
}

config.macros.fullscreen={};
config.macros.fullscreen.handler =  function(place,macroName,params,wikifier,paramString,tiddler)
{
        var label = params[0]||" ↕ ";
        var tooltip = params[1]||"Fullscreen mode";
        createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);
}

var lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler =function(title,animate,slowly)
{
           lewcid_fullscreen_closeTiddler.apply(this,arguments);
           if (story.isEmpty() && lewcidFullScreen == true)
              config.commands.fullscreen.handler();
}


Slider.prototype.lewcidStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{
           this.lewcidStop();
           if (story.isEmpty() && lewcidFullScreen == true)
              config.commands.fullscreen.handler();
}
//}}}
{{floatleft{[img(120px,auto)[Peter Galison|./imagesWiki/petergalison.jpg]]}}}

++++![Publications]
*[[Daston, L & Galison, P (1992): "The Image of Objectivity"]]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Galison","prénom":"Peter","initiales":"P"}</data>
!Natural kind
(//Ce texte est une version abrégées et adaptée de l'article de la Stanford Encyclopedia of Philosophy//)
Les disciplines scientifiques divisent les entités particulières qu'elles étudient en ''genres'' et élaborent des théories à leur propos. Dire qu'un genre est //naturel// c'est dire qu'il correspond à un groupement ou un ordonnancement qui ne dépend pas des êtres humains (ni d'autres agents épistémiques).

Les éléments et les composés chimiques (H~~2~~O) sont souvent cités comme exemples paradigmatiques de genres naturels. On peut également mentionner les particules physiques élémentaires (électron, quark top), ainsi que les genres auxquelles elles appartiennent (lepton, quark), ou encore les genres plus élevés (fermion, boson). En biologie, l'identification des genres est plus problématique. On a longtemps pensé que les [[espèces|Espèce (biologie)]] étaient des genres naturels, mais la mutabilité des espèces et des individus qui les composent contraste avec l'[[invariance|Invariance]] (immuabilité) qu'on attribue généralement aux genres.

|<<tiddler [[./deuxQuestions]]>>|
<part deuxQuestions hidden>Les genres naturels posent deux types de questions:
*<<tiddler [[Genre naturel: questions métaphysiques]]>>
*''Sémantique:'' Que //signifient// les termes de genres naturels (//natural kind terms//) et à quoi font-ils référence?
</part>

!Métaphysique des genres naturels [[→|Genre naturel (métaphysique)]]
<<tiddler [[Genre naturel (métaphysique)]]>>

!Métaphysique des genres naturels dans les sciences[[→|Genre naturel (métaphysique scientifique)]]
<<tiddler [[Genre naturel (métaphysique scientifique)]]>>

!Semantique des genres naturels [[→|Genre naturel (sémantique)]]
<<tiddler [[Genre naturel (sémantique)]]>>
La nature des espèces biologiques est un problème central de la philosophie de la biologie. Elles ont longtemps été considérées comme des genres naturels paradigmatiques. Le système de classification linnéen groupe les organismes en espèces et genres en vertu de leurs ressemblances morphologiques, mais les taxa plus élevés (famille, ordre, classe, phylum, règne) sont des divisions purement conventionnelles qui ont une fonction heuristique en biologie. Le problème qui se pose est de savoir si les espèces reflètent une division naturelle de la réalité ontologique, et si elles doivent être considérées considérées comme des individus plutôt que comme des genres.
A la suite de Quine, certains réalistes ont développé son intuition que les membres d'un genre naturel partagent des familles de propriétés qui ont été groupées de façon contingente par la nature (Boyd 1999; Millikan 1999). C'est-à-dire que ces familles de propriétés sont groupées ensemble à travers le temps à cause de la présence de certaines propriétés qui favorisent la présence des autres, ou à cause de mécanismes internes ou externes qui tendent à faire coïncider ces propriétés. Un genre naturel serait ainsi une famille de propriétés coïncidentes pouvant être employé pour faire des inférences inductives dans le cadre d'une explication scientifique. Étant donné que des contraintes environnementales peuvent altérer au cours du temps l'ensemble des propriétés associées à un genre, aucune des propriétés de l'ensemble n'est individuellement nécessaire pour déterminer l'appartenance au genre.+++[...]
<br>Boyd (1999) considère que les espèces biologiques sont des cas paradigmatiques de "//natural kind clusters//", où le groupement est du à un mécanisme homéostatique. Ce mécanisme fait en sorte que les déviations par rapport au cluster ont peu de chances de prospérer. C'est un mécanisme d'auto-régulation qui maintient un ensemble stable de propriétés. (Autrement dit, la plupart des variations ne sont pas adaptatives et réduisent les chances de survie ou de reproduction.)
<br>Les frontières d'un genre naturel peuvent être floues. Les //cluster kinds// forment cependant un genre (critère 4). Leurs membres ont au moins une propriété en commun (critère 1). Etant donné que l'émergence des //cluster kinds// n'est pas entièrement aléatoire mais déterminée par des mécanismes causals-historiques, ils sont par conséquent suffisamment robustes pour supporter l'induction (critère 2) et les lois de la nature (critère 3). En revanche, comme leurs frontières sont vagues, un //cluster kind realist// renoncera à ce qu'ils soient catégoriellement distincts (critère 6). Il peut être neutre quant aux hiérarchies (critère 5).
===
Le [[naturalisme|Naturalisme]] à propos des genres naturels s'oppose au ''conventionnalisme'' (ou [[constructivisme|Constructivisme]]) selon lequel les genres naturels n'existent pas indépendamment de nous. Les genres auxquels font référence les sciences sont relatives à nos intérêts épistémiques (scientifiques) qui sont des intérêts parmi d'autres. Les conventionnalistes nient qu'il y ait des formes naturellement privilégiées de classification. On peut en distinguer deux formes: une faible et une forte+++[...]
*Le ''conventionnalisme faible'' est un scepticisme à propos des classifications dont nous disposons actuellement; il est compatible avec le réalisme.
*Le ''conventionnalisme fort'' nie l'existence même (et pas seulement la connaissance) de classifications naturelles.
*Le ''relativisme ontologique'' est la forme la plus forte de conventionnalisme. C'est l'idée défendue par [[Goodman (1978)|Goodman, N (1978): Ways of Worldmaking]] selon laquelle toutes les entités, processus, relations, etc., sont relatifs à un [[Schème conceptuel]]. Il y a donc plusieurs manières égalemnt légitimes de "faire des mondes". L'idée qu'il y aurait une unique classification conceptuelle de la réalité est un mythe.

On peut également distinguer entre les conventionnalismes //''métaphysique''// et //''épistémique''// (Kukla 2000:4):+++[...]
*Le ''conventionnalisme métaphysique'' affirme que les faits concernant le monde sont inventés, comme les genres sexuels, l'identité personnelle, etc. Les entités de la physique, de la chimie ou de la biologie seraient construites plutôt que découvertes.
*Le ''conventionnalisme épistémique'' affirme qu'il n'y a pas de garantie rationnelle objective pour aucune croyance: les garanties sont relatives à la culture, à la religion, aux paradigmes scientifiques, aux intérêts pratiques, voire même aux présupposés idéologiques.
===


L'affirmation majeure de toutes les formes de conventionnalisme est que les faits concernant le monde dépendent des êtres humains, de leurs concepts ou de leurs activités. Cette idée a été analysée de différentes manières par les constructivistes. Kukla (2000:ch.3) distingue trois formes de dépendance:+++[...]
###''Matérielle''+++[...]> Les entités scientifiques sont construites par les activités des scientifiques dans leurs laboratoires. Ce sont, autrement dit, des entités artificiellement produites dans un environnement contrôlé qui ne correspond pas aux conditions naturelles.===

###''Causale''+++[...]> Les genres naturels sont des conséquences de l'activité humaine. Par exemple, les scientifiques ne découvrent pas une nouvelle espèce, ils en stipulent une, et de cette manière sont causalement responsables de la construction d'un nouveau concept d'espèce dans le paradigme scientifique. Cest différent de la dépendance matérielle dans la mesure où le scientifique ne crée pas une nouvelle espèce mais la classification correspondante.===

###''Constitutive''+++[...]> Les conventions sont constitutives des faits physiques, c'est-à-dire de la classification des espèces, par exemple.===

===

===
Il y a trois arguments qui permettent de douter que les espèces soient des genres naturels:
*La similarité intrinsèque entre deux individus n'est pas suffisante pour qu'ils fassent partie d'une même espèce.+++[...]> Ainsi, deux individus identiques ne feront pas partie de la même espèce s'ils n'ont pas un ancêtre commun (un chat martien, par exemple, strictement identique à un chat terrien, ne fera pas partie de la même espèce).===

*La similarité intrinsèque entre deux individus n'est pas non plus nécessaire.+++[...]> Il ne semble pas y avoir de propriété essentielle partagée par tous les membres d'une espèce et seulement par eux.===

*Les espèces biologiques évoluent au cours du temps, de sorte que leurs propriétés essentielles présumées (si elles existent) sont susceptibles de changer.+++[...]> De plus, si la spéciation est un processus graduel, alors la détermination précise des frontières entre espèces n'est pas toujours possible. Par conséquent, la distinction catégorielle (critère 6) n'est pas non plus respectée.===

Mais le fait que les espèces ne soient pas des genres naturels n'implique pas l'abandon d'une conception réaliste à leur égard, car si elles ne sont pas des genres, elles peuvent être des //individus// dont les organismes seraient les parties.

Par ailleurs, si les espèces sont des genres naturels, alors on est confronté au problème de la pluralité des concepts d'espèce, lequel peut conduire à une conception conventionnaliste. Mais les naturalistes à propos des classifications nient le fait que les disputes concernant la systématique reflètent une indétermination dans le monde naturel. Ici le [[Monisme]] et le [[Pluralisme]] s'opposent. L'un pense que l'un des concepts est supérieur aux autres, l'autre défend l'idée contraire. Mais même le pluralisme peut être réaliste (Kitcher 1984; Dupré 1993; Ereshefsky 1992).
Kripke (1971, 1972) et Putnam (1975) utilisent les genres animaux comme exemples de genres naturels pour lesquels des essences //a posteriori// peuvent être découvertes. Ces essences sont des propriétés microstructurelles intrinsèques qui sont individuellement nécessaires et conjointement suffisantes pour qu'une entité soit membre du genre. Cependant, les différents concepts d'espèce s'appuient plutôt sur des propriétés relationnelles telles que la descendance commune ou l'interfertilité. Les propriétés essentielles peuvent aussi être d'ordre historique. Par exemple, on peut dire qu'il est essentiel pour l'espèce //Mus minutoides// (une souris pigmée africaine) d'appartenir à la famille des //Muridae// et à l'ordre //Rodentia//, car il est essentiel que toutes les souris pigmées africaines appartiennent à cette famille et à cet ordre.
Les genres naturels ont-ils une essence? On doit distinguer deux affirmations différentes. La première est que l'appartenance au genre //G// est une propriété essentielle du particulier //p//. La seconde est que les genres eux-mêmes ont des propriétés essentielles. La première affirmation implique la seconde, mais la seconde n'implique pas forcément la première.
Le réalisme des genres naturels peut être vu comme identique ou seulement analogue au réalisme des universaux. Le //fondamentalisme// est la conception selon laquelle non seulement il existe des genres naturels, mais ceux-ci ont une place //sui generis// dans notre ontologie.
++++!![1. Genres naturels et biologie]
<<tiddler [[Genre naturel (biologie)]]>>
!!!1.1 Espèces: individus ou genres? [[→|Genre naturel (espèces biologiques)]]
<<tiddler [[Genre naturel (espèces biologiques)]]>>
!!!1.2 Essentialisme biologique [[→|Genre naturel (essentialisme biologique)]]
<<tiddler [[Genre naturel (essentialisme biologique)]]>>
===
!!2. Genres naturels et chimie
!!3. Genres naturels et psychologie
++++!![1. Classifications naturelles]
!!!1.1 Naturalisme [[→|Genre naturel (naturalisme)]]
<<tiddler [[Genre naturel (naturalisme)]]>>
!!!1.2 Conventionnalisme [[→|Genre naturel (conventionnalisme)]]
<<tiddler [[Genre naturel (conventionnalisme)]]>>
!!!1.3 Promiscuous Realism [[→|Genre naturel (promiscuous realism)]]
<<tiddler [[Genre naturel (promiscuous realism)]]>>
===
++++!![2. Réalisme des genres naturels]
<<tiddler [[Genre naturel (réalisme)]]>>
!!!2.1 Quine: genres naturels et induction [[→|Genre naturel et induction (Quine)]]
<<tiddler [[Genre naturel et induction (Quine)]]>>
!!!2.2 ((Cluster(grappe, groupe, agglomérat))) Kind Realism [[→|Genre naturel (cluster kind realism)]]
<<tiddler [[Genre naturel (cluster kind realism)]]>>
===
++++!![3. Fondamentalisme et Réductionnisme]
<<tiddler [[Genre naturel (fondamentalisme et réductionnisme)]]>>
===
++++!![4. Essentialisme]
<<tiddler [[Genre naturel (essentialisme)]]>>
!!!4.1 Arguments en faveur de l'essentialisme
===
On considère habituellement qu'il existe des manières //naturelles// de classer les choses, par opposition aux classifications arbitraires, conventionnelles ou fondées sur nos intérêts humains. Cette conception est appelée [[Naturalisme]]. On l'appelle également [[réalisme|Réalisme]] dans la mesure où le naturalisme est une conséquence ou un élément du [[réalisme scientifique|RéalismeScientifique]], mais le naturalisme peut ne pas avoir d'engagement ontologique concernant l'existence des genres eux-mêmes+++[...]
<br>Le naturalisme ne défend pas que toutes les catégories naturelles sont vraiment naturelles, puisque l'on peut se tromper. Par exemple, ce que nous appelons le jade n'est pas un genre naturel car il correspond en réalité à deux minéraux différents. Le naturalisme est la conception selon laquelle il y a des divisions naturelles entre les choses, de sorte que quand nous essayons d'établir une classification naturelle, le caractère naturel ou pas de cette classification est une question de fait (//there's a fact of the matter//).
===


+++[Critères de classification]
|<<tiddler [[./critèresCommuns]]>>|
|<<tiddler [[./critèresDiscutables]]>>|
===
<part critèresCommuns hidden>//Les critères ou caractéristiques habituellement citées des classifications de genres naturels sont les suivants://
{{indent{
''1.'' Les membres d'un genre naturel présumé doivent ''avoir en commun une [[propriété|Propriété]] (naturelle)''.+++[...]> On entend généralement par là une [[propriété intrinsèque|Propriété intrinsèque]].===

''2.'' Les genres naturels doivent permettre des ''généralisations inductives''.+++[...]> (Ce point est notamment défendu par Quine 1969.)===

''3.'' Les genres naturels doivent 'participer' des ''lois de la nature''.+++[...]> (C'est une version forte du critère 2)===

''4.'' Les membres d'un genre naturel doivent ''former un genre''.+++[...]>
Les critères 1-3 donnent des conditions nécessaires mais pas suffisantes. Par exemple, les objets avec une charge électrique négative ou avec une masse de 1 kg ont une propriété en commun, mais ils ne constituent pas un genre. Le problème c'est qu'on ne sait pas vraiment ce qu'est un genre.===
}}}</part>
<part critèresDiscutables hidden>//D'autres critères parfois suggérés sont plus discutables://
{{indent{
''5.'' Les genres naturels doivent former une ''hiérarchie''.+++[...]> (Si deux genres se superposent, l'un doit être un sous-genre de l'autre, ou alors ils sont identiques.===

''6.'' Les genres naturels doivent être ''catégoriellement distincts''.+++[...]>
Il ne peut pas y avoir une transition continue d'un genre à un autre, car sinon les frontières entre genres ne seraient pas dessinées par la nature, mais d'une manière ou d'une autre par nous, auquel cas les genres ne seraient pas tout à fait naturels.===
}}}</part>
[[Dupré (1993)|Dupré, J (1993): The Disorder of Things]] défend l'idée qu'il y a d'innombrables manières de classifier le monde en genres. La structure du monde est complexe et peut être catégorisée de différentes façons, relativement aux intérêts épistémiques que l'on poursuit. Mais il n'est pas pour autant [[conventionnaliste|Genre naturel (conventionnalisme)]]; au contraire, il a plutôt un engagement [[naturaliste|Naturalisme]] et [[réaliste|Réalisme]] vis-à-vis des genres naturels. Il accepte que les genres naturels ont des propriétés en commun, mais nie que ce soient des propriétés intrinsèques (critère 1). Il nie également qu'il y ait dans le monde une structure hiérarchique des genres naturels et que les genres soient catégoriellement distincts.+++[...]
<br>[[Dupré (1993:28)|Dupré, J (1993): The Disorder of Things]] affirme que le //promiscuous realism// reflète nos pratiques classificatoires dans les domaines du sens commun et des sciences particulières. Les premières ne correspondent pas forcément aux secondes, mais les deux sont également légitimes dans la mesure où elles répondent à des intérêts différents. Les conflits de classification ont également lieu à l'intérieur même des pratiques scientifiques, comme à l'intérieur de la biologie avec les multiples classifications taxonomiques possibles des espèces. Il s'agit de classifications également légitimes et objectivement fondées. Il n'y a donc pas de façon unique de découper le monde selon ses jointures.===
Le ''réalisme'' à propos des genres naturels est la conception selon laquelle les entités auxquelles correspondent les genres naturels existent bel et bien. Tandis que le naturalisme à propos des classifications naturelles dit qu'il existe des manières naturelles de classer les choses mais n'implique pas un engagement ontologique, le réalisme implique lui un engagement ontologique. C'est-à-dire que la différence entre l'or et l'argent n'est pas seulement une différence entre deux groupes de choses naturelles, mais une différence entre deux entités distinctes: l'//or// et l'//argent//.+++[...]
<br>Le débat entre le réalisme et le nominalisme est un débat ontologique sur la nécessité d'invoquer, pour rendre compte des propriétés, une classe d'entités que sont les [[universaux|Universaux]]. Le débat concernant les genres naturels est analogue: pour rendre compte des catégories naturelles et des classifications naturelles les choses, faut-il invoquer une entité ontologique particulière? Un nominaliste pourrait admettre qu'il y a des manières naturelles de classer les individus en genres, mais il n'admet pas l'existence d'autres objets au-delà des individus eux-mêmes. Le réaliste (fort), au contraire, affirme qu'on ne peut pas rendre compte de la distinction entre classifications naturelles et non-naturelles sans invoquer des entités particulières que sont les genres naturels. Le naturaliste affirme qu'il y a une différence métaphysique entre les classifications naturelles et non-naturelles, mais il n'a pas besoin de s'engager vis-à-vis de l'existence d'entités ontologiques particulières que seraient les genres naturels.===
[[Quine (1969)|Quine, WVO (1969): "Natural Kinds"]] accepte les classifications naturelles en genres. Il soutient que les genres sont des ensembles et défend ainsi une forme de réalisme (minimal) des genres. Il identifie genre et similarité, et fait de la similarité la base de l'induction. Un genre naturel est un ensemble dont les membres partagent une propriété naturelle (de sorte que l'ensemble des objets blancs est un candidat à genre naturel).
''Métaphysique:'' Que //sont// les genres naturels?++++[...]
#Les genres que nous considérons comme étant des genres 'naturels' sont-ils vraiment naturels? +++[...]>
Le problème est de savoir, parmi les genres auxquels la science fait appel, lesquels correspondent à de vrais genres naturels (existant dans la nature, pour ainsi dire) et lesquels sont seulement conventionnels (fixés par nous plutôt que par la nature).
===

#Les genres naturels ont-ils des [[essences|Essence]]? +++[...]>
Le problème est de savoir s'il y a des propriétés qui sont essentielles pour l'appartenance à un genre. Pour les essentialistes, l'essence d'un genre naturel serait une [[propriété|Propriété]] ou un ensemble de propriétés dont la possession est une condition nécessaire et suffisante pour qu'un individu appartienne au genre.
===

#Les genres naturels sont-ils des entités ontologiques de base ou peut-on les dériver ou les réduire à d'autres entités (les [[Universaux]], pex.)?+++[...]>
On peut voir les genres comme des entités ontologiques de base, ou au contraire chercher à les réduire à d'autres entités comme les universaux (Armstrong 1978, 1997) ou à des //clusters// de propriétés (Boyd 1991, Millikan 1999).
===

===
<<tiddler Concepts>>
<<tiddler HideTiddlerTags>><html><div align="center"><iframe src="http://www.google.com" frameborder="0" width="100%" height="600"></iframe></div></html>
<html><div align="center"><iframe src="http://mail.google.com/mail?hl=fr"0" width="100%" height="600"></iframe></div></html>
<<tiddler Théories>>
"

<<tiddler Citations>>
<<tiddler AutoRefresh on>>[img[tooltip|IconeLivreOuvert]]

++++![Résumé]

===

+++![Chapitres]
<<newChapterHere>>
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
etc.
===

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var titrelivre=DataTiddler.getData(titre,"titrelivre")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var villeédition=DataTiddler.getData(titre,"villeédition")
   var noméditeur=DataTiddler.getData(titre,"noméditeur")
   var dateédition=DataTiddler.getData(titre,"dateédition","")
   return "|bgcolor(#ffff99): ''Référence:'' "+nom+", "+initiales+" ("+datepublication+"): //"+titrelivre+"//. "+villeédition+": "+noméditeur+", "+dateédition+"|";
</script>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var pagescitation=DataTiddler.getData(titre,"pagescitation")
   return nom+", "+initiales+" "+datepublication+":"+pagescitation;
</script>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere label:"nouvelle note">><<newChapterHere>><data>{"nom":"Haldane","prénom":"John Burdan Sanderson","initiales":"JBS","titrearticle":"What is Life?","titrelivre":"What is Life?","datepublication":"1949","villeédition":"London","noméditeur":"Alcuin Press","pagescitation":"62"}</data>
<<tiddler Citation>>
!whatIsLife?
<part whatIsLife?> "@@color:red;''I am not going to answer this question. In fact, I doubt if it will ever be possible to give a full answer, because we know what it feels like to be alive, just as we know what redness, or pain, or effort are.''@@ So we cannot describe them in terms of anything else. But it is not a foolish question to ask, because we often want to know whether a man is alive or not, and when we are dealing with the microscopic agents of disease, it is clear enough that bacteria are alive, but far from clear whether viruses, such as those which cause measles and smallpox, are so."
([[Haldane, JBS 1949:58]], passage reproduit dans M. Ruse (ed.), //Phillosophy of Biology//. New York: Prometheus Books, 1998, p.33) </part>


++++[notes]>
<<tiddler [[Haldane, JBS 1949:58 - note]]>>
===

<data>{"nom":"Haldane","prénom":"John Burdan Sanderson","initiales":"JBS","titrearticle":"What is Life?","titrelivre":"What is Life?","datepublication":"1949","villeédition":"London","noméditeur":"Alcuin Press","pagescitation":"58","isLivre":true,"isEditedBook":false,"isArticleRevue":false,"isArticleRecueil":false}</data>
[img[Note|IconeNotes][Haldane, JBS 1949:58 - note]] Ce qui est curieux dans la réponse de Haldane, ce n'est pas seulement que, en tant que scientifique, il affirme qu'une pareille question pourrait ne pas avoir de réponse (est-ce parce que certaines questions scientifiques n'ont pas de réponse, ou parce que nous n'arriverons jamais à la connaître, ou parce que ce n'est pas une question scientifique), mais qu`''il compare la définition de la vie avec la définition de sensations subjectives'' comme la couleur, la douleur et l'effort. Certes, le fait de se sentir en vie est une sensation subjective, mais est-ce que la vie se limite ou se confond avec cette sensation? Un peu plus loin dans le texte, il dira que la vie est essentiellement de la chimie.+++[citation]>
<<tiddler Citations>><<tiddler [[Haldane, JBS 1949:59/lifeIsChemistry]]>>
===


<data>{"nom":"Haldane","prénom":"John Burdan Sanderson","initiales":"JBS","titrearticle":"What is Life?","titrelivre":"What is Life?","datepublication":"1949","villeédition":"London","noméditeur":"Alcuin Press","pagescitation":"58"}</data>
<<tiddler Citation>>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom");
   var initiales=DataTiddler.getData(titre,"initiales");
   var datepublication=DataTiddler.getData(titre,"datepublication");
   var tagname=nom+", "+initiales+" ("+datepublication+") - citations";
   return '<<navigation modified TagsTypesDB '+"Haldane, JBS (1949) - citations"+'>>';
   return "<<navigation modified TagsTypesDB "+tagname+" "+tagname+" "+tagname+">>";
</script>
!lifeIsChemistry
<part lifeIsChemistry> "There is no doubt, I think, that we can learn a lot more about life from a chemical than from a physical approach. This does not mean that life has been fully explained in terms of chemistry. It does mean that it is a pattern of chemical rather than physical events. [...] What is common to all life is the chemical events. And these are extraordinarily similar in very different organisms. ''We may say that life is essentially a pattern of chemical happenings'', and that in addition there is some building of a characteristic shape in almost all living things, characteristic motion in most animals, and feeling and purpose in some of them.
	([[Haldane, JBS 1949:59]], passage reproduit dans M. Ruse (ed.), //Phillosophy of Biology//. New York: Prometheus Books, 1998, p.33)" </part>

<data>{"nom":"Haldane","prénom":"John Burdan Sanderson","initiales":"JBS","titrearticle":"What is Life?","titrelivre":"What is Life?","datepublication":"1949","villeédition":"London","noméditeur":"Alcuin Press","pagescitation":"59","isLivre":true}</data>
<<tiddler Citation>>
<<navigation modified TagsTypesDB "Haldane, JBS (1949) - citations">>
!lifeIsPattern
<part lifeIsPattern> "[...] Shakespeare's plays consist of words, whereas words are a very small part of Eisenstein's fims. It is important to know this, as it is important to know that life consists of chemical processes. But the arrangement of the words is even more important than the words themselves. And in the same way ''life is a @@color:red;pattern@@ of chemical processes''. [...] ''But to suppose that one can describe life fully on these lines is to attempt to reduce it to mechanism, which I believe to be impossible.'' On the other hand, to say that life does not consist of chemical processes is to my mind as futile and untrue as to say that poetry does not consist of words."

	([[Haldane, JBS 1949:62]], passage reproduit dans M. Ruse (ed.), //Phillosophy of Biology//. New York: Prometheus Books, 1998, p.34) </part>
<data>{"nom":"Haldane","prénom":"John Burdan Sanderson","initiales":"JBS","titrearticle":"What is Life?","titrelivre":"What is Life?","datepublication":"1949","villeédition":"London","noméditeur":"Alcuin Press","pagescitation":"62","isLivre":true}</data>
{{floatleft{[img(120px,auto)[J.B.S. Haldane, wikipedia|./imagesWiki/Haldane.jpg][http://fr.wikipedia.org/wiki/John_Burdon_Sanderson_Haldane]]}}}
++++![1892 — 1964]
===
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Haldane","prénom":"John Burdan Sanderson","initiales":"JBS","titrearticle":"What is Life?","titrelivre":"What is Life?","datepublication":"1949","villeédition":"London","noméditeur":"Alcuin Press"}</data>
<<tiddler Concepts>>
{{floatleft{[img(120px,auto)[Carl G. Hempel|./imagesWiki/hempel.gif][http://en.wikipedia.org/wiki/Carl_Gustav_Hempel]]}}}
++++![1905 — 1997]
===
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Hempel","prénom":"Carl G.","initiales":"C"}</data>

/%
|Name|HideTiddlerTags|
|Source|http://www.TiddlyTools.com/#HideTiddlerTags|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|hide a tiddler's tagged/tagging display elements|

Usage: <<tiddler HideTiddlerTags>>

%/<script>
	var t=story.findContainingTiddler(place);
	if (!t || t.id=="tiddlerHideTiddlerTags") return;
	var nodes=t.getElementsByTagName("div");
	for (var i=0; i<nodes.length; i++)
		if (hasClass(nodes[i],"tagging")||hasClass(nodes[i],"tagged"))
			nodes[i].style.display="none";
</script>
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{

window.hideWhenLastTest = false;

window.removeElementWhen = function(test,place) {
	window.hideWhenLastTest = test;
	if (test) {
		removeChildren(place);
		place.parentNode.removeChild(place);
	}
};


merge(config.macros,{

	hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( eval(paramString), place);
	}},

	showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !eval(paramString), place);
	}},

	hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAll(params), place);
	}},

	showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAll(params), place);
	}},

	hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAny(params), place);
	}},

	showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAny(params), place);
	}},

	hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAll(params), place);
	}},

	showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAll(params), place);
	}},

	hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
	}},

	showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
	}},

	hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.title == params[0], place);
	}},

	showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.title != params[0], place);
	}},

	'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !window.hideWhenLastTest, place);
	}}

});

//}}}




<<tiddler Théories>>
<<tiddler Concepts>>
/***
|Name|HoverMenuPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#HoverMenuPlugin|
|Version|1.11|
|Requires|~TW2.x|
!Description:
Provides a hovering menu on the edge of the screen for commonly used commands, that scrolls with the page.

!Demo:
Observe the hovering menu on the right edge of the screen.

!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
To customize your HoverMenu, edit the HoverMenu shadow tiddler.

To customize whether the menu sticks to the right or left edge of the screen, and its start position, edit the HoverMenu configuration settings part of the code below. It's well documented, so don't be scared!

The menu has an id of hoverMenu, in case you want to style the buttons in it using css.

!Notes:
Since the default HoverMenu contains buttons for toggling the side bar and jumping to the top of the screen and to open tiddlers, the ToggleSideBarMacro, JumpMacro and the JumpToTopMacro are included in this tiddler, so you dont need to install them separately. Having them installed separately as well could lead to complications.

If you dont intend to use these three macros at all, feel free to remove those sections of code in this tiddler.

!To Do:
* rework code to allow multiple hovering menus in different positions, horizontal etc.
* incorporate code for keyboard shortcuts that correspond to the buttons in the hovermenu

!History:
*03-08-06, ver 1.1.2: compatibility fix with SelectThemePlugin
*03-08-06,  ver 1.11: fixed error with button tooltips
*27-07-06, ver 1.1 : added JumpMacro to hoverMenu
*23-07-06

!Code
***/

/***
start HoverMenu plugin code
***/
//{{{
config.hoverMenu={};
//}}}

/***
HoverMenu configuration settings
***/
//{{{
config.hoverMenu.settings={
               align: 'right',    //align menu to right or left side of screen, possible values are 'right' and 'left'               
               x: 1,              // horizontal distance of menu from side of screen, increase to your liking.
               y: 258            //vertical distance of menu from top of screen at start, increase or decrease to your liking
               };
//}}}

//{{{
//continue HoverMenu plugin code
config.hoverMenu.handler=function()
{              
               if (!document.getElementById("hoverMenu"))
               {
               var theMenu = createTiddlyElement(document.getElementById("contentWrapper"), "div","hoverMenu");
               theMenu.setAttribute("refresh","content");
               theMenu.setAttribute("tiddler","HoverMenu");
               var menuContent = store.getTiddlerText("HoverMenu");
               wikify(menuContent,theMenu);
              }

	       var Xloc = this.settings.x;
	       Yloc =this.settings.y;
	       var ns = (navigator.appName.indexOf("Netscape") != -1);
	       function SetMenu(id)
                        {
		        var GetElements=document.getElementById?document.getElementById(id):document.all?document.all[id]:document.layers[id];
		        if(document.layers)GetElements.style=GetElements;
		        GetElements.sP=function(x,y){this.style[config.hoverMenu.settings.align]=x +"px";this.style.top=y +"px";};
		        GetElements.x = Xloc;
		        GetElements.y = findScrollY();
		        GetElements.y += Yloc;
		        return GetElements;
	                }
               window.LoCate_XY=function()
                        {
		        var pY =  findScrollY();
                        ftlObj.y += (pY + Yloc - ftlObj.y)/15;
		        ftlObj.sP(ftlObj.x, ftlObj.y);
		        setTimeout("LoCate_XY()", 10);
	                }
               ftlObj = SetMenu("hoverMenu");
	       LoCate_XY();
};

window.old_lewcid_hovermenu_restart = restart;
restart = function()
{
               window.old_lewcid_hovermenu_restart();
               config.hoverMenu.handler();
};

setStylesheet(
"#hoverMenu .imgLink, #hoverMenu .imgLink:hover {border:none; padding:0px; float:right; margin-bottom:2px; margin-top:0px;}\n"+
"#hoverMenu  .button, #hoverMenu  .tiddlyLink {border:none; font-weight:bold; background:#18f; color:#FFF; padding:0 5px; float:right; margin-bottom:4px;}\n"+
"#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#fff; background:#000; padding:0 5px; float:right; margin-bottom:4px;}\n"+
"#hoverMenu .button {width:100%; text-align:center}"+
"#hoverMenu { position:absolute; width:7px;}\n"+
"\n","hoverMenuStyles");


config.macros.renameButton={};
config.macros.renameButton.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{

               if (place.lastChild.tagName!="BR")
                     {
                      place.lastChild.firstChild.data = params[0];
                      if (params[1]) {place.lastChild.title = params[1];}
                     }
};

config.shadowTiddlers["HoverMenu"]="<<top>>\n<<toggleSideBar>><<renameButton '>' >>\n<<jump j '' top>>\n<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>\n<<newTiddler>><<renameButton n>>\n";
//}}}
//end HoverMenu plugin code

//Start ToggleSideBarMacro code
//{{{
config.macros.toggleSideBar={};

config.macros.toggleSideBar.settings={
         styleHide :  "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
         styleShow : " ",
         arrow1: "«",
         arrow2: "»"
};

config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
          var tooltip= params[1]||'toggle sidebar';
          var mode = (params[2] && params[2]=="hide")? "hide":"show";
          var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
          var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;
          var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
          if (mode == "hide")
             { 
             (document.getElementById("sidebar")).setAttribute("toggle","hide");
              setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
             }
};

config.macros.toggleSideBar.onToggleSideBar = function(){
          var sidebar = document.getElementById("sidebar");
          var settings = config.macros.toggleSideBar.settings;
          if (sidebar.getAttribute("toggle")=='hide')
             {
              setStylesheet(settings.styleShow,"ToggleSideBarStyles");
              sidebar.setAttribute("toggle","show");
              this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
              }
          else
              {    
               setStylesheet(settings.styleHide,"ToggleSideBarStyles");
               sidebar.setAttribute("toggle","hide");
               this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
              }

     return false;
}

setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");
//}}}
//end ToggleSideBarMacro code

//start JumpToTopMacro code
//{{{
config.macros.top={};
config.macros.top.handler=function(place,macroName)
{
               createTiddlyButton(place,"^","jump to top",this.onclick);
}
config.macros.top.onclick=function()
{
               window.scrollTo(0,0);
};

config.commands.top =
{
               text:" ^ ",
               tooltip:"jump to top"
};

config.commands.top.handler = function(event,src,title)
{
               window.scrollTo(0,0);
}
//}}}
//end JumpToStartMacro code

//start JumpMacro code
//{{{
config.macros.jump= {};
config.macros.jump.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
        var label = (params[0] && params[0]!=".")? params[0]: 'jump';
        var tooltip = (params[1] && params[1]!=".")? params[1]: 'jump to an open tiddler';
        var top = (params[2] && params[2]=='top') ? true: false;        

        var btn =createTiddlyButton(place,label,tooltip,this.onclick);
        if (top==true)
              btn.setAttribute("top","true")
}

config.macros.jump.onclick = function(e)
{
        if (!e) var e = window.event;
        var theTarget = resolveTarget(e);
        var top = theTarget.getAttribute("top");
	var popup = Popup.create(this);
	if(popup)
		{
                 if(top=="true")
                                {createTiddlyButton(createTiddlyElement(popup,"li"),'Top ↑','Top of TW',config.macros.jump.top);
                                 createTiddlyElement(popup,"hr");}
		
		story.forEachTiddler(function(title,element) {
			createTiddlyLink(createTiddlyElement(popup,"li"),title,true);
			});
                }
	Popup.show(popup,false);
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return false;
}

config.macros.jump.top = function()
{
       window.scrollTo(0,0);
}
//}}}
//end JumpMacro code

//utility functions
//{{{
Popup.show = function(unused,slowly)
{
	var curr = Popup.stack[Popup.stack.length-1];
	var rootLeft = findPosX(curr.root);
	var rootTop = findPosY(curr.root);
	var rootHeight = curr.root.offsetHeight;
	var popupLeft = rootLeft;
	var popupTop = rootTop + rootHeight;
	var popupWidth = curr.popup.offsetWidth;
	var winWidth = findWindowWidth();
        if (isChild(curr.root,'hoverMenu'))
              var x = config.hoverMenu.settings.x;
        else
              var x = 0;
	if(popupLeft + popupWidth+x > winWidth)
		popupLeft = winWidth - popupWidth -x;
        if (isChild(curr.root,'hoverMenu'))
  	        {curr.popup.style.right = x + "px";}
        else
                curr.popup.style.left = popupLeft + "px";
	curr.popup.style.top = popupTop + "px";
	curr.popup.style.display = "block";
	addClass(curr.root,"highlight");
	if(config.options.chkAnimate)
		anim.startAnimating(new Scroller(curr.popup,slowly));
	else
		window.scrollTo(0,ensureVisible(curr.popup));
}

window.isChild = function(e,parentId) {
        while (e != null) {
                var parent = document.getElementById(parentId);
                if (parent == e) return true;
                e = e.parentNode;
                }
        return false;
};
//}}}
<<top>>
<<toggleSideBar>><<renameButton '>' >>
<<jump j '' top>>
<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>
<<newTiddler>><<renameButton n>>
<<fullscreen>>
| source file:|{{{E:\Mis textos\WikiPhilo\iconesWiki\auteur.gif}}}|
| attached on:|29 août 2008 by Toto|
| embedded:|[[auteur.gif|auteur.gif]] - {{{type=image/gif, size=751 bytes, encoded=1019 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/auteur.gif|./iconesWiki/auteur.gif]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconeAuteur]] or [img[tooltip|IconeAuteur][link]]}}}
[img[tooltip|IconeAuteur]]
<<<

/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhKAAoANUPAP3Pk0yp6Zus1aza+4/N9QV0ytWYTfzqzpCQkN3UwDWc4sya
EEZoo2C060aY2P////67av3Gf5lnCKh1Ef7apYtcA//jubeDHwZjvAZEpHzD78SO
NOSxSh5asNShOBCI2L2nf3O98q99Nu+3VgdTsJpuKyaR287U6jZ8x1qg2rGQXilr
ve/x+ueqVvy+WGWr4uPk5sGymGSFtnGUyXev3vX19Lnj/uDJtNLDne7bxzFcllhY
Wd6rcuioQe/Ba/7IZCH5BAEAAA8ALAAAAAAoACgAAAb/wIdwSCwaj8ikcslsOp/Q
qHRKHR5ioGxJwi2pEtUiC1SZTLiLBWe9mYhg4Udte7mcJ4seZzRiV0BhIhITdRUS
aXsuLn0eHhIqVDdlhBNlCx57P4scjRsSgFKCZmeTF5h8a50XFQdRMIYSFSIGLQYG
G6IbnB4bG3aQUAmwPhHFxRDILYKqhVHCFcYAxhHIyAYVvXVnYE/CBgDg4cbVEJ51
dp9QrxHgFO7i1NUllGegT9/u+RTg49aDZumgGHBnoaCFd9LiIZt0JkaUgQUPHCi4
LyG5eVwq5HhIIaLEg/uOVTvTRQqICB4p8lMIAVYFHFJuQDSIUCSEFrBKUFERoWM+
/3jVVsXaOOUAPoQWq2WEWSWGAXZAq22oUGFHHAEMRPCYFq/FBgYFPmSowmJGhwwp
EKigZcuACAQmPnwg0YHFlBMdUGh4kVeDBgGAU5iIiyEDBgwdTkQ5keGFBgKQHXTo
sAIFihUkMhiWW6CwYicsOqR4TGDAABumadB4kSKFg8EfUHzoXNeJABQhSJu2gXoA
ZA0hGgRQILuA8QwCnOgIkBtyadO+fzcQPhyF8cMdnGSYnpu0cwJ+gwtXELfz4bFN
OjgIwL17ePEBhisgfxhDZid4V6yfzp9/fPnkfWBfBgx8ZhsKGVS23n8AKjBbYR3I
YKAUJ8wgAwMMkKBhZh0wgAwCYHDEIeKIJJZ4RBAAOw==
---END_DATA---
%/
| source file:|{{{W:\Mis textos\WikiPhilo\iconesWiki\storage.gif}}}|
| attached on:|1 septembre 2008 by AlbertoMolina|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/storage.gif|./iconesWiki/storage.gif]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconeBoite]] or [img[tooltip|IconeBoite][link]]}}}
[img[tooltip|IconeBoite]]
<<<
| source file:|{{{/media/TOTOMOBILE/Mis textos/WikiPhilo/imagesWiki/Kandinsky2.jpeg}}}|
| attached on:|12 septembre 2008 by AlbertoMolina|
| description:|Tableau de Kandinsky|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[./imagesWiki/Kandinsky2.jpeg|./imagesWiki/Kandinsky2.jpeg]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconeConcept]] or [img[tooltip|IconeConcept][link]]}}}
[img[tooltip|IconeConcept]]
<<<
| source file:|{{{W:\Mis textos\WikiPhilo\iconesWiki\save.ico}}}|
| attached on:|1 septembre 2008 by AlbertoMolina|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/save.ico|./iconesWiki/save.ico]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconeEnregistrer]] or [img[tooltip|IconeEnregistrer][link]]}}}
[img[tooltip|IconeEnregistrer]]
<<<
| source file:|{{{W:\Mis textos\WikiPhilo\iconesWiki\fiches.ico}}}|
| attached on:|31 août 2008 by AlbertoMolina|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/fiches.ico|./iconesWiki/fiches.ico]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconeFiches]] or [img[tooltip|IconeFiches][link]]}}}
[img[tooltip|IconeFiches]]
<<<
| source file:|{{{W:\Mis textos\WikiPhilo\iconesWiki\chronometre.ico}}}|
| attached on:|1 septembre 2008 by AlbertoMolina|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/chronometre.ico|./iconesWiki/chronometre.ico]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconeHorloge]] or [img[tooltip|IconeHorloge][link]]}}}
[img[tooltip|IconeHorloge]]
<<<
| source file:|{{{W:\Mis textos\WikiPhilo\iconesWiki\journal.ico}}}|
| attached on:|31 août 2008 by AlbertoMolina|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/journal.ico|./iconesWiki/journal.ico]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconeJournal]] or [img[tooltip|IconeJournal][link]]}}}
[img[tooltip|IconeJournal]]
<<<
| source file:|{{{E:\Mis textos\WikiPhilo\iconesWiki\livre_ouvert.ico}}}|
| attached on:|29 août 2008 by Toto|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/livre_ouvert.ico|./iconesWiki/livre_ouvert.ico]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconeLivreOuvert]] or [img[tooltip|IconeLivreOuvert][link]]}}}
[img[tooltip|IconeLivreOuvert]]
<<<
| source file:|{{{W:\Mis textos\WikiPhilo\iconesWiki\notes.ico}}}|
| attached on:|1 septembre 2008 by AlbertoMolina|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/notes.ico|./iconesWiki/notes.ico]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconeNotes]] or [img[tooltip|IconeNotes][link]]}}}
[img[tooltip|IconeNotes]]
<<<
| source file:|{{{D:\Mis textos\WikiPhilo\iconesWiki\pdf.gif}}}|
| attached on:|16 septembre 2008 by AlbertoMolina|
| embedded:|[[IconePDF|IconePDF]] - {{{type=image/gif, size=980 bytes, encoded=1328 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/pdf.gif|./iconesWiki/pdf.gif]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconePDF]] or [img[tooltip|IconePDF][link]]}}}
[img[tooltip|IconePDF]]
<<<

/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEAAQAIcAAAAAABEREikpKTY1NF5eXnl3eokJCtUEBvcFBvkVFf4mKfo3
OchaWvVMTvhhYvtydIqKjqGhp722u7+/xdays+WJiuien+mxs/+qrsXFy9jU2Ozb
3O7o6e/v8e72+P////X1/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAMAACAALAAAAAAQABAAAAixAEEILECwYEGBCAdmmMBQ
QgQIGgYgfOCggcUFGBUcgPDhg0QQDxYoSICgJIIDBgp09AjCwUiSJQ+ghFAQwgCU
BnLqzMkhQwYJGQIgLKAhgwYNDDRwOGpU6MClGj404EC1KAenIAos5bBhgYUPVa8O
pfrhQYcKGMAqxaqVawMMGCwyqPCBbUcGFzZ4+NCBggOxT+eCpbq06VAHDwYfZarB
7uCqjLESGEBZwAABAgJo1hwQADs=
---END_DATA---
%/
| source file:|{{{W:\Mis textos\WikiPhilo\iconesWiki\Papelera_2.ico}}}|
| attached on:|1 septembre 2008 by AlbertoMolina|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/Papelera_2.ico|./iconesWiki/Papelera_2.ico]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconePoubelle]] or [img[tooltip|IconePoubelle][link]]}}}
[img[tooltip|IconePoubelle]]
<<<
| source file:|{{{W:\Mis textos\WikiPhilo\iconesWiki\doc.gif}}}|
| attached on:|3 septembre 2008 by AlbertoMolina|
| embedded:|[[IconeWord|IconeWord]] - {{{type=image/gif, size=1048 bytes, encoded=1421 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./iconesWiki/doc.gif|./iconesWiki/doc.gif]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|IconeWord]] or [img[tooltip|IconeWord][link]]}}}
[img[tooltip|IconeWord]]
<<<

/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEAAQAIcAAAAAAAMzegMzeyc9bDVJYzZKZAcuiwI2gAM2ggQ5iQQ6jA8x
ggQ9kgVAlwZCmwVDoAZEowdHqgdHrAdLsghLswhNtydImDdXnDlaoTJZsylhtz1h
rTZqvD9ltj5ww0lprUFnt0JouklptFRqp1lrpFZxq2Z9vHF9o0V1xUx5ylJ+zVx9
xViDz2KCx2GByWKK1GeO1niO0XCT23SV3nyc4X+e4nej63+n53ql6Huk6ZOit5Wk
uZamu5movoSb34+i05yrwJCu1pSq2Z243p6434Cn54el54Sr5oWs5oim54it5Yqu
5Iyv5I+x45Cq6pOt65Gx4pWz4pW04pm24KW0yqa2y6i2zaq5z6Wz2qG63aS73aW8
3Ku60a290q6+1LK+yKy+9LDA1rHB17LC2LrF1LHG+8rS2cfa+Mnb+crb+Mzd+M7e
+M7e+dPc89Dg+dLh+tLi+tPi+tPi+9bk+tbk+9fl+tfl+9ri99vj9tzj9tjl+tnm
+9rm+9rn+9zo+93p+9/q++Hq++Hr++Ls++Hs/OLs/OTt/OXt/Obu/Ofv/Ojv/Ojw
/enw/Onw/enx/e30/e/0/e/1/fD0+/L2/vP3/vT3/vP4/vT4/f////X1/wAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAMAAJkALAAAAAAQABAAAAj1ADMJHCMmjJcuXK5YqUJF
YKYnTpLUmAGDRQoPGig9AlJAoBNMIEOCrFAJ0g4yHY2A8dGijYs8JIRMuBRJR4Gb
NO74WIFHBJ4PJyIECeJoi5YCMjDFAIHFwo8LZh5YCsKIUBYCLzCZCFFiQYYBmBpM
CoII0BACKjCNwFBmwYIvmBRACmLozxQCKDAZ2CBpQQeQCIYG4hOFAAeRIgUoKuRn
ThMCGipQkADBAYMEBwIMtfNmCQGHPRY1WpTokCA/deKwQfJZII9BhYbKDrImTZHW
mXbw6bNHDx05btSgOZMDtw44RKZIgcJEyZEbOGzgJkC9uvXqAQEAOw==
---END_DATA---
%/
[[Dossier Icones|file:./iconesWiki/]]
<<tiddler Théories>>
{{floatleft{[img[Idée|iconesWiki/idée.ico][Notes]]}}}
{{floatleft{[img[Concepts|./imagesWiki/Kandinsky2.jpeg][Concepts]]}}}
| source file:|{{{imagesWiki/Bedau, Marc.jpg}}}|
| attached on:|29 août 2008 by Toto|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[imagesWiki/Bedau, Marc.jpg|imagesWiki/Bedau, Marc.jpg]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|ImageMarkBedau]] or [img[tooltip|ImageMarkBedau][link]]}}}
[img[tooltip|ImageMarkBedau]]
<<<
| source file:|{{{/media/TOTOMOBILE/Mis textos/WikiPhilo/imagesWiki/RuthMillikan.jpg}}}|
| attached on:|12 septembre 2008 by AlbertoMolina|
| description:|Photographie de la philosophe Ruth Garrett Millikan|
| embedded:|//none//|
| local file:|/%LOCAL_LINK%/[[./imagesWiki/RuthMillikan.jpg|./imagesWiki/RuthMillikan.jpg]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|ImageRuthMillikan]] or [img[tooltip|ImageRuthMillikan][link]]}}}
[img[tooltip|ImageRuthMillikan]]
<<<
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin,formatter|
|Requires||
|Overrides|'image' formatter|
|Description|extends image syntax to add optional CSS width/height values|
!!!!!Usage
<<<
Extends standard TiddlyWiki image syntax, ''{{{[img[...]]}}}'', so you can specify CSS width/height values.

The extended syntax is:
>''{{{[img(x,y)[...]]}}}''
>where x and y are the desired width and height of the image, specified using CSS units of measurement (e.g., px, em, cm, in, or %).  Use ''auto'' for either the width or height to scale image proportionally (i.e., maintain aspect ratio).  You may also calculate a CSS value on-the-fly by using //evaluated javascript//, enclosed between """{{""" and """}}""", e.g, {{{({{widthFunction()}},{{heightFunction()}})}}}.

Note: this plugin also includes enhancements to support:
*[[AttachFilePluginFormatters]] (embed image files as text-encoded tiddlers)
* [[ImagePathPlugin]] (fallback locations for missing images)
Please refer to those plugins for details...
<<<
!!!!!Examples
<<<
{{{
[<img(34%,auto)[images/meow.gif]]
[<img(21%,auto)[images/meow.gif]]
[<img(13%,auto)[images/meow.gif]]
[<img(8%,auto)[images/meow.gif]]
[<img(5%,auto)[images/meow.gif]]
[<img(3%,auto)[images/meow.gif]]
[<img(2%,auto)[images/meow.gif]]
[img(1%,auto)[images/meow.gif]]
}}}
[<img(34%,auto)[images/meow.gif]]
[<img(21%,auto)[images/meow.gif]]
[<img(13%,auto)[images/meow.gif]]
[<img(8%,auto)[images/meow.gif]]
[<img(5%,auto)[images/meow.gif]]
[<img(3%,auto)[images/meow.gif]]
[<img(2%,auto)[images/meow.gif]]
[img(1%,auto)[images/meow.gif]]
{{clear block{}}}
<<<
!!!!!Revisions
<<<
2008.01.19 [1.1.0] added support for evaluated width/height values!!
2008.01.18 [1.0.1] code cleanup plus improved regexp for matching "(width,height)" by eliminating hard-coded recognition of [px,em,cm,in,%] CSS units.  Syntax now accepts ANY values for width/height, and leaves it to the browser's CSS processing to handle any invalid values.
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.imageSize = {major: 1, minor: 1, revision: 0, date: new Date(2008,1,19)};

// replace standard handler for image formatter
// note: includes modifications for [[AttachFilePluginFormatters]] AND [[ImagePathPlugin]]
var f=config.formatters.findByField("name","image");
config.formatters[f].match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
config.formatters[f].lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](\([^,]*,[^\)]*\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
config.formatters[f].handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var XY=lookaheadMatch[3];
		var tooltip=lookaheadMatch[4];
		var src=lookaheadMatch[5];
		var link=lookaheadMatch[6];
		// Simple bracketted link
		var e = w.output;
		if(link) { // LINKED IMAGE
			if (config.formatterHelpers.isExternalLink(link)) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) {
					// see [[AttachFilePluginFormatters]]
					e = createExternalLink(w.output,link);
					e.href=config.macros.attach.getAttachment(link);
					e.title = config.macros.attach.linkTooltip + link;
				} else
					e = createExternalLink(w.output,link);
			} else 
				e = createTiddlyLink(w.output,link,false,null,w.isStatic);
			addClass(e,"imageLink");
		}
		var img = createTiddlyElement(e,"img");
		if(floatLeft) img.align="left"; else if(floatRight) img.align="right"; // FLOAT LEFT/RIGHT
		if(XY) { // CUSTOM SIZE with optional EVAL'ED width/height ({{...}},{{...}})
			var parts=XY.replace(/[\(\)]/g,'').split(","); var x=parts[0]; var y=parts[1];
			if (x.substr(0,2)=="{{") {
				try{img.style.width=eval(x.substr(2,x.length-4));}
				catch(e){displayMessage(e.description||e.toString())}
			} else img.style.width=x;

			if (y.substr(0,2)=="{{") {
				try{img.style.height=eval(y.substr(2,y.length-4));}
				catch(e){displayMessage(e.description||e.toString())}
			} else img.style.height=y;
		}
		if(tooltip) img.title = tooltip; // TOOLTIP
		// GET IMAGE SOURCE (get attachment or resolve fallback path as needed)
		if (config.macros.attach && config.macros.attach.isAttachment(src))
			src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
		else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
			// Note: IE and Safari use onError to call resolvePath() only if initial lookup fails
			// (avoids security messages for initial filesystem access)... otherwise, attempt to
			// resolve the original path/file before initial rendering
			if (config.browser.isIE || config.browser.isSafari) {
				img.onerror=(function(){
					this.src=config.formatterHelpers.resolvePath(this.src,false);
					return false;
				});
			} else
				src=config.formatterHelpers.resolvePath(lookaheadMatch[5],true);
		}
		img.src=src; // RENDER IMAGE
		w.nextMatch = this.lookaheadRegExp.lastIndex;
	}
}
//}}}
{{floatleft{[img[Théories|./imagesWiki/MaxPlanckInstitute.png][Théories]]}}}

/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Version|1.6.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|

''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.

''Deferred execution from an 'onClick' link''
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.  You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text

''External script source files:''
You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}).  This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins.  The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.

''Display script source in tiddler output''
By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.

''Defining javascript functions and libraries:''
Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed.  Thus, you cannot load a library and //immediately// use it's functions within the same tiddler.  However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).

To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened.  For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.

Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines.  Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.

''Creating dynamic tiddler content''
An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.

If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display.  For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.

//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler.  To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//

''Accessing the ~TiddlyWiki DOM''
The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.

Access to this DOM element allows you to create scripts that can:
* vary their actions based upon the specific location in which they are embedded
* access 'tiddler-relative' information (use findContainingTiddler(place))
* perform direct DOM manipulations (when returning wikified text is not enough)
<<<
!!!!!Examples
<<<
an "alert" message box:
><script show>
	alert('InlineJavascriptPlugin: this is a demonstration message');
</script>
dynamic output:
><script show>
	return (new Date()).toString();
</script>
wikified dynamic output:
><script show>
	return "link to current user: [["+config.options.txtUserName+"]]";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
   if (!window.story) window.story=window;
   var title=story.findContainingTiddler(place).id.substr(7);
   return title+" is using "+store.getTiddlerText(title).length+" bytes";
</script>
creating an 'onclick' button/link that runs a script:
><script label="click here" title="clicking this link will show an 'alert' box" show>
   if (!window.story) window.story=window;
   alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
</script>
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
><script src="demo.js" show>
	return "loading demo.js..."
</script>
><script label="click to execute demo() function" show>
	demo()
</script>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.11.16 [1.6.1]'' when rendering "onclick scripts", pass label text through wikifyPlainText() to parse any embedded wiki-syntax to enable use of HTML entities or even TW macros to generate dynamic label text.
''2007.02.19 [1.6.0]'' added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
''2006.10.16 [1.5.2]'' add newline before closing '}' in 'function out_' wrapper.  Fixes error caused when last line of script is a comment.
''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
''2006.01.05 [1.4.0]'' added support 'onclick' scripts.  When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked.  'place' value is set to match the clicked button/link element.
''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString().  Fixed error reporting so IE shows the correct response text.  Based on a suggestion by UdoBorkowski
''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content.  Based on a suggestion by BradleyMeck
''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access 
''2005.11.08 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
version.extensions.inlineJavascript= {major: 1, minor: 6, revision: 1, date: new Date(2007,11,16)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",

	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			if (lookaheadMatch[1]) { // load a script library
				// make script tag, set src, add to body to execute, then remove for cleanup
				var script = document.createElement("script"); script.src = lookaheadMatch[1];
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (lookaheadMatch[5]) { // there is script code
				if (lookaheadMatch[4]) // show inline script code in tiddler output
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (lookaheadMatch[2]) { // create a link to an 'onclick' script
					// add a link, define click handler, save code in link (pass 'place'), set link attributes
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(lookaheadMatch[2]));
					link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
					link.code="function _out(place){"+lookaheadMatch[5]+"\n};_out(this);"
					link.setAttribute("title",lookaheadMatch[3]?lookaheadMatch[3]:"");
					link.setAttribute("href","javascript:;");
					link.style.cursor="pointer";
				}
				else { // run inline script code
					var code="function _out(place){"+lookaheadMatch[5]+"\n};_out(w.output);"
					code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
					try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
				}
			}
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
} )
//}}}
/***
|Name:|InstantTimestampPlugin|
|Description:|A handy way to insert timestamps in your tiddler content|
|Version:|1.0.10 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#InstantTimestampPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
If you enter {ts} in your tiddler content (without the spaces) it will be replaced with a timestamp when you save the tiddler. Full list of formats:
* {ts} or {t} -> timestamp
* {ds} or {d} -> datestamp
* !ts or !t at start of line -> !!timestamp
* !ds or !d at start of line -> !!datestamp
(I added the extra ! since that's how I like it. Remove it from translations below if required)
!!Notes
* Change the timeFormat and dateFormat below to suit your preference.
* See also http://mptw2.tiddlyspot.com/#AutoCorrectPlugin
* You could invent other translations and add them to the translations array below.
***/
//{{{

config.InstantTimestamp = {

	// adjust to suit
	timeFormat: 'DD/0MM/YY 0hh:0mm',
	dateFormat: 'DD/0MM/YY',

	translations: [
		[/^!ts?$/img,  "'!!{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
		[/^!ds?$/img,  "'!!{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"],

		// thanks Adapted Cat
		[/\{ts?\}(?!\}\})/ig,"'{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
		[/\{ds?\}(?!\}\})/ig,"'{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"]
		
	],

	excludeTags: [
		"noAutoCorrect",
		"noTimestamp",
		"html",
		"CSS",
		"css",
		"systemConfig",
		"systemConfigDisabled",
		"zsystemConfig",
		"Plugins",
		"Plugin",
		"plugins",
		"plugin",
		"javascript",
		"code",
		"systemTheme",
		"systemPalette"
	],

	excludeTiddlers: [
		"StyleSheet",
		"StyleSheetLayout",
		"StyleSheetColors",
		"StyleSheetPrint"
		// more?
	]

}; 

TiddlyWiki.prototype.saveTiddler_mptw_instanttimestamp = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {

	tags = tags ? tags : []; // just in case tags is null
	tags = (typeof(tags) == "string") ? tags.readBracketedList() : tags;
	var conf = config.InstantTimestamp;

	if ( !tags.containsAny(conf.excludeTags) && !conf.excludeTiddlers.contains(newTitle) ) {

		var now = new Date();
		var trans = conf.translations;
		for (var i=0;i<trans.length;i++) {
			newBody = newBody.replace(trans[i][0], eval(trans[i][1]));
		}
	}

	// TODO: use apply() instead of naming all args?
	return this.saveTiddler_mptw_instanttimestamp(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
}

// you can override these in StyleSheet 
setStylesheet(".ts,.ds { font-style:italic; }","instantTimestampStyles");

//}}}


/***
|''Name:''|IntelliTaggerPlugin|
|''Version:''|1.0.2 (2007-07-25)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IntelliTaggerPlugin Documentation]]|
|''~SourceCode:''|[[IntelliTaggerPlugin SourceCode]]|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''~CoreVersion:''|2.0.8|
|''Browser:''|Firefox 1.5.0.2 or better|
***/
/***
!Version History
* 1.0.2 (2007-07-25): 
** Feature: "Return" key may be used to accept first tag suggestion (beside "Alt-1")
** Bugfix: Keyboard shortcuts (Alt+3 etc.) shifted
* 1.0.1 (2007-05-18): Improvement: Speedup when using TiddlyWikis with many tags
* 1.0.0 (2006-04-26): Initial release

***/
// /%
if(!version.extensions.IntelliTaggerPlugin){if(!window.abego){window.abego={};}if(!abego.internal){abego.internal={};}abego.alertAndThrow=function(s){alert(s);throw s;};if(version.major<2){abego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");}version.extensions.IntelliTaggerPlugin={major:1,minor:0,revision:2,date:new Date(2007,6,25),type:"plugin",source:"http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",documentation:"[[IntelliTaggerPlugin Documentation]]",sourcecode:"[[IntelliTaggerPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",tiddlywiki:"Version 2.0.8 or better",browser:"Firefox 1.5.0.2 or better"};abego.createEllipsis=function(_2){var e=createTiddlyElement(_2,"span");e.innerHTML="&hellip;";};abego.isPopupOpen=function(_4){return _4&&_4.parentNode==document.body;};abego.openAsPopup=function(_5){if(_5.parentNode!=document.body){document.body.appendChild(_5);}};abego.closePopup=function(_6){if(abego.isPopupOpen(_6)){document.body.removeChild(_6);}};abego.getWindowRect=function(){return {left:findScrollX(),top:findScrollY(),height:findWindowHeight(),width:findWindowWidth()};};abego.moveElement=function(_7,_8,_9){_7.style.left=_8+"px";_7.style.top=_9+"px";};abego.centerOnWindow=function(_a){if(_a.style.position!="absolute"){throw "abego.centerOnWindow: element must have absolute position";}var _b=abego.getWindowRect();abego.moveElement(_a,_b.left+(_b.width-_a.offsetWidth)/2,_b.top+(_b.height-_a.offsetHeight)/2);};abego.isDescendantOrSelf=function(_c,e){while(e){if(_c==e){return true;}e=e.parentNode;}return false;};abego.toSet=function(_e){var _f={};for(var i=0;i<_e.length;i++){_f[_e[i]]=true;}return _f;};abego.filterStrings=function(_11,_12,_13){var _14=[];for(var i=0;i<_11.length&&(_13===undefined||_14.length<_13);i++){var s=_11[i];if(s.match(_12)){_14.push(s);}}return _14;};abego.arraysAreEqual=function(a,b){if(!a){return !b;}if(!b){return false;}var n=a.length;if(n!=b.length){return false;}for(var i=0;i<n;i++){if(a[i]!=b[i]){return false;}}return true;};abego.moveBelowAndClip=function(_1b,_1c){if(!_1c){return;}var _1d=findPosX(_1c);var _1e=findPosY(_1c);var _1f=_1c.offsetHeight;var _20=_1d;var _21=_1e+_1f;var _22=findWindowWidth();if(_22<_1b.offsetWidth){_1b.style.width=(_22-100)+"px";}var _23=_1b.offsetWidth;if(_20+_23>_22){_20=_22-_23-30;}if(_20<0){_20=0;}_1b.style.left=_20+"px";_1b.style.top=_21+"px";_1b.style.display="block";};abego.compareStrings=function(a,b){return (a==b)?0:(a<b)?-1:1;};abego.sortIgnoreCase=function(arr){var _27=[];var n=arr.length;for(var i=0;i<n;i++){var s=arr[i];_27.push([s.toString().toLowerCase(),s]);}_27.sort(function(a,b){return (a[0]==b[0])?0:(a[0]<b[0])?-1:1;});for(i=0;i<n;i++){arr[i]=_27[i][1];}};abego.getTiddlerField=function(_2d,_2e,_2f){var _30=document.getElementById(_2d.idPrefix+_2e);var e=null;if(_30!=null){var _32=_30.getElementsByTagName("*");for(var t=0;t<_32.length;t++){var c=_32[t];if(c.tagName.toLowerCase()=="input"||c.tagName.toLowerCase()=="textarea"){if(!e){e=c;}if(c.getAttribute("edit")==_2f){e=c;}}}}return e;};abego.setRange=function(_35,_36,end){if(_35.setSelectionRange){_35.setSelectionRange(_36,end);var max=0+_35.scrollHeight;var len=_35.textLength;var top=max*_36/len,bot=max*end/len;_35.scrollTop=Math.min(top,(bot+top-_35.clientHeight)/2);}else{if(_35.createTextRange!=undefined){var _3b=_35.createTextRange();_3b.collapse();_3b.moveEnd("character",end);_3b.moveStart("character",_36);_3b.select();}else{_35.select();}}};abego.internal.TagManager=function(){var _3c=null;var _3d=function(){if(_3c){return;}_3c={};store.forEachTiddler(function(_3e,_3f){for(var i=0;i<_3f.tags.length;i++){var tag=_3f.tags[i];var _42=_3c[tag];if(!_42){_42=_3c[tag]={count:0,tiddlers:{}};}_42.tiddlers[_3f.title]=true;_42.count+=1;}});};var _43=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_44,_45,_46,_47,_48,_49){var _4a=this.fetchTiddler(_44);var _4b=_4a?_4a.tags:[];var _4c=(typeof _49=="string")?_49.readBracketedList():_49;_43.apply(this,arguments);if(!abego.arraysAreEqual(_4b,_4c)){abego.internal.getTagManager().reset();}};var _4d=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_4e){var _4f=this.fetchTiddler(_4e);var _50=_4f&&_4f.tags.length>0;_4d.apply(this,arguments);if(_50){abego.internal.getTagManager().reset();}};this.reset=function(){_3c=null;};this.getTiddlersWithTag=function(tag){_3d();var _52=_3c[tag];return _52?_52.tiddlers:null;};this.getAllTags=function(_53){_3d();var _54=[];for(var i in _3c){_54.push(i);}for(i=0;_53&&i<_53.length;i++){_54.pushUnique(_53[i],true);}abego.sortIgnoreCase(_54);return _54;};this.getTagInfos=function(){_3d();var _56=[];for(var _57 in _3c){_56.push([_57,_3c[_57]]);}return _56;};var _58=function(a,b){var a1=a[1];var b1=b[1];var d=b[1].count-a[1].count;return d!=0?d:abego.compareStrings(a[0].toLowerCase(),b[0].toLowerCase());};this.getSortedTagInfos=function(){_3d();var _5e=this.getTagInfos();_5e.sort(_58);return _5e;};this.getPartnerRankedTags=function(_5f){var _60={};for(var i=0;i<_5f.length;i++){var _62=this.getTiddlersWithTag(_5f[i]);for(var _63 in _62){var _64=store.getTiddler(_63);if(!(_64 instanceof Tiddler)){continue;}for(var j=0;j<_64.tags.length;j++){var tag=_64.tags[j];var c=_60[tag];_60[tag]=c?c+1:1;}}}var _68=abego.toSet(_5f);var _69=[];for(var n in _60){if(!_68[n]){_69.push(n);}}_69.sort(function(a,b){var d=_60[b]-_60[a];return d!=0?d:abego.compareStrings(a.toLowerCase(),b.toLowerCase());});return _69;};};abego.internal.getTagManager=function(){if(!abego.internal.gTagManager){abego.internal.gTagManager=new abego.internal.TagManager();}return abego.internal.gTagManager;};(function(){var _6e=2;var _6f=1;var _70=30;var _71;var _72;var _73;var _74;var _75;var _76;if(!abego.IntelliTagger){abego.IntelliTagger={};}var _77=function(){return _72;};var _78=function(tag){return _75[tag];};var _7a=function(s){var i=s.lastIndexOf(" ");return (i>=0)?s.substr(0,i):"";};var _7d=function(_7e){var s=_7e.value;var len=s.length;return (len>0&&s[len-1]!=" ");};var _81=function(_82){var s=_82.value;var len=s.length;if(len>0&&s[len-1]!=" "){_82.value+=" ";}};var _85=function(tag,_87,_88){if(_7d(_87)){_87.value=_7a(_87.value);}story.setTiddlerTag(_88.title,tag,0);_81(_87);abego.IntelliTagger.assistTagging(_87,_88);};var _89=function(n){if(_76&&_76.length>n){return _76[n];}return (_74&&_74.length>n)?_74[n]:null;};var _8b=function(n,_8d,_8e){var _8f=_89(n);if(_8f){_85(_8f,_8d,_8e);}};var _90=function(_91){var pos=_91.value.lastIndexOf(" ");var _93=(pos>=0)?_91.value.substr(++pos,_91.value.length):_91.value;return new RegExp(_93.escapeRegExp(),"i");};var _94=function(_95,_96){var _97=0;for(var i=0;i<_95.length;i++){if(_96[_95[i]]){_97++;}}return _97;};var _99=function(_9a,_9b,_9c){var _9d=1;var c=_9a[_9b];for(var i=_9b+1;i<_9a.length;i++){if(_9a[i][1].count==c){if(_9a[i][0].match(_9c)){_9d++;}}else{break;}}return _9d;};var _a0=function(_a1,_a2){var _a3=abego.internal.getTagManager().getSortedTagInfos();var _a4=[];var _a5=0;for(var i=0;i<_a3.length;i++){var c=_a3[i][1].count;if(c!=_a5){if(_a2&&(_a4.length+_99(_a3,i,_a1)>_a2)){break;}_a5=c;}if(c==1){break;}var s=_a3[i][0];if(s.match(_a1)){_a4.push(s);}}return _a4;};var _a9=function(_aa,_ab){return abego.filterStrings(abego.internal.getTagManager().getAllTags(_ab),_aa);};var _ac=function(){if(!_71){return;}var _ad=store.getTiddlerText("IntelliTaggerMainTemplate");if(!_ad){_ad="<b>Tiddler IntelliTaggerMainTemplate not found</b>";}_71.innerHTML=_ad;applyHtmlMacros(_71,null);refreshElements(_71,null);};var _ae=function(e){if(!e){var e=window.event;}var tag=this.getAttribute("tag");if(_73){_73.call(this,tag,e);}return false;};var _b2=function(_b3){createTiddlyElement(_b3,"span",null,"tagSeparator"," | ");};var _b4=function(_b5,_b6,_b7,_b8,_b9){if(!_b6){return;}var _ba=_b8?abego.toSet(_b8):{};var n=_b6.length;var c=0;for(var i=0;i<n;i++){var tag=_b6[i];if(_ba[tag]){continue;}if(c>0){_b2(_b5);}if(_b9&&c>=_b9){abego.createEllipsis(_b5);break;}c++;var _bf="";var _c0=_b5;if(_b7<10){_c0=createTiddlyElement(_b5,"span",null,"numberedSuggestion");_b7++;var key=_b7<10?""+(_b7):"0";createTiddlyElement(_c0,"span",null,"suggestionNumber",key+") ");var _c2=_b7==1?"Return or ":"";_bf=" (Shortcut: %1Alt-%0)".format([key,_c2]);}var _c3=config.views.wikified.tag.tooltip.format([tag]);var _c4=(_78(tag)?"Remove tag '%0'%1":"Add tag '%0'%1").format([tag,_bf]);var _c5="%0; Shift-Click: %1".format([_c4,_c3]);var btn=createTiddlyButton(_c0,tag,_c5,_ae,_78(tag)?"currentTag":null);btn.setAttribute("tag",tag);}};var _c7=function(){if(_71){window.scrollTo(0,ensureVisible(_71));}if(_77()){window.scrollTo(0,ensureVisible(_77()));}};var _c8=function(e){if(!e){var e=window.event;}if(!_71){return;}var _cb=resolveTarget(e);if(_cb==_77()){return;}if(abego.isDescendantOrSelf(_71,_cb)){return;}abego.IntelliTagger.close();};addEvent(document,"click",_c8);var _cc=Story.prototype.gatherSaveFields;Story.prototype.gatherSaveFields=function(e,_ce){_cc.apply(this,arguments);var _cf=_ce.tags;if(_cf){_ce.tags=_cf.trim();}};var _d0=function(_d1){story.focusTiddler(_d1,"tags");var _d2=abego.getTiddlerField(story,_d1,"tags");if(_d2){var len=_d2.value.length;abego.setRange(_d2,len,len);window.scrollTo(0,ensureVisible(_d2));}};var _d4=config.macros.edit.handler;config.macros.edit.handler=function(_d5,_d6,_d7,_d8,_d9,_da){_d4.apply(this,arguments);var _db=_d7[0];if((_da instanceof Tiddler)&&_db=="tags"){var _dc=_d5.lastChild;_dc.onfocus=function(e){abego.IntelliTagger.assistTagging(_dc,_da);setTimeout(function(){_d0(_da.title);},100);};_dc.onkeyup=function(e){if(!e){var e=window.event;}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode>=48&&e.keyCode<=57)){_8b(e.keyCode==48?9:e.keyCode-49,_dc,_da);}else{if(e.ctrlKey&&e.keyCode==32){_8b(0,_dc,_da);}}if(!e.ctrlKey&&(e.keyCode==13||e.keyCode==10)){_8b(0,_dc,_da);}setTimeout(function(){abego.IntelliTagger.assistTagging(_dc,_da);},100);return false;};_81(_dc);}};var _e0=function(e){if(!e){var e=window.event;}var _e3=resolveTarget(e);var _e4=_e3.getAttribute("tiddler");if(_e4){story.displayTiddler(_e3,_e4,"IntelliTaggerEditTagsTemplate",false);_d0(_e4);}return false;};var _e5=config.macros.tags.handler;config.macros.tags.handler=function(_e6,_e7,_e8,_e9,_ea,_eb){_e5.apply(this,arguments);abego.IntelliTagger.createEditTagsButton(_eb,createTiddlyElement(_e6.lastChild,"li"));};var _ec=function(){if(_71&&_72&&!abego.isDescendantOrSelf(document,_72)){abego.IntelliTagger.close();}};setInterval(_ec,100);abego.IntelliTagger.displayTagSuggestions=function(_ed,_ee,_ef,_f0,_f1){_74=_ed;_75=abego.toSet(_ee);_76=_ef;_72=_f0;_73=_f1;if(!_71){_71=createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");_71.style.position="absolute";}_ac();abego.openAsPopup(_71);if(_77()){var w=_77().offsetWidth;if(_71.offsetWidth<w){_71.style.width=(w-2*(_6e+_6f))+"px";}abego.moveBelowAndClip(_71,_77());}else{abego.centerOnWindow(_71);}_c7();};abego.IntelliTagger.assistTagging=function(_f3,_f4){var _f5=_90(_f3);var s=_f3.value;if(_7d(_f3)){s=_7a(s);}var _f7=s.readBracketedList();var _f8=_f7.length>0?abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(_f7),_f5,_70):_a0(_f5,_70);abego.IntelliTagger.displayTagSuggestions(_a9(_f5,_f7),_f7,_f8,_f3,function(tag,e){if(e.shiftKey){onClickTag.call(this,e);}else{_85(tag,_f3,_f4);}});};abego.IntelliTagger.close=function(){abego.closePopup(_71);_71=null;return false;};abego.IntelliTagger.createEditTagsButton=function(_fb,_fc,_fd,_fe,_ff,id,_101){if(!_fd){_fd="[edit]";}if(!_fe){_fe="Edit the tags";}if(!_ff){_ff="editTags";}var _102=createTiddlyButton(_fc,_fd,_fe,_e0,_ff,id,_101);_102.setAttribute("tiddler",(_fb instanceof Tiddler)?_fb.title:String(_fb));return _102;};abego.IntelliTagger.getSuggestionTagsMaxCount=function(){return 100;};config.macros.intelliTagger={label:"intelliTagger",handler:function(_103,_104,_105,_106,_107,_108){var _109=_107.parseParams("list",null,true);var _10a=_109[0]["action"];for(var i=0;_10a&&i<_10a.length;i++){var _10c=_10a[i];var _10d=config.macros.intelliTagger.subhandlers[_10c];if(!_10d){abego.alertAndThrow("Unsupported action '%0'".format([_10c]));}_10d(_103,_104,_105,_106,_107,_108);}},subhandlers:{showTags:function(_10e,_10f,_110,_111,_112,_113){_b4(_10e,_74,_76?_76.length:0,_76,abego.IntelliTagger.getSuggestionTagsMaxCount());},showFavorites:function(_114,_115,_116,_117,_118,_119){_b4(_114,_76,0);},closeButton:function(_11a,_11b,_11c,_11d,_11e,_11f){var _120=createTiddlyButton(_11a,"close","Close the suggestions",abego.IntelliTagger.close);},version:function(_121){var t="IntelliTagger %0.%1.%2".format([version.extensions.IntelliTaggerPlugin.major,version.extensions.IntelliTaggerPlugin.minor,version.extensions.IntelliTaggerPlugin.revision]);var e=createTiddlyElement(_121,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_124){var e=createTiddlyElement(_124,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">&copy; 2006-2007 <b><font color=\"red\">abego</font></b> Software<font>";}}};})();config.shadowTiddlers["IntelliTaggerStyleSheet"]="/***\n"+"!~IntelliTagger Stylesheet\n"+"***/\n"+"/*{{{*/\n"+".intelliTaggerSuggestions {\n"+"\tposition: absolute;\n"+"\twidth: 600px;\n"+"\n"+"\tpadding: 2px;\n"+"\tlist-style: none;\n"+"\tmargin: 0;\n"+"\n"+"\tbackground: #eeeeee;\n"+"\tborder: 1px solid DarkGray;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .currentTag   {\n"+"\tfont-weight: bold;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .suggestionNumber {\n"+"\tcolor: #808080;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .numberedSuggestion{\n"+"\twhite-space: nowrap;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter {\n"+"\tmargin-top: 4px;\n"+"\tborder-top-width: thin;\n"+"\tborder-top-style: solid;\n"+"\tborder-top-color: #999999;\n"+"}\n"+".intelliTaggerSuggestions .favorites {\n"+"\tborder-bottom-width: thin;\n"+"\tborder-bottom-style: solid;\n"+"\tborder-bottom-color: #999999;\n"+"\tpadding-bottom: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .normalTags {\n"+"\tpadding-top: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter .button {\n"+"\tfont-size: 10px;\n"+"\n"+"\tpadding-left: 0.3em;\n"+"\tpadding-right: 0.3em;\n"+"}\n"+"\n"+"/*}}}*/\n";config.shadowTiddlers["IntelliTaggerMainTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class=\"favorites\" macro=\"intelliTagger action: showFavorites\"></div>\n"+"<div class=\"normalTags\" macro=\"intelliTagger action: showTags\"></div>\n"+"<!-- The Footer (with the Navigation) ============================================ -->\n"+"<table class=\"intelliTaggerFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n"+"  <tr>\n"+"\t<td align=\"left\">\n"+"\t\t<span macro=\"intelliTagger action: closeButton\"></span>\n"+"\t</td>\n"+"\t<td align=\"right\">\n"+"\t\t<span macro=\"intelliTagger action: version\"></span>, <span macro=\"intelliTagger action: copyright \"></span>\n"+"\t</td>\n"+"  </tr>\n"+"</tbody></table>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["IntelliTaggerEditTagsTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='title' macro='view title'></div>\n"+"<div class='tagged' macro='tags'></div>\n"+"<div class='viewer' macro='view text wikified'></div>\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["IntelliTaggerPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";config.shadowTiddlers["IntelliTaggerPlugin SourceCode"]="[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/archive/IntelliTaggerPlugin/Plugin-IntelliTagger-src.1.0.2.js]]\n";(function(){var _126=restart;restart=function(){setStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"IntelliTaggerStyleSheet");_126.apply(this,arguments);};})();}
// %/
/***
|''Name:''|IntelliTagsEditCommandPlugin|
|''Version:''|1.0.0 (2007-10-03)|
|''Type:''|plugin|
|''Description:''|A command for your tiddler's toolbar to directly edit the tiddler's tags using the IntelliTaggerPlugin, without switching to "edit mode".|
|''Source:''|http://tiddlywiki.abego-software.de/#IntelliTagsEditCommandPlugin|
|''Requires:''|IntelliTaggerPlugin http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''~CoreVersion:''|2.0.8|
|''Browser:''|Firefox 1.5.0.2 or better|
***/
/***
!Using the "IntelliTagsEditCommandPlugin"
Add the command {{{intelliTagsEdit}}} into the 'macro' attribute of the 'toolbar' {{{<div...>}}} in your ViewTemplate.

''Example:''
{{{
<div class='toolbar' 
        macro='toolbar -closeTiddler closeOthers +editTiddler intelliTagsEdit permalink references jump'>
</div>
}}}

This adds a "tags" button to the toolbar of the tiddlers (next to the ''edit'' button). Pressing the "tags" button will open the input field for the tiddler's tags and let you edit the tags with all the [[IntelliTaggerPlugin|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin]] features.
***/
/***
!Source Code
***/
//{{{
(function(){

if (!version.extensions.IntelliTaggerPlugin)
    throw Error("IntelliTagsEditCommandPlugin requires the IntelliTaggerPlugin (http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin)");

if (config.commands.intelliTagsEdit) 
    return;

config.commands.intelliTagsEdit = {
	text: "tags",
	tooltip: "edit the tags"
};

config.commands.intelliTagsEdit.handler = function(event,src,title) {
	var button = abego.IntelliTagger.createEditTagsButton(title, null, "tags", "edit the tags");
	button.onclick(event);
	return false;
};

})();
//}}}
[img[Tocado por Su Apéndice Tallarinesco|imagesWiki/FlyingSpaghettiMonster.jpg][http://es.wikipedia.org/wiki/Pastafarismo]]

<<tiddler Concepts>>
<<tiddler Concepts>>
<<tiddler Concepts>>
<<tiddler Concept>>
<<formTiddler ContactsFormTemplate>>
<data>{"firstname":"Ivan","lastname":"Block","email":"jb@example.org","phone":"555-1234567","city":"Boston","state":"MA","notes":"works as a designer, \nmay help with logo.","webpage":"www.example.org","country":"US"}</data>

{{floatleft{[img(120px,auto)[Emmanuel Kant, wikipedia|imagesWiki/kant.jpeg][http://fr.wikipedia.org/wiki/Emmanuel_Kant]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Kant","prénom":"Emmanuel","initiales":"E"}</data>
<<tiddler Article>>
++++![Résumé]
Kim revient sur les origines du naturalisme dans la philosophie étasunienne de la première moitié du XXème siècle, avec des auteurs comme [[Roy Wood Sellars|Sellars, Roy Wood]], [[John Dewey|Dewey, John]], [[John Herman Randall|Randall, John Herman]], [[Sydney Hook|Hook, Sydney]], et [[Ernest Nagel|Nagel, Ernest]].

Il montre que les thèses principales de ces auteurs sont:
* La ''méthode scientifique'' comme unique source de connaissances
* La ''clôture causale/explicative'' du monde naturel
===

+++![Commentaires]
L'article s'avère très instructif pour comprendre les fondements du naturalisme
===

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom","")
   var prénom=DataTiddler.getData(titre,"prénom","")
   var initiales=DataTiddler.getData(titre,"initiales","")
   var titrearticle=DataTiddler.getData(titre,"titrearticle","")
   var datepublication=DataTiddler.getData(titre,"datepublication","")
   var journal=DataTiddler.getData(titre,"journal","")
   var volumejournal=DataTiddler.getData(titre,"volumejournal","")
   var numérojournal=DataTiddler.getData(titre,"numérojournal","")
   var pagesarticle=DataTiddler.getData(titre,"pagesarticle","")
   return "|bgcolor(#ffff99): ''Référence:'' "+nom+", "+initiales+" ("+datepublication+"): '"+titrearticle+"', //"+journal+"// ''"+volumejournal+"''("+numérojournal+"):"+pagesarticle+"|";
</script>
----
+++[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var pagescitation=DataTiddler.getData(titre,"pagescitation")
   return nom+", "+initiales+" "+datepublication+":"+pagescitation;
</script>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
----
===<<newNoteHere>>
{{floatleft{[img[Jaegwon Kim|./imagesWiki/JaegwonKim.jpg]]}}}
Philosophe étasunien d'origine coréenne, influencé par [[Hempel|Hempel, Carl G.]] et Chisholm, il est spécialisé en [[philosophie de l'esprit|PhiloEsprit]], notamment le [[problème corps-esprit|Problème Corps/Esprit]], en [[métaphysique|Métaphysique]], en [[épistémologie|Epistémologie]] et [[philosophie des sciences|PhiloSciences]].

En [[philosophie de l'esprit|PhiloEsprit]], il a défendu différentes théories, dont un [[physicalisme|Physicalisme]] [[non-réductionniste|Réductionnisme]] basé sur le concept de [[survenance|Survenance]], puis s'est démarqué du [[physicalisme|Physicalisme]] face au problème des [[qualia|Qualia]].

En [[métaphysique|Métaphysique]], il a travaillé sur les événements et les [[propriétés|Propriété]].

En [[épistémologie|Epistémologie]], il a critiqué l'[[épistémologie naturalisée|Quine (1969) - "Epistemology Naturalized"]] de [[Quine|Quine, Willard Van Orman]], car il considère qu'elle est purement descriptive et ne répond pas à la [[normativité|Normativité]] qu'on demande d'une épistémologie.

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Kim","prénom":"Jaegwon","initiales":"J"}</data>
<<tiddler AutoRefresh on>><<tiddler Article>>

++++![Résumé]
L'auteur définit les fonctions biologiques en termes de //design// tout en affirmant que cette notion, dans le cadre de la théorie darwinienne, n'est pas relative aux intentions d'un créateur intentionnel: "we can think of design without a designer".

La fonction d'une partie d'un système technique est relative à la contribution qu'elle apporte au fonctionnement de la machine dans son ensemble, ainsi qu'au lien entre le fonctionnement de la machine et les intentions de son créateur. En biologie, on peut faire la même distinction en partant de l'idée que la source du //design// est la sélection naturelle.

Par ailleurs, il défend l'idée d'un pluralisme inhérent à la biologie, en vertu duquel plusieurs intuitions et analyses peuvent être correctes.
===

<<tiddler RéférenceArticle>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere>>
----<data>{"nom":"Kitcher","prénom":"Philip","initiales":"P","isArticleRevue":false,"isArticleRecueil":true,"titrearticle":"Function and Design","datepublication":"1998","journal":"The Philosophy of Biology","pagesarticle":"259-279"}</data>
{{floatleft{
[img(120px,auto)[imagesWiki/Philip Kitcher.jpg][http://www.columbia.edu/~psk16/]]
}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Kitcher","prénom":"Philip","initiales":"P","isArticleRevue":false,"isArticleRecueil":true,"titrearticle":"Function and Design","datepublication":"1998","journal":"The Philosophy of Biology","pagesarticle":"259-279"}</data>
{{floatleft{[img(120px,auto)[Julien Onfray de La Mettrie, wikipedia|imagesWiki/La_Mettrie.jpg][http://fr.wikipedia.org/wiki/La_Mettrie]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"La Mettrie","prénom":"Julien Onfray de","initiales":"JO"}</data>

<<tiddler AutoRefresh on>><<tiddler Livre>>++++![Résumé]
Dictionnaire philosophique de référence. Reflète la pensée philosophique de la première moitié du XXème siècle.
===

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Lalande","prénom":"André","initiales":"A","titrelivre":"Vocabulaire technique et critique de la philosophie ","datepublication":"1926","villeédition":"Paris","noméditeur":"PUF","dateédition":"1997","pagescitation":"\"Objectif\""}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!Objectif
<part Objectif> ''2. Objectif'', adj. D. //Objektiv// ; E. //Objective// ; I. //Obbietivo// et //Oggetivo//.
{{indent{
''A.'' Dans la langue de la scholastique, (à partir de Duns Scot d'après Eucken, //Gesch. der phil. Terminologie//, p. 68) et encore au XVII° siècle: //est objectif// ou //existe objectivement//, ce qui constitue une représentation de l'esprit, et non pas une réalité subsistant en elle-même et indépendante. [...]
''B.'' @@color:red;Opposé à //subjectif// (au sens d’//apparent//, //irréel//)@@&nbsp;: qui constitue un objet, au sens ''D'', une réalité subsistant «&nbsp;en elle-même&nbsp;», c.-à-d. indépendamment de toute connaissance ou idée. [...]
''C.'' @@color:red;Opposé à //subjectif//, au sens d’//individuel//.@@ — Valable pour tous les esprits, et non pas seulement pour tel ou tel individu. [...]
''D.'' En parlant des esprits&nbsp;: qui voit les choses d’une manière objective (au sens ''C''), @@color:red;qui ne se laisse pas entraîner par ses préférences ou ses habitudes individuelles.@@
''E.'' @@color:red;Indépendant de la volonté@@, comme le sont les phénomènes physiques. [...]
''F.'' @@color:red;Opposé à //subjectif// (au sens de //conscient//, //mental//).@@ [...]}}}
([[Lalande, A 1926:"Objectif"]]) </part>
<data>{"nom":"Lalande","prénom":"André","initiales":"A","titrelivre":"Vocabulaire technique et critique de la philosophie ","datepublication":"1926","villeédition":"Paris","noméditeur":"PUF","dateédition":"1997","pagescitation":"\"Objectif\""}</data>
<<tiddler Auteur>>


!Publications
<<forEachTiddler
	where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Lalande","prénom":"André","initiales":"A","titrelivre":"Vocabulaire technique et critique de la philosophie ","datepublication":"1926","villeédition":"Paris","noméditeur":"PUF","dateédition":"1997"}</data>
<<LaunchApplication "Biblioscape" "Bibliogr" "file:///../../PortableApps/Biblioscape7/Biblioscape.exe">>
{{floatleft{[img(120px,auto)[Pierre Simon de Laplace, wikipedia|imagesWiki/laplace.jpeg][http://fr.wikipedia.org/wiki/Pierre-Simon_Laplace]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Laplace","prénom":"Pierre Simon de","initiales":"PS"}</data>

<<tiddler Citation>>
!définition
<part définition> "Il n'y a pas de définition des choses que l'esprit n'a pas créées et qu'il n'enferme pas tout entières; il n'y a pas, en un mot, de définition des choses naturelles."

[[Claude Bernard|Bernard, Claude]], //Leçons sur les phénomènes de la vie communs aux animaux et aux végétaux//, p. 22 
Cité par [[Le Dantec, F (1896): Théorie nouvelle de la vie]], [[p. 6|Le Dantec 1896:6]] </part>
<<tiddler Livre>>

L'auteur commence dans l'intro avec une comparaison de la vie et du phlogistique, comme de principes ou de propriétés communes à certains corps (combustibles, dans le premier cas, vivants dans le second) que l'on cherche en vain à définir et dont on suppose l'existence.
<<tiddler Auteur>>

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Le Dantec","prénom":"Félix","initiales":"F"}</data>

<<tiddler AutoRefresh on>><<tiddler Livre>>

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Lecourt","prénom":"Dominique","initiales":"D","titrelivre":"Dictionnaire d`histoire et philosophie des sciences","datepublication":"1999","villeédition":"Paris","noméditeur":"PUF","dateédition":"1999","pagescitation":"\"Objectivité\"","motscléscitation":"Objectivité"}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!Objectivité
<part Objectivité> "''Objectivité.'' [...] Si l'on s'en remet au sens courant du mot, peut être dit «&nbsp;objectif&nbsp;» tout ce qui @@color:red;existe indépendamment de toute connaissance ou idée@@. Peut également être dit objectif ce qui est @@color:red;valable pour tous les esprits@@, et non seulement pour tel ou tel individu. On caractérise ensuite d'objectif ce qui est @@color:red;indépendant de la volonté@@. Mais ultimement, on dit qu'est objectif l'esprit de celui @@color:red;qui voit les choses telles qu'elles sont@@, sans se laisser influencer par ses préférences. [...]" ([[Lecourt, D 1999:"Objectivité"]]) </part><data>{"nom":"Lecourt","prénom":"Dominique","initiales":"D","titrelivre":"Dictionnaire d`histoire et philosophie des sciences","datepublication":"1999","villeédition":"Paris","noméditeur":"PUF","dateédition":"1999","pagescitation":"\"Objectivité\"","motscléscitation":"Objectivité"}</data>
<<tiddler Auteur>>


!Publications
<<forEachTiddler
	where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Lecourt","prénom":"Dominique","initiales":"D","titrelivre":"Dictionnaire d`histoire et philosophie des sciences","datepublication":"1999","villeédition":"Paris","noméditeur":"PUF","dateédition":"1999"}</data>
{{floatleft{[img(120px,auto)[Gottfried Wilhelm Leibniz, wikipedia|imagesWiki/Leibniz.jpg][http://fr.wikipedia.org/wiki/Gottfried_Wilhelm_von_Leibniz]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Leibniz","prénom":"Gottfried Wilhelm von","initiales":"GW"}</data>
http://www.sur-la-toile.com/article-5992-Les-plantes-parlent-.html

Les plantes parlent !
Biologie Les plantes utilisent des composés chimiques pour communiquer entre elles.


Une nouvelle étude de l'université de Californie s'est focalisée sur une plante parasite ressemblant à la vigne. On a montré que non seulement cette plante est capable de puiser dans les nutriments de la plante hôte mais aussi dans le « système de communication » de cette dernière et peut alors utiliser cela afin de rassembler de l'information pour son propre usage.

Les plantes communiquent avec différentes parties de leurs structures en utilisant des molécules ARN. Dans le cas de la plante étudiée, qui parasite des plants de tomates, les molécules ARN peuvent en fait passer dans la plante parasite et voyager jusqu'à 30 cm de l'endroit où la plante parasite s'est greffée sur le plant de tomate.

La plante parasite peut probablement être intéressée de savoir quand la plante fleurit afin qu'elle puisse fleurir en même temps. Les molécules ARN pourraient ainsi servir à la synchronisation de cycles. Les résultats de cette étude pourront servir à donner une méthode de combattre les plantes parasites qui affectent les cultures.

On avait aussi trouvé il y a deux ans que certaines plantes parasites alors non matures « reniflent » l'air en cherchant les composés chimiques relâchés par les plantes hôtes.

On a également remarqué que certaines plantes communiquent avec leurs congénères lorsqu'elles sont attaquées au niveau des racines par des insectes ; de cette manière, les plantes prévenues avaient le temps d'activer leur système de défense avant l'arrivée des insectes.

Sources : Imaginascience, Softpedia 
<<tiddler Note>>
[[Ernst Mayr|Mayr, Ernst]], à la suite d'autres auteurs, a proposé une distinction entre plusieurs formes de téléologie:++++[...]
#''La téléologie cosmique:'' C'est une orientation à grande échelle dans l'évolution de l'univers ou dans celle des êtres vivants. ([[Teilhard de Chardin|Teilhard de Chardin, Pierre]], par exemple?, ou l'[[IntelligentDesign]])
#''Les processus téléomatiques'' semblent être dirigés vers un but par des lois naturelles et des conditions aux limites. Les exemples de Mayr sont des pierres tombant dans un puit et des tisonniers qui se refroidissent. Les pierres atteignent le fond du puit, où elles restent, et les tisonniers atteignent l'équilibre thermodynamique à la température ambiante.
#''Les processus [[téléonomiques|Téléonomie]]'' sont déterminés non seulement par des contraintes externes (lois physiques et conditions limites), mais aussi par une espèce de représentation interne de l'état final qui lance et guide le comportement ou le développement. Mayr dit: "a teleonomic process or behavior is one that owes its goal-directedness to the operation of a program." Il s'agit de processus biologiques où les représentations mentales font défaut.
#''Systèmes téléologiques ou [[fonctionnels|Fonction]]:'' Selon Mayr, les systèmes en question ne relèvent pas vraiment de la //téléologie// dans la mesure où celle-ci ne s'applique qu'aux processus, pas aux systèmes. Il propose plutôt, dans ce dernier cas, de parler d'adaptations liées à la sélection naturelle.
:(Pour une discussion un peu plus détaillée, voir [[McLaughlin, P (2001): What Functions Explain]])
===
/***
|Name:|LessBackupsPlugin|
|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1 ($Rev: 2320 $)|
|Date:|$Date: 2007-06-18 22:37:46 +1000 (Mon, 18 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
|Author:|Simon Baird|
|Email:|simon.baird@gmail.com|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second.  So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
!!Notes
Works in IE and Firefox only.  Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
***/
//{{{

var MINS  = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS  = 24 * HOURS;

if (!config.lessBackups) {
	config.lessBackups = {
		// comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
		modes: [
			["YYYY",  365*DAYS], // one per year for ever
			["MMM",   31*DAYS],  // one per month
			["ddd",   7*DAYS],   // one per weekday
			//["d0DD",  1*DAYS],   // one per day of month
			["h0hh",  24*HOURS], // one per hour
			["m0mm",  1*HOURS],  // one per minute
			["s0ss",  1*MINS],   // one per second
			["latest",0]         // always keep last version. (leave this).
		]
	};
}

window.getSpecialBackupPath = function(backupPath) {

	var now = new Date();

	var modes = config.lessBackups.modes;

	for (var i=0;i<modes.length;i++) {

		// the filename we will try
		var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
				'$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')

		// open the file
		try {
			if (config.browser.isIE) {
				var fsobject = new ActiveXObject("Scripting.FileSystemObject")
				var fileExists  = fsobject.FileExists(specialBackupPath);
				if (fileExists) {
					var fileObject = fsobject.GetFile(specialBackupPath);
					var modDate = new Date(fileObject.DateLastModified).valueOf();
				}
			}
			else {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
				file.initWithPath(specialBackupPath);
				var fileExists = file.exists();
				if (fileExists) {
					var modDate = file.lastModifiedTime;
				}
			}
		}
		catch(e) {
			// give up
			return backupPath;
		}

		// expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
		// June file on disk that's more than an month old then it must be stale so overwrite
		// note that "latest" should be always written because the expiration period is zero (see above)
		var expiry = new Date(modDate + modes[i][1]);
		if (!fileExists || now > expiry)
			return specialBackupPath;
	}
}

// hijack the core function
window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
	return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
}

//}}}

This information taken from Julian Knight's ~TiddlyWiki, which can be [[found here|http://knighjm.googlepages.com/knightnet-default-tw.html]].

Macros let you write tiddlers containing more exotic objects than just text. Here are the built-in macros:

|!Macro|!Description|!Syntax|
|allTags|List all the tags used in the current ~TiddlyWiki file<<br>>Each entry is a button that pops up the list of tiddlers for that tag<<br>><<slider sliderID [[Internal Macros/tags]] 'Click to show example output'>>|{{{<<allTags>>}}}|
|br|Force a line break|{{{<<br>>}}}|
|closeAll|Displays a button to close all displayed Tiddlers<<br>><<closeAll>>|{{{<<closeAll>>}}}|
|gradient|<<gradient [horiz|vert] #bbbbbb #eeeeee #ffffff>>Produces a horizontal or vertical background gradient fill>><<br>>There can be 2 or more colours in the format: #rrggbb (hex), or RGB(r,g,b) (CSS)<<br>>Other CSS formatting can also be added, e.g. {{{<<gradient vert #000000 #660000 #aa2222>>color:#ffffff;font-size:12pt;Darkness>>}}}|{{{<<gradient [horiz|vert] #bbbbbb #eeeeee #ffffff>>Some text here>>}}}|
|list all|List all Tiddlers in a Tiddler|{{{<<list all>>}}}|
|list missing|List all missing tiddlers|{{{<<list missing>>}}}|
|list orphans|List all orphaned tiddlers|{{{<<list orphans>>}}}|
|newJournal|Displays a button to create new date & Time stamped Tiddler (Date/time format optional)<<br>><<newJournal "DD MMM YYYY, hh:mm">> <<br>>You can also add optional tag names after the date format: <<newJournal "DD MMM YYYY, hh:mm" tag1 TagTwo>> |{{{<<newJournal [DateFormatString]>>}}} <<br>> {{{<<newJournal "DD MMM YYYY, hh:mm" tag1 TagTwo>>}}} |
|newTiddler|Displays a button to create new Tiddler<<br>><<newTiddler>>|{{{<<newTiddler>>}}}|
|permaview|Displays a button to change the URL link for all open Tiddlers - or the containing tiddler if used in the command bar (See the ViewTemplate)<<br>><<permaview>>|{{{<<permaview>>}}}|
|saveChanges |Button to save all ~TiddlyWiki changes (or the current tiddler if used in the command bar (see EditTemplate)<<br>><<saveChanges>>|{{{<<saveChanges>>}}}|
|search|Display a Search box<<br>><<search>>|{{{<<search>>}}}|
|slider|Display a Slider (a collapsable display of another tiddler)<<br>>See the allTags entry for an example. Note: Put quotes around the label if needing spaces<<br>>where: ''ID''=cookie name to be used to save the state of the slider, ''Tiddler''=name of the tiddler to include in the slider, ''Label''=label text of the slider button, ''tooltip''=text of the buttons tooltip|{{{<<slider ID Tiddler [Label] [toolTip]>>}}}|
|sparkline|Produces a sparkline graphic<<br>>e.g. <<sparkline 163 218 231 236 232 266 176 249 289 1041 1835 2285 3098 2101 1755 3283 3353 3335 2898 2224 1404 1354 1825 1839 2142 1942 1784 1145 979 1328 1611>>|{{{<<sparkline num1 num2 ... numN>>}}}|
|tabs|Display Tabbed content (contents of tab provided by another tiddler)|{{{<<tabs identifier tabLabel tabName Tiddlername>>}}}|
|tag|Display a Tag ~PopUp<<br>><<tag _Config>>|{{{<<tag tagName>>}}}|
|tagChooser|Used in EditTemplate to add tags to the tags field. Doesn't actually add anything unless in edit mode (though it does show the list)<<br>><<tagChooser>>|{{{<<tagChooser>>}}}|
|tagging|<<tiddler [[Internal Macros/tagging]]>>|{{{<<tagging [TiddlerTitle]>>}}}|
|tiddler|Display contents of another tiddler inline|{{{<<tiddler Tiddler>>}}}|
|timeline|Display a timeline list of tiddlers<<br>>where the sortfield is the sort order ("modified" or "created") and maxentries is the maximum number of entries|{{{<<timeline [sortfield] [maxentries]>>}}}|
|today|Display Today's Date<<br>>e.g. <<today>>|{{{<<today [DateFormatString]>>}}}|
|version|Display ~TiddlyWiki's version<<br>>e.g. <<version>>|{{{<<version>>}}}|

!DateFormatString
Several Macros including the today macro take a DateFormatString as an optional argument. This string can be a combination of ordinary text, with some special characters that get substituted by parts of the date:
* DDD - day of week in full (eg, "Monday")
* DD - day of month, 0DD - adds a leading zero
* MMM - month in full (eg, "July")
* MM - month number, 0MM - adds leading zero
* YYYY - full year, YY - two digit year
* hh - hours
* mm - minutes
* ss - seconds
!Notes
If you need to supply a parameter that should be evaluated (e.g. a JavaScript variable), enclose the parameter in {{{{{}}} and {{{}}}}} rather than quotes. Note however, that the scope used in the evaluation is {{{global}}} rather than {{{local}}}. In other words, the evaluation is done ''before'' the parameter is passed to the macro/plugin so it cannot access any of the variables or functions defined within the macro/plugin.
!Commands supported by the toolbar macro
{{{
config.commands = {
 closeTiddler: {text: "close", tooltip: "Close this tiddler"},
 closeOthers: {text: "close others", tooltip: "Close all other tiddlers"},
 editTiddler: {text: "edit", tooltip: "Edit this tiddler", readOnlyText: "view", readOnlyTooltip: "View the source of this tiddler"},
 saveTiddler: {text: "done", tooltip: "Save changes to this tiddler", readOnlyText: "done", readOnlyTooltip: "View this tiddler normally"},
 cancelTiddler: {text: "cancel", tooltip: "Undo changes to this tiddler", hideReadOnly: true},
 deleteTiddler: {text: "delete", tooltip: "Delete this tiddler", warning: "Are you sure you want to delete '%0'?", hideReadOnly: true},
 permalink: {text: "permalink", tooltip: "Permalink for this tiddler"},
 references: {text: "references", tooltip: "Show tiddlers that link to this one", popupNone: "No references"},
 jump: {text: "jump", tooltip: "Jump to another open tiddler"}
 };
}}}
(Julian Knight, 2006-04-06)
<part tagging hidden>
Produces a list (NB: <ul> ''not'' a popup) of links to tiddlers that carry the specified tag. If no tag is specified, it looks for tiddlers tagged with the name of the current tiddler.
In HTML, the list is formatted like so:
{{{
<ul>
<li class="listTitle">List title label</li>
<li><a class="tiddlyLink ..." href="javascript:;" onclick="..."
    refresh="link" tiddlyLink="ExampleOne">ExampleOne</a></li>
</ul>
}}}
</part>
<part tags hidden>
<<allTags>>
</part>
Liste de macros bien pratiques:

*''Notes de bas de page'': Pour ajouter des notes de bas de page numérotées.+++>
{{{
```mot```
}}}
===

*''AutoRefresh'': Pour rafraîchir automatiquement les tiddlers.+++>
{{{
<<tiddler AutoRefresh on>>
}}}
===

*''fontSize'': Pour changer la taille des caractères de la page. <<fontSize "font size:">>+++>
{{{
<<fontSize>>
}}}
ou
{{{
<<fontSize "font size:">>
}}}
===

*''Tiddler'': Fait apparaître à l'intérieur d'un tiddler le contenu d'un autre tiddler appelé.+++>
{{{
<<tiddler [[nom du tiddler appelé]]>>
}}}
===

*''Part Tiddler'': Permet de citer/réutiliser une partie d'un tiddler.+++>
{{{
Pour le nommer: <part partName> tiddler content </part>
}}}
{{{
Pour le rappeler: <<tiddler TiddlerName/partName>>
}}}
===
*''Annotations:'' Permet d'annoter un mot, comme par ((exemple(ceci est un exemple!)))
{{{
Permet d'annoter un mot, comme par ((exemple(ceci est un exemple!)))
}}}
*''HideTiddlerTags:'' Permet de cacher les cacher les mots-clefs d'un tiddler.
{{{
<<tiddler HideTiddlerTags>>
}}}
*''ForEachTiddler'': Fait apparaître tous les tiddlers mentionnés dans la condition. +++[Par exemple]
{{{
<<forEachTiddler 
where 
'tiddler.tags.contains("Livres") && tiddler.data("nom")' 
sortBy
'tiddler.title'
write 
 '"{{justfine{"+tiddler.data("nom")+",  }}} {{italic{ "+tiddler.data("titrelivre")+".}}} "+tiddler.data("datepublication")+" [[here|"+tiddler.title+"]]<br>\n"'
>>
}}}
===
*''Liste des publications'': Inséré dans le tiddler d'un auteur, donne la liste de ses publications dont il existe un tiddler.
{{{
<<listePublications>>
}}}
*''Database'': Permet de créer une base de données dans un tiddler.
{{{
<<datadb>>
}}}


/***
Fournit la liste des notes se rapportant au tiddler dans lequel on insère la macro.

!Usage
{{{
<<listeNotes>>
}}}

!Code
***/
//{{{
config.macros.listeNotes = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
	  var guion = store.getTiddlerText('GuiOn');
	  var virgule = guion+", "+guion
	  var newLine = store.getTiddlerText('BackSlash');
	  var texte = guion+"*[["+guion+"+tiddler.title+"+guion+"]]"+newLine+guion;
	  wikify("<<forEachTiddler where 'tiddler.tags.contains(context.inTiddler.title)'>>",place,null,tiddler);		
		}
	};
//}}}
<script>
	var tags = store.getTags();
	if(tags.length == 0) return "no tags in document";
	var out="";
	for(var t=0; t<tags.length; t++) {
		out+="*[["+tags[t][0]+"]] ("+tags[t][1]+")"+"\n";
		var tids=store.getTaggedTiddlers(tags[t][0]);
		for (i=0; i<tids.length; i++) out+="##[["+tids[i].title+"]]\n";
	}
	return out;
</script>


<<tiddler AutoRefresh on>><<tiddler Livre>>++++![Résumé]
Dictionnaire de référence de la langue française de la fin du XIXème siècle.
===

+++![Chapitres]
<<newChapterHere>>
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
etc.
===

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Littré","prénom":"Emile","initiales":"E","titrelivre":"Dictionnaire de la langue française","datepublication":"1872-1877","pagescitation":"\"Objectif\""}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!Objectif
<part Objectif> "''Objectif, ive'' (de l'anc. franç. //object//, objet), //adj//. [...] <> Dans le langage de la scolastique et de [[Descartes|Descartes, René]]. Qui est relatif à une entité intermédiaire entre le monde extérieur et la pensée ; l'entendement, dans cette vue, étant en communication non avec le monde extérieur, mais avec des représentations de ce monde que l'on supposait les seuls objets de la pensée ; de sorte que, pour [[Descartes|Descartes, René]], le soleil par exemple est dans la pensée objectivement ou par représentation, et, dans la nature, actuellement ou en effet. Par la réalité objective d'une idée, j'entends l'entité ou l'être de la chose représentée par cette idée, en tant que cette entité est dans l'idée ; car tout ce que nous concevons comme étant dans les objets des idées, tout cela est objectivement ou par représentation dans les idées mêmes, [[DESC.|Descartes, René]] Rép. aux 2er object. 59. Les idées qui me représentent des substances sont sans doute quelque chose de plus [que des façons de penser], et contiennent en soi, pour ainsi parler, plus de réalité objective, [[DESC.|Descartes, René]] Médit. III, 10. Il est évident que ce qui est commun à tous et à toutes parties de tous convient à l'idée objective de tous, c'est-à-dire à l'idée qui est en Dieu de toutes les modalités de ses attributs, BOULLAINVILLIERS, Réfut. de Spinosa, p. 149. Aujourd'hui, objectif est opposé à subjectif, et se dit de toute idée qui vient des objets extérieurs à l'esprit ; cette nouvelle acception, qui est seule maintenant en usage, est due à la philosophie de [[Kant|Kant, Emmanuel]]. On appelle, dans la philosophie allemande, idées subjectives celles qui naissent de la nature de notre intelligence et de ses facultés, et idées objectives toutes celles qui sont excitées par les sensations, STAËL, Allem. III, 6.  <> [...]" ([[Littré, E 1872-1877:"Objectif"]]) </part>

!Objectivement
<part Objectivement> "''Objectivement'', //adv//. En philos. D'une façon objective, @@color:red;relativement aux objets extérieurs@@." ([[Littré, E 1872-1877:"Objectif"]]) </part>

!Objectivité
<part Objectivité> "''Objectivité'', //sf//. En philos. Terme de philosophie moderne. Qualité de ce qui est objectif ; existence des objets en dehors de nous." ([[Littré, E 1872-1877:"Objectif"]]) </part>

!Objet
<part Objet> "''Objet'' (lat. //objectum//), //sm//. Tout ce qui se présente à la vue. <> Tout ce qui affecte les sens. [...] <> Terme de philosophie. Tout ce qui est en dehors de l'âme ; par opposition à sujet qui exprime ce qui est en dedans de l'âme. L'objet et le sujet. Terme de scolastique. Objet matériel, la chose même qu'une science considère. Objet formel, la manière dont l'objet matériel est considéré par la science. Objet total ou adéquat, réunion de l'objet matériel et de l'objet formel.  <> [...]" ([[Littré, E 1872-1877:"Objectif"]]) </part>
<data>{"nom":"Littré","prénom":"Emile","initiales":"E","titrelivre":"Dictionnaire de la langue française","datepublication":"1872-1877","pagescitation":"\"Objectif\""}</data>
<<tiddler Auteur>>
Auteur du fameux dictionnaire de la langue française.

!Publications
<<forEachTiddler
	where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Littré","prénom":"Emile","initiales":"E","titrelivre":"Dictionnaire de la langue française","datepublication":"1872-1877"}</data>

<<tiddler AutoRefresh on>>{{floatleft{[img[Fiches de lecture|IconeLivreOuvert][Livres]]}}}
[img[Livres|iconesWiki/livre.ico][Livres]]
<<tiddler HideTiddlerTags>>
----
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}

<<tiddler Concepts>>
MPTW is a distribution or edition of TiddlyWiki that includes a standard TiddlyWiki core packaged with some plugins designed to improve usability and provide a better way to organise your information. For more information see http://mptw.tiddlyspot.com/.
[[Mes textes par auteur]]
[[Mes textes par titre]]
[[My library by primary topic]]
[[My library by all topics]] - @@not working yet@@
[[My library by call number]]
[[My library by location]]


+++(mainMenu)!!!![Menu principal]
----
[img(2.5cm,auto)[Paul Klee, Head of a Man|imagesWiki/PaulKlee_head.jpg]]
----
{{textright{
[<img[Auteurs|iconesWiki/people.gif][Auteurs]]<<tag Auteurs>>
}}}

{{textright{
[<img[Livres|iconesWiki/livre.ico][Livres]]<<tag Livres>>
}}}
{{textright{
[<img[Articles|iconesWiki/journal.ico][Articles]]<<tag Articles>>
}}}
{{textright{
[<img[Citations|iconesWiki/fiches.ico][Citations]]<<tag Citations>>
}}}
{{textright{
[<img[Notes|iconesWiki/notes.ico][Notes]]<<tag Notes>>
}}}
{{textright{
[<img[Notes|iconesWiki/idée.ico][Idées]]<<tag Idées>>
}}}
{{textright{
[<img[Concepts|iconesWiki/Mots.ico][Concepts]]<<tag Concepts>>
}}}
{{textright{
[<img(30px,auto)[Théories|./imagesWiki/MaxPlanckInstitute.png][Théories]]<<tag Théories>>
}}}
{{textright{
<<tag Problèmes>>
}}}
{{textright{
[<img[Mots Clefs|iconesWiki/bwg_search_advanced.gif][MotsClefs]][[Chercher|MotsClefs]]+++^25em^
<<search>>
![[MotsClefs]]
<<tabs txtMainTab "Liste" "Liste de tous les mot-clés" TabTags "Nuage" "Nuage de mots-clefs" NuageMotsClefs "Nuage bis" "Nuage complet de tous les mots-clefs, y compris ceux dont le tiddler n'a pas été créé" TagglyTagCloud>>
===
}}}
{{textright{
[<img[Aide|iconesWiki/Couteau_suisse.ico][Aide]]<<tag Aide>>
}}}
<<toggleSideBar sidebar montrer/cacher hide>>
<br>
<br>
<br>
===
----
[img(100px,auto)[http://farm1.static.flickr.com/161/347371396_15f9f558ff.jpg]]
----
<<tiddler [[./citation]]>>

<part citation hidden>
{{fontsize8pt{"Cuando por fin tuvimos todas las respuestas,
nos cambiaron las preguntas."
{{smallcaps{
{{textright{
Mario Benedetti
}}}}}}}}} </part>
<script>
var title="MyTiddler";
var txt="this is a test"; // an empty string
var tags=[]; // an empty array
var fields={}; // an empty object
var who=config.options.txtUserName; // current username
var when=new Date(); // current timestamp
var tid=store.getTiddler(title);
if (tid) { txt=tid.text; tags=tid.tags; fields=tid.fields; }
txt=txt.replace(/Something/g,"SomethingElse");
tags=("something"+" "+"another");
store.saveTiddler(title,title,txt,who,when,tags,fields);
</script>
<<tiddler Concepts>>
<!--{{{-->
<script> // See StorySaverPlugin for more info
if (window.coreTweaks_getParameters==undefined) {
	window.coreTweaks_getParameters=window.getParameters;
	window.getParameters=function() {
		var p=window.coreTweaks_getParameters.apply(this,arguments);
		if (!p) {
			var cookies = document.cookie.split("; ");
			for (var c=0; c<cookies.length; c++) {
				var name=cookies[c].split("=")[0]; var value=cookies[c].split("=")[1];
				if (name=="txtSavedStory" && value.length) p=unescape(value);
			}
		}
		return p;
	}
}
</script>
<!--}}}-->
<!--{{{-->
<style type="text/css">
#contentWrapper {display:none;}
#splashScreen {display:block;}
/*{{{*/
body {background:#fff; color:#000;}

a {color:#04b;}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:#841; background:transparent;}
h1 {border-bottom:2px solid #ccc;}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:#014; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:#fe8; border-color:#db4;}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:#8cf;}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:#eee;
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:#999;}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#s_sidebar {}
#s_sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#s_sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#s_sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#s_sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#s_sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:#ffc [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#s_80ff80;}
.wizard .changedServer {background:#s_8080ff;}
.wizard .changedBoth {background:#s_ff8080;}
.wizard .notFound {background:#s_ffff80;}
.wizard .putToServer {background:#s_ff80ff;}
.wizard .gotFromServer {background:#s_80ffff;}

#s_messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#s_messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:#666; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:#f88;}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #s_displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#s_backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#s_backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#s_backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#s_backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#s_backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#s_backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#s_backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#s_backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#s_contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#s_mainMenu .tiddlyLinkExisting,
	#s_mainMenu .tiddlyLinkNonExisting,
	#s_sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#s_sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#s_mainMenu {position:absolute; left:0; width:8em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#s_sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#s_sidebarOptions {padding-top:0.3em;}
#s_sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#s_sidebarOptions input {margin:0.4em 0.5em;}
#s_sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#s_sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#s_sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#s_sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#s_messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#s_messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#s_contentWrapper {display:block;}
#s_splashScreen {display:none;}

#s_displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #s_backstage {width:99%;}
* html #s_backstageArea {width:99%;}
#s_backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#s_backstageToolbar {position:relative;}
#s_backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#s_backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#s_backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#s_backstage {position:relative; width:100%; z-index:50;}
#s_backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#s_backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/

#s_splashScreen {display:block;}


#s_messageArea {display:none;}

</style>
<!--}}}-->
<!--{{{-->

<div id="splashScreen">

<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class="siteTitle">[img[iconesWiki/Livres.ico][ListesMémoire]] //WikiPhilo//</span>&nbsp;
<span class="siteSubtitle">mon petit wiki perso ! (~TiddlyWiki <<version>>)</span>
</div>
<div class='headerForeground'>
<span class="siteTitle">[img[iconesWiki/Livres.ico][ListesMémoire]] //WikiPhilo//</span>&nbsp;
<span class="siteSubtitle">mon petit wiki perso ! (~TiddlyWiki <<version>>)</span>
</div>
</div>
<div id='s_mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='s_sidebar'>
<div id='s_sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='s_sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='s_displayArea'>
<div id='s_messageArea'></div>
<div id="s_tiddlerDisplay"><div id="splashId_WikiPhilo" class="tiddler">


<div class="toolbar">
	
	
	
	
	<span><span><a errortext="Error while executing macro &lt;&lt;tagger&gt;&gt;:
No such macro" class="errorButton" href="javascript:;">Error in macro &lt;&lt;tagger&gt;&gt;</a></span></span>
	
	
	
	<span><a tiddler="WikiPhilo" commandname="editTiddler" class="button defaultCommand" title="Edit this tiddler" href="javascript:;">edit</a><a tiddler="WikiPhilo" commandname="references" class="button" title="Show tiddlers that link to this one" href="javascript:;">references</a><a tiddler="WikiPhilo" commandname="closeOthers" class="button" title="Close all other tiddlers" href="javascript:;">close others</a><a tiddler="WikiPhilo" commandname="closeTiddler" class="button" title="Close this tiddler" href="javascript:;">close</a><a class="button moreCommand" title="Reveal further commands" href="javascript:;">more</a><span style="display: none;" class="moreCommand"><a tiddler="WikiPhilo" commandname="deleteTiddler" class="button" title="Delete this tiddler" href="javascript:;">delete</a><a tiddler="WikiPhilo" commandname="fields" class="button" title="Show the extended fields of this tiddler" href="javascript:;">fields</a><a tiddler="WikiPhilo" commandname="syncing" class="button" title="Control synchronisation of this tiddler with a server or external file" href="javascript:;">syncing</a><a tiddler="WikiPhilo" commandname="permalink" class="button" title="Permalink for this tiddler" href="javascript:;">permalink</a><a tiddler="WikiPhilo" commandname="jump" class="button" title="Jump to another open tiddler" href="javascript:;">jump</a></span></span>
</div>




<div class="titleContainer">
	<span class="title">WikiPhilo</span>
	<span><a tag="WikiPhilo" class="miniTag" title="Show tiddlers tagged with 'WikiPhilo'" href="javascript:;">▾</a></span>
</div>


<div class="subtitle">
	
	
	
	
</div>










<div>
	<div force="" refresh="content" tiddler="" class="viewer"> <span><span tiddler="AutoRefresh" refresh="content" class="on"></span><span tiddler="HideTiddlerTags" refresh="content"></span><span class="floatleft"><img src="imagesWiki/kandinsky.comp-8.jpg" title="Vasili Kandinsky, composition VIII (1923)"></span><br><table class="twtable"><tbody><tr class="evenRow"><td align="center"><span tiddler="./champs" refresh="content"><div class="textcenter"><br><br> <span class="quickopentag">Philosophie<a tag="Philosophie" class="button" title="Show tiddlers tagged with 'Philosophie'" href="javascript:;">▾</a></span> - <span class="quickopentag">Sciences<a tag="Sciences" class="button" title="Show tiddlers tagged with 'Sciences'" href="javascript:;">▾</a></span> - <span class="quickopentag">Littérature<a tag="Littérature" class="button" title="Show tiddlers tagged with 'Littérature'" href="javascript:;">▾</a></span> - <span class="quickopentag">Religion<a tag="Religion" class="button" title="Show tiddlers tagged with 'Religion'" href="javascript:;">▾</a></span><br><br><span class="quickopentag">Auteurs<a tag="Auteurs" class="button" title="Show tiddlers tagged with 'Auteurs'" href="javascript:;">▾</a></span> - <span class="quickopentag">Livres<a tag="Livres" class="button" title="Show tiddlers tagged with 'Livres'" href="javascript:;">▾</a></span> - <span class="quickopentag">Articles<a tag="Articles" class="button" title="Show tiddlers tagged with 'Articles'" href="javascript:;">▾</a></span><br><br><span class="quickopentag">Concepts<a tag="Concepts" class="button" title="Show tiddlers tagged with 'Concepts'" href="javascript:;">▾</a></span> - <span class="quickopentag">Théories<a tag="Théories" class="button" title="Show tiddlers tagged with 'Théories'" href="javascript:;">▾</a></span><br><br><span class="quickopentag">Mots clefs<a tag="MotsClefs" class="button" title="Show tiddlers tagged with 'MotsClefs'" href="javascript:;">▾</a></span><br><br><span class="quickopentag">Idées<a tag="Idées" class="button" title="Show tiddlers tagged with 'Idées'" href="javascript:;">▾</a></span><br><br></div><br></span></td></tr></tbody></table><br><br><br><table class="twtable"><tbody><tr class="evenRow"><th align="center">Philosophie</th></tr><tr class="oddRow"><td align="center"><span tiddler="./philosophie" refresh="content"><span class="floatleft"><a tiddlylink="Philosophie" refresh="link" class="tiddlyLink tiddlyLinkExisting imageLink" title="Philosophie - AlbertoMolina, dim 21 sep 2008 20:09:00 CEST" href="javascript:;"><img src="./imagesWiki/platon_aristote.gif" title="Philosophie" style="width: 250px; height: auto;"></a></span><br><div class="textcenter">Philosophie de la connaissance – Philosophie des sciences – Philosophie de la biologie – Philosophie du langage – Philosophie de la logique – Philosophie de l'histoire – Philosophie de l'action – Herméneutique – Esthétique<br><br><hr><br><div class="tagCloud"> <a tag="AntiRéalisme" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'AntiRéalisme'" href="javascript:;">AntiRéalisme</a> <a tag="Atomisme" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Atomisme'" href="javascript:;">Atomisme</a> <a tag="Bedau, Mark" class="tagCloudtag tagCloud1" title="4 tiddlers tagged with 'Bedau, Mark'" href="javascript:;">Bedau, Mark</a> <a tag="Bigelow &amp; Pargetter" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Bigelow &amp; Pargetter'" href="javascript:;">Bigelow &amp; Pargetter</a> <a tag="Bloom, Paul" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Bloom, Paul'" href="javascript:;">Bloom, Paul</a> <a tag="Canguilhem, Georges" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Canguilhem, Georges'" href="javascript:;">Canguilhem, Georges</a> <a tag="Connaissance" class="tagCloudtag tagCloud1" title="5 tiddlers tagged with 'Connaissance'" href="javascript:;">Connaissance</a> <a tag="Constructivisme" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Constructivisme'" href="javascript:;">Constructivisme</a> <a tag="Cummins, Robert" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Cummins, Robert'" href="javascript:;">Cummins, Robert</a> <a tag="Danto, Arthur" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Danto, Arthur'" href="javascript:;">Danto, Arthur</a> <a tag="Daston, Lorraine" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Daston, Lorraine'" href="javascript:;">Daston, Lorraine</a> <a tag="Davies, Paul Sheldon" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Davies, Paul Sheldon'" href="javascript:;">Davies, Paul Sheldon</a> <a tag="Dawkins, Richard" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Dawkins, Richard'" href="javascript:;">Dawkins, Richard</a> <a tag="Deleuze, Gilles" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Deleuze, Gilles'" href="javascript:;">Deleuze, Gilles</a> <a tag="Dennett, Daniel" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Dennett, Daniel'" href="javascript:;">Dennett, Daniel</a> <a tag="Descartes, René" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Descartes, René'" href="javascript:;">Descartes, René</a> <a tag="Dewey, John" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Dewey, John'" href="javascript:;">Dewey, John</a> <a tag="DémonLaplace" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'DémonLaplace'" href="javascript:;">DémonLaplace</a> <a tag="Empirisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Empirisme'" href="javascript:;">Empirisme</a> <a tag="Epistémologie" class="tagCloudtag tagCloud2" title="27 tiddlers tagged with 'Epistémologie'" href="javascript:;">Epistémologie</a> <a tag="Esthétique" class="tagCloudtag tagCloud1" title="4 tiddlers tagged with 'Esthétique'" href="javascript:;">Esthétique</a> <a tag="Ethique" class="tagCloudtag tagCloud1" title="4 tiddlers tagged with 'Ethique'" href="javascript:;">Ethique</a> <a tag="Finalisme" class="tagCloudtag tagCloud1" title="6 tiddlers tagged with 'Finalisme'" href="javascript:;">Finalisme</a> <a tag="Foucault, Michel" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Foucault, Michel'" href="javascript:;">Foucault, Michel</a> <a tag="Galison, Peter" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Galison, Peter'" href="javascript:;">Galison, Peter</a> <a tag="Hempel, Carl G." class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Hempel, Carl G.'" href="javascript:;">Hempel, Carl G.</a> <a tag="Herméneutique" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Herméneutique'" href="javascript:;">Herméneutique</a> <a tag="HistoireSciences" class="tagCloudtag tagCloud1" title="4 tiddlers tagged with 'HistoireSciences'" href="javascript:;">HistoireSciences</a> <a tag="Holisme" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Holisme'" href="javascript:;">Holisme</a> <a tag="Idéalisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Idéalisme'" href="javascript:;">Idéalisme</a> <a tag="Instrumentalisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Instrumentalisme'" href="javascript:;">Instrumentalisme</a> <a tag="Kim, Jaegwon" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Kim, Jaegwon'" href="javascript:;">Kim, Jaegwon</a> <a tag="Lalande, André" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Lalande, André'" href="javascript:;">Lalande, André</a> <a tag="Le Dantec, Félix" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Le Dantec, Félix'" href="javascript:;">Le Dantec, Félix</a> <a tag="Lecourt, Dominique" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Lecourt, Dominique'" href="javascript:;">Lecourt, Dominique</a> <a tag="Logique" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Logique'" href="javascript:;">Logique</a> <a tag="Matérialisme" class="tagCloudtag tagCloud1" title="6 tiddlers tagged with 'Matérialisme'" href="javascript:;">Matérialisme</a> <a tag="Mayr, Ernst" class="tagCloudtag tagCloud1" title="5 tiddlers tagged with 'Mayr, Ernst'" href="javascript:;">Mayr, Ernst</a> <a tag="McLaughlin, Peter" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'McLaughlin, Peter'" href="javascript:;">McLaughlin, Peter</a> <a tag="Megill, A (1994): Rethinking Objectivity" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Megill, A (1994): Rethinking Objectivity'" href="javascript:;">Megill, A (1994): Rethinking Objectivity</a> <a tag="Megill, Allan" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Megill, Allan'" href="javascript:;">Megill, Allan</a> <a tag="Millikan, Ruth Garrett" class="tagCloudtag tagCloud1" title="5 tiddlers tagged with 'Millikan, Ruth Garrett'" href="javascript:;">Millikan, Ruth Garrett</a> <a tag="Monod, Jacques" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Monod, Jacques'" href="javascript:;">Monod, Jacques</a> <a tag="Moore, John" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Moore, John'" href="javascript:;">Moore, John</a> <a tag="Mécanisme" class="tagCloudtag tagCloud1" title="6 tiddlers tagged with 'Mécanisme'" href="javascript:;">Mécanisme</a> <a tag="Métaphysique" class="tagCloudtag tagCloud1" title="5 tiddlers tagged with 'Métaphysique'" href="javascript:;">Métaphysique</a> <a tag="Nagel, Ernest" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Nagel, Ernest'" href="javascript:;">Nagel, Ernest</a> <a tag="Naturalisme" class="tagCloudtag tagCloud2" title="20 tiddlers tagged with 'Naturalisme'" href="javascript:;">Naturalisme</a> <a tag="Objectivité" class="tagCloudtag tagCloud3" title="39 tiddlers tagged with 'Objectivité'" href="javascript:;">Objectivité</a> <a tag="Ontologie" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Ontologie'" href="javascript:;">Ontologie</a> <a tag="PhiloAction" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'PhiloAction'" href="javascript:;">PhiloAction</a> <a tag="PhiloBio" class="tagCloudtag tagCloud6" title="94 tiddlers tagged with 'PhiloBio'" href="javascript:;">PhiloBio</a> <a tag="PhiloHistoire" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'PhiloHistoire'" href="javascript:;">PhiloHistoire</a> <a tag="PhiloLangage" class="tagCloudtag tagCloud1" title="7 tiddlers tagged with 'PhiloLangage'" href="javascript:;">PhiloLangage</a> <a tag="PhiloLogique" class="tagCloudtag tagCloud1" title="4 tiddlers tagged with 'PhiloLogique'" href="javascript:;">PhiloLogique</a> <a tag="PhiloMathématiques" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'PhiloMathématiques'" href="javascript:;">PhiloMathématiques</a> <a tag="PhiloReligion" class="tagCloudtag tagCloud1" title="4 tiddlers tagged with 'PhiloReligion'" href="javascript:;">PhiloReligion</a> <a tag="PhiloSciences" class="tagCloudtag tagCloud3" title="46 tiddlers tagged with 'PhiloSciences'" href="javascript:;">PhiloSciences</a> <a tag="PhiloSociale" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'PhiloSociale'" href="javascript:;">PhiloSociale</a> <a tag="Physicalisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Physicalisme'" href="javascript:;">Physicalisme</a> <a tag="Plantinga, Alvin" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Plantinga, Alvin'" href="javascript:;">Plantinga, Alvin</a> <a tag="Platonisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Platonisme'" href="javascript:;">Platonisme</a> <a tag="Pluralisme" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Pluralisme'" href="javascript:;">Pluralisme</a> <a tag="Popper, Karl" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Popper, Karl'" href="javascript:;">Popper, Karl</a> <a tag="PositivismeLogique" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'PositivismeLogique'" href="javascript:;">PositivismeLogique</a> <a tag="Pragmatisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Pragmatisme'" href="javascript:;">Pragmatisme</a> <a tag="PrincipeAnthropique" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'PrincipeAnthropique'" href="javascript:;">PrincipeAnthropique</a> <a tag="QuasiRéalisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'QuasiRéalisme'" href="javascript:;">QuasiRéalisme</a> <a tag="Quine, Willard Van Orman" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Quine, Willard Van Orman'" href="javascript:;">Quine, Willard Van Orman</a> <a tag="Romanelli, Pasquale" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Romanelli, Pasquale'" href="javascript:;">Romanelli, Pasquale</a> <a tag="Rosch, Eleanor" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Rosch, Eleanor'" href="javascript:;">Rosch, Eleanor</a> <a tag="Réalisme" class="tagCloudtag tagCloud2" title="14 tiddlers tagged with 'Réalisme'" href="javascript:;">Réalisme</a> <a tag="Réalité" class="tagCloudtag tagCloud1" title="8 tiddlers tagged with 'Réalité'" href="javascript:;">Réalité</a> <a tag="Searle, John" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Searle, John'" href="javascript:;">Searle, John</a> <a tag="Sellars, Roy Wood" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Sellars, Roy Wood'" href="javascript:;">Sellars, Roy Wood</a> <a tag="Stanford Encyclopedia Of Philosophy" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Stanford Encyclopedia Of Philosophy'" href="javascript:;">Stanford Encyclopedia Of Philosophy</a> <a tag="Subjectivité" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Subjectivité'" href="javascript:;">Subjectivité</a> <a tag="Théorie algorithmique de l`information" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Théorie algorithmique de l`information'" href="javascript:;">Théorie algorithmique de l`information</a> <a tag="Vattimo, Gianni" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Vattimo, Gianni'" href="javascript:;">Vattimo, Gianni</a> <a tag="Wittgenstein, Ludwig" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Wittgenstein, Ludwig'" href="javascript:;">Wittgenstein, Ludwig</a> <a tag="Woodfield, Andrew" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Woodfield, Andrew'" href="javascript:;">Woodfield, Andrew</a> <a tag="Wright, Larry" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Wright, Larry'" href="javascript:;">Wright, Larry</a></div></div><br></span></td></tr><tr class="evenRow"><th align="center">Philosophie de la biologie</th></tr><tr class="oddRow"><td align="center"><span tiddler="./philoBio" refresh="content"><span class="floatright"><a tiddlylink="PhiloBio" refresh="link" class="tiddlyLink tiddlyLinkExisting imageLink" title="PhiloBio - AlbertoMolina, ven 26 sep 2008 00:23:00 CEST" href="javascript:;"><img src="./imagesWiki/canard_m%C3%A9canique.gif" title="Philosophie de la biologie" style="width: 150px; height: auto;"></a></span><br><div class="textcenter">Fonction – Téléologie – Vie minimale – Définition de la vie – Darwinisme<br><br><hr><br><div class="tagCloud"> <a tag="ApprocheEtiologique" class="tagCloudtag tagCloud2" title="9 tiddlers tagged with 'ApprocheEtiologique'" href="javascript:;">ApprocheEtiologique</a> <a tag="ApprocheSystémique" class="tagCloudtag tagCloud2" title="6 tiddlers tagged with 'ApprocheSystémique'" href="javascript:;">ApprocheSystémique</a> <a tag="Autonomie" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Autonomie'" href="javascript:;">Autonomie</a> <a tag="Bedau, Mark" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Bedau, Mark'" href="javascript:;">Bedau, Mark</a> <a tag="Bigelow &amp; Pargetter" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Bigelow &amp; Pargetter'" href="javascript:;">Bigelow &amp; Pargetter</a> <a tag="Bigelow, et al. (1987): &quot;Functions&quot;" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Bigelow, et al. (1987): &quot;Functions&quot;'" href="javascript:;">Bigelow, et al. (1987): "Functions"</a> <a tag="BiologieSynthétique" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'BiologieSynthétique'" href="javascript:;">BiologieSynthétique</a> <a tag="BioSémiotique" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'BioSémiotique'" href="javascript:;">BioSémiotique</a> <a tag="Canguilhem, Georges" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Canguilhem, Georges'" href="javascript:;">Canguilhem, Georges</a> <a tag="CauseDistale" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'CauseDistale'" href="javascript:;">CauseDistale</a> <a tag="CauseProximale" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'CauseProximale'" href="javascript:;">CauseProximale</a> <a tag="Créationnisme" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Créationnisme'" href="javascript:;">Créationnisme</a> <a tag="Cummins, Robert" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Cummins, Robert'" href="javascript:;">Cummins, Robert</a> <a tag="Darwinisme" class="tagCloudtag tagCloud3" title="15 tiddlers tagged with 'Darwinisme'" href="javascript:;">Darwinisme</a> <a tag="Davies (2001) - notes" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Davies (2001) - notes'" href="javascript:;">Davies (2001) - notes</a> <a tag="Davies, Paul Sheldon" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Davies, Paul Sheldon'" href="javascript:;">Davies, Paul Sheldon</a> <a tag="Davies, PS (2001): Norms of Nature" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Davies, PS (2001): Norms of Nature'" href="javascript:;">Davies, PS (2001): Norms of Nature</a> <a tag="Dawkins, R (1976) - citations" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Dawkins, R (1976) - citations'" href="javascript:;">Dawkins, R (1976) - citations</a> <a tag="Dawkins, R (1976): The Selfish Gene" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Dawkins, R (1976): The Selfish Gene'" href="javascript:;">Dawkins, R (1976): The Selfish Gene</a> <a tag="Dawkins, Richard" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Dawkins, Richard'" href="javascript:;">Dawkins, Richard</a> <a tag="Dennett, D (1987): The Intentional Stance" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Dennett, D (1987): The Intentional Stance'" href="javascript:;">Dennett, D (1987): The Intentional Stance</a> <a tag="Dennett, D (1996): Kinds of Minds" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Dennett, D (1996): Kinds of Minds'" href="javascript:;">Dennett, D (1996): Kinds of Minds</a> <a tag="Dennett, Daniel" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Dennett, Daniel'" href="javascript:;">Dennett, Daniel</a> <a tag="Dysfonction" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Dysfonction'" href="javascript:;">Dysfonction</a> <a tag="Empathie" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Empathie'" href="javascript:;">Empathie</a> <a tag="Finalisme" class="tagCloudtag tagCloud2" title="6 tiddlers tagged with 'Finalisme'" href="javascript:;">Finalisme</a> <a tag="Fonction" class="tagCloudtag tagCloud6" title="35 tiddlers tagged with 'Fonction'" href="javascript:;">Fonction</a> <a tag="Foucault, M (1963): Naissance de la clinique" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Foucault, M (1963): Naissance de la clinique'" href="javascript:;">Foucault, M (1963): Naissance de la clinique</a> <a tag="GoalDirected" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'GoalDirected'" href="javascript:;">GoalDirected</a> <a tag="Haldane, JBS (1949): What is Life?" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Haldane, JBS (1949): What is Life?'" href="javascript:;">Haldane, JBS (1949): What is Life?</a> <a tag="Holisme" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Holisme'" href="javascript:;">Holisme</a> <a tag="Homéostasie" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Homéostasie'" href="javascript:;">Homéostasie</a> <a tag="Intentionnalité" class="tagCloudtag tagCloud2" title="10 tiddlers tagged with 'Intentionnalité'" href="javascript:;">Intentionnalité</a> <a tag="Le Dantec, Félix" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Le Dantec, Félix'" href="javascript:;">Le Dantec, Félix</a> <a tag="Mayr, E (1997): Qu`est-ce que la biologie?" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Mayr, E (1997): Qu`est-ce que la biologie?'" href="javascript:;">Mayr, E (1997): Qu`est-ce que la biologie?</a> <a tag="Mayr, Ernst" class="tagCloudtag tagCloud2" title="5 tiddlers tagged with 'Mayr, Ernst'" href="javascript:;">Mayr, Ernst</a> <a tag="McLaughlin, P (2001): What Functions Explain" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'McLaughlin, P (2001): What Functions Explain'" href="javascript:;">McLaughlin, P (2001): What Functions Explain</a> <a tag="McLaughlin, Peter" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'McLaughlin, Peter'" href="javascript:;">McLaughlin, Peter</a> <a tag="Millikan, RG (1984): Language, Thought, and Other Biological Categories" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Millikan, RG (1984): Language, Thought, and Other Biological Categories'" href="javascript:;">Millikan, RG (1984): Language, Thought, and Other Biological Categories</a> <a tag="Millikan, Ruth Garrett" class="tagCloudtag tagCloud2" title="5 tiddlers tagged with 'Millikan, Ruth Garrett'" href="javascript:;">Millikan, Ruth Garrett</a> <a tag="Monod, J (1970): Le hasard et la nécessité" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Monod, J (1970): Le hasard et la nécessité'" href="javascript:;">Monod, J (1970): Le hasard et la nécessité</a> <a tag="Monod, Jacques" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Monod, Jacques'" href="javascript:;">Monod, Jacques</a> <a tag="Nagel, Ernest" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Nagel, Ernest'" href="javascript:;">Nagel, Ernest</a> <a tag="NarrationHistorique" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'NarrationHistorique'" href="javascript:;">NarrationHistorique</a> <a tag="Organicisme" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Organicisme'" href="javascript:;">Organicisme</a> <a tag="Organisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Organisme'" href="javascript:;">Organisme</a> <a tag="Plantinga, Alvin" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Plantinga, Alvin'" href="javascript:;">Plantinga, Alvin</a> <a tag="Rosen, Robert" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Rosen, Robert'" href="javascript:;">Rosen, Robert</a> <a tag="SélectionNaturelle" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'SélectionNaturelle'" href="javascript:;">SélectionNaturelle</a> <a tag="Téléologie" class="tagCloudtag tagCloud6" title="36 tiddlers tagged with 'Téléologie'" href="javascript:;">Téléologie</a> <a tag="TéléoMentalisme" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'TéléoMentalisme'" href="javascript:;">TéléoMentalisme</a> <a tag="Téléonomie" class="tagCloudtag tagCloud2" title="6 tiddlers tagged with 'Téléonomie'" href="javascript:;">Téléonomie</a> <a tag="Vie" class="tagCloudtag tagCloud2" title="8 tiddlers tagged with 'Vie'" href="javascript:;">Vie</a> <a tag="VieArtificielle" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'VieArtificielle'" href="javascript:;">VieArtificielle</a> <a tag="VieDéfinition" class="tagCloudtag tagCloud4" title="22 tiddlers tagged with 'VieDéfinition'" href="javascript:;">VieDéfinition</a> <a tag="VieMinimale" class="tagCloudtag tagCloud3" title="11 tiddlers tagged with 'VieMinimale'" href="javascript:;">VieMinimale</a> <a tag="VieOrigines" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'VieOrigines'" href="javascript:;">VieOrigines</a> <a tag="Vitalisme" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Vitalisme'" href="javascript:;">Vitalisme</a> <a tag="Woodfield, A (1976): Teleology" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Woodfield, A (1976): Teleology'" href="javascript:;">Woodfield, A (1976): Teleology</a></div><br></div><br></span></td></tr><tr class="evenRow"><th align="center">Sciences</th></tr><tr class="oddRow"><td align="center"><span tiddler="./sciences" refresh="content"><span class="floatleft"><a tiddlylink="Sciences" refresh="link" class="tiddlyLink tiddlyLinkExisting imageLink" title="Sciences - AlbertoMolina, dim 21 sep 2008 20:11:00 CEST" href="javascript:;"><img src="./imagesWiki/Atome.JPG" title="Sciences" style="width: 100px; height: auto;"></a></span><br><div class="textcenter">Biologie – Physique – Mécanique quantique<br></div><br><hr><br><div class="tagCloud"> <a tag="Astronomie" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Astronomie'" href="javascript:;">Astronomie</a> <a tag="Bedau, Mark" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Bedau, Mark'" href="javascript:;">Bedau, Mark</a> <a tag="Bernard, Claude" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Bernard, Claude'" href="javascript:;">Bernard, Claude</a> <a tag="Biologie" class="tagCloudtag tagCloud6" title="37 tiddlers tagged with 'Biologie'" href="javascript:;">Biologie</a> <a tag="Bloom, P (2004): Descartes´ Baby" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Bloom, P (2004): Descartes´ Baby'" href="javascript:;">Bloom, P (2004): Descartes´ Baby</a> <a tag="Cartographie" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Cartographie'" href="javascript:;">Cartographie</a> <a tag="Dawkins, Richard" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Dawkins, Richard'" href="javascript:;">Dawkins, Richard</a> <a tag="Descartes, René" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Descartes, René'" href="javascript:;">Descartes, René</a> <a tag="Haldane, John Burdan Sanderson" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Haldane, John Burdan Sanderson'" href="javascript:;">Haldane, John Burdan Sanderson</a> <a tag="Histoire" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Histoire'" href="javascript:;">Histoire</a> <a tag="Laplace, Pierre Simon de" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Laplace, Pierre Simon de'" href="javascript:;">Laplace, Pierre Simon de</a> <a tag="Le Dantec, Félix" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Le Dantec, Félix'" href="javascript:;">Le Dantec, Félix</a> <a tag="Logique" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Logique'" href="javascript:;">Logique</a> <a tag="Mathématiques" class="tagCloudtag tagCloud2" title="7 tiddlers tagged with 'Mathématiques'" href="javascript:;">Mathématiques</a> <a tag="Mayr, Ernst" class="tagCloudtag tagCloud2" title="5 tiddlers tagged with 'Mayr, Ernst'" href="javascript:;">Mayr, Ernst</a> <a tag="Monod, Jacques" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Monod, Jacques'" href="javascript:;">Monod, Jacques</a> <a tag="Médecine" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Médecine'" href="javascript:;">Médecine</a> <a tag="Objectivité" class="tagCloudtag tagCloud6" title="39 tiddlers tagged with 'Objectivité'" href="javascript:;">Objectivité</a> <a tag="Physique" class="tagCloudtag tagCloud2" title="11 tiddlers tagged with 'Physique'" href="javascript:;">Physique</a> <a tag="Psychologie" class="tagCloudtag tagCloud2" title="7 tiddlers tagged with 'Psychologie'" href="javascript:;">Psychologie</a> <a tag="Rosch, Eleanor" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Rosch, Eleanor'" href="javascript:;">Rosch, Eleanor</a> <a tag="SciencesCognitives" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'SciencesCognitives'" href="javascript:;">SciencesCognitives</a> <a tag="Sociologie" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Sociologie'" href="javascript:;">Sociologie</a> <a tag="Théorie algorithmique de l`information" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Théorie algorithmique de l`information'" href="javascript:;">Théorie algorithmique de l`information</a> <a tag="Treviranus, Gottfried Reinhold" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Treviranus, Gottfried Reinhold'" href="javascript:;">Treviranus, Gottfried Reinhold</a></div><br></span></td></tr><tr class="evenRow"><th align="center">Biologie</th></tr><tr class="oddRow"><td align="center"><span tiddler="./biologie" refresh="content"><span class="floatright"><a tiddlylink="Biologie" refresh="link" class="tiddlyLink tiddlyLinkExisting imageLink" title="Biologie - AlbertoMolina, lun 15 sep 2008 22:50:00 CEST" href="javascript:;"><img src="./imagesWiki/Deinococcus_radiodurans.jpg" title="Biologie (Deinococcus radiodurans)" style="width: 150px; height: auto;"></a></span><br><div class="textcenter">Darwinisme – Biologie synthétique – BioSémiotique – Organicisme – Vitalisme<br></div><br><hr><br><div class="tagCloud"> <a tag="Bernard, Claude" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Bernard, Claude'" href="javascript:;">Bernard, Claude</a> <a tag="BiologieMoléculaire" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'BiologieMoléculaire'" href="javascript:;">BiologieMoléculaire</a> <a tag="BiologieMort" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'BiologieMort'" href="javascript:;">BiologieMort</a> <a tag="BiologieSynthétique" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'BiologieSynthétique'" href="javascript:;">BiologieSynthétique</a> <a tag="BioSémiotique" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'BioSémiotique'" href="javascript:;">BioSémiotique</a> <a tag="Darwinisme" class="tagCloudtag tagCloud2" title="15 tiddlers tagged with 'Darwinisme'" href="javascript:;">Darwinisme</a> <a tag="Dawkins, R (1976): The Selfish Gene" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Dawkins, R (1976): The Selfish Gene'" href="javascript:;">Dawkins, R (1976): The Selfish Gene</a> <a tag="Dawkins, Richard" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Dawkins, Richard'" href="javascript:;">Dawkins, Richard</a> <a tag="Gradualisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Gradualisme'" href="javascript:;">Gradualisme</a> <a tag="Génétique" class="tagCloudtag tagCloud1" title="5 tiddlers tagged with 'Génétique'" href="javascript:;">Génétique</a> <a tag="Haldane, John Burdan Sanderson" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Haldane, John Burdan Sanderson'" href="javascript:;">Haldane, John Burdan Sanderson</a> <a tag="HistoiresNaturelles" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'HistoiresNaturelles'" href="javascript:;">HistoiresNaturelles</a> <a tag="Le Dantec, F (1896): Théorie nouvelle de la vie" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Le Dantec, F (1896): Théorie nouvelle de la vie'" href="javascript:;">Le Dantec, F (1896): Théorie nouvelle de la vie</a> <a tag="Le Dantec, Félix" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Le Dantec, Félix'" href="javascript:;">Le Dantec, Félix</a> <a tag="Maladie" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Maladie'" href="javascript:;">Maladie</a> <a tag="Mayr, E (1997): Qu`est-ce que la biologie?" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Mayr, E (1997): Qu`est-ce que la biologie?'" href="javascript:;">Mayr, E (1997): Qu`est-ce que la biologie?</a> <a tag="Mayr, Ernst" class="tagCloudtag tagCloud1" title="5 tiddlers tagged with 'Mayr, Ernst'" href="javascript:;">Mayr, Ernst</a> <a tag="Monod, J (1970): Le hasard et la nécessité" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Monod, J (1970): Le hasard et la nécessité'" href="javascript:;">Monod, J (1970): Le hasard et la nécessité</a> <a tag="Monod, Jacques" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Monod, Jacques'" href="javascript:;">Monod, Jacques</a> <a tag="Organicisme" class="tagCloudtag tagCloud1" title="4 tiddlers tagged with 'Organicisme'" href="javascript:;">Organicisme</a> <a tag="Organisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Organisme'" href="javascript:;">Organisme</a> <a tag="PhiloBio" class="tagCloudtag tagCloud6" title="94 tiddlers tagged with 'PhiloBio'" href="javascript:;">PhiloBio</a> <a tag="Rosen, Robert" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Rosen, Robert'" href="javascript:;">Rosen, Robert</a> <a tag="SélectionNaturelle" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'SélectionNaturelle'" href="javascript:;">SélectionNaturelle</a> <a tag="Treviranus, Gottfried Reinhold" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Treviranus, Gottfried Reinhold'" href="javascript:;">Treviranus, Gottfried Reinhold</a> <a tag="Treviranus, GR (1802): Biologie" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Treviranus, GR (1802): Biologie'" href="javascript:;">Treviranus, GR (1802): Biologie</a> <a tag="Vitalisme" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Vitalisme'" href="javascript:;">Vitalisme</a></div><br></span></td></tr></tbody></table><br><table class="twtable"><tbody><tr class="evenRow"><th align="center">Concepts</th></tr><tr class="oddRow"><td align="center"><span tiddler="./concepts" refresh="content"><span class="floatleft"><a tiddlylink="Concepts" refresh="link" class="tiddlyLink tiddlyLinkExisting imageLink" title="Concepts - AlbertoMolina, sam 04 oct 2008 20:48:00 CEST" href="javascript:;"><img src="IconeConcept" title="Concepts"></a></span><br><div class="textcenter">Objectivité – Fonction – Téléologie – Normativité – Explication – Signification<br></div><br><hr><br><div class="tagCloud"> <a tag="Algorithme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Algorithme'" href="javascript:;">Algorithme</a> <a tag="Attracteur" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Attracteur'" href="javascript:;">Attracteur</a> <a tag="Autonomie" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Autonomie'" href="javascript:;">Autonomie</a> <a tag="Autoréférence" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Autoréférence'" href="javascript:;">Autoréférence</a> <a tag="Catégories" class="tagCloudtag tagCloud2" title="7 tiddlers tagged with 'Catégories'" href="javascript:;">Catégories</a> <a tag="Catégorisation" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Catégorisation'" href="javascript:;">Catégorisation</a> <a tag="Causalité" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Causalité'" href="javascript:;">Causalité</a> <a tag="CauseDistale" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'CauseDistale'" href="javascript:;">CauseDistale</a> <a tag="CauseProximale" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'CauseProximale'" href="javascript:;">CauseProximale</a> <a tag="Clinique" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Clinique'" href="javascript:;">Clinique</a> <a tag="Cognition" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Cognition'" href="javascript:;">Cognition</a> <a tag="Complexité" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Complexité'" href="javascript:;">Complexité</a> <a tag="Connaissance" class="tagCloudtag tagCloud2" title="5 tiddlers tagged with 'Connaissance'" href="javascript:;">Connaissance</a> <a tag="Conscience" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Conscience'" href="javascript:;">Conscience</a> <a tag="Consensus" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Consensus'" href="javascript:;">Consensus</a> <a tag="Corps" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Corps'" href="javascript:;">Corps</a> <a tag="Couleur" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Couleur'" href="javascript:;">Couleur</a> <a tag="Dualisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Dualisme'" href="javascript:;">Dualisme</a> <a tag="Dysfonction" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Dysfonction'" href="javascript:;">Dysfonction</a> <a tag="Définition" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Définition'" href="javascript:;">Définition</a> <a tag="Définitions" class="tagCloudtag tagCloud2" title="8 tiddlers tagged with 'Définitions'" href="javascript:;">Définitions</a> <a tag="Déterminisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Déterminisme'" href="javascript:;">Déterminisme</a> <a tag="Electron" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Electron'" href="javascript:;">Electron</a> <a tag="Empathie" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Empathie'" href="javascript:;">Empathie</a> <a tag="EntitéThéorique" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'EntitéThéorique'" href="javascript:;">EntitéThéorique</a> <a tag="Esprit" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Esprit'" href="javascript:;">Esprit</a> <a tag="Exactitude" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Exactitude'" href="javascript:;">Exactitude</a> <a tag="Explication" class="tagCloudtag tagCloud2" title="6 tiddlers tagged with 'Explication'" href="javascript:;">Explication</a> <a tag="Explication scientifique" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Explication scientifique'" href="javascript:;">Explication scientifique</a> <a tag="Finalité" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Finalité'" href="javascript:;">Finalité</a> <a tag="Fonction" class="tagCloudtag tagCloud5" title="35 tiddlers tagged with 'Fonction'" href="javascript:;">Fonction</a> <a tag="Frontière" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Frontière'" href="javascript:;">Frontière</a> <a tag="Genre naturel" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Genre naturel'" href="javascript:;">Genre naturel</a> <a tag="Genre naturel (métaphysique)" class="tagCloudtag tagCloud2" title="8 tiddlers tagged with 'Genre naturel (métaphysique)'" href="javascript:;">Genre naturel (métaphysique)</a> <a tag="GoalDirected" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'GoalDirected'" href="javascript:;">GoalDirected</a> <a tag="Hasard" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Hasard'" href="javascript:;">Hasard</a> <a tag="Homéostasie" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Homéostasie'" href="javascript:;">Homéostasie</a> <a tag="Information" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Information'" href="javascript:;">Information</a> <a tag="Intentionnalité" class="tagCloudtag tagCloud2" title="10 tiddlers tagged with 'Intentionnalité'" href="javascript:;">Intentionnalité</a> <a tag="Interprétation" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Interprétation'" href="javascript:;">Interprétation</a> <a tag="Invariance" class="tagCloudtag tagCloud2" title="5 tiddlers tagged with 'Invariance'" href="javascript:;">Invariance</a> <a tag="Justification" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Justification'" href="javascript:;">Justification</a> <a tag="LoiNaturelle" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'LoiNaturelle'" href="javascript:;">LoiNaturelle</a> <a tag="Maladie" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Maladie'" href="javascript:;">Maladie</a> <a tag="Matière" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Matière'" href="javascript:;">Matière</a> <a tag="MéthodeScientifique" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'MéthodeScientifique'" href="javascript:;">MéthodeScientifique</a> <a tag="Nature" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Nature'" href="javascript:;">Nature</a> <a tag="Normativité" class="tagCloudtag tagCloud2" title="11 tiddlers tagged with 'Normativité'" href="javascript:;">Normativité</a> <a tag="Nécessité" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Nécessité'" href="javascript:;">Nécessité</a> <a tag="Objectivité" class="tagCloudtag tagCloud6" title="39 tiddlers tagged with 'Objectivité'" href="javascript:;">Objectivité</a> <a tag="ObjectivitéEpistémique" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'ObjectivitéEpistémique'" href="javascript:;">ObjectivitéEpistémique</a> <a tag="Objet" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Objet'" href="javascript:;">Objet</a> <a tag="Observation" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Observation'" href="javascript:;">Observation</a> <a tag="Ontologie" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Ontologie'" href="javascript:;">Ontologie</a> <a tag="Organisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Organisme'" href="javascript:;">Organisme</a> <a tag="Paradoxe" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Paradoxe'" href="javascript:;">Paradoxe</a> <a tag="Probabilités" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Probabilités'" href="javascript:;">Probabilités</a> <a tag="Précision" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Précision'" href="javascript:;">Précision</a> <a tag="Rationalité" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Rationalité'" href="javascript:;">Rationalité</a> <a tag="Représentation" class="tagCloudtag tagCloud1" title="3 tiddlers tagged with 'Représentation'" href="javascript:;">Représentation</a> <a tag="Rigueur" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Rigueur'" href="javascript:;">Rigueur</a> <a tag="Réalité" class="tagCloudtag tagCloud2" title="8 tiddlers tagged with 'Réalité'" href="javascript:;">Réalité</a> <a tag="Science" class="tagCloudtag tagCloud2" title="5 tiddlers tagged with 'Science'" href="javascript:;">Science</a> <a tag="Scientificité" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Scientificité'" href="javascript:;">Scientificité</a> <a tag="Signification" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Signification'" href="javascript:;">Signification</a> <a tag="Subjectivité" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Subjectivité'" href="javascript:;">Subjectivité</a> <a tag="Sujet" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'Sujet'" href="javascript:;">Sujet</a> <a tag="SélectionNaturelle" class="tagCloudtag tagCloud1" title="2 tiddlers tagged with 'SélectionNaturelle'" href="javascript:;">SélectionNaturelle</a> <a tag="Théorie" class="tagCloudtag tagCloud2" title="6 tiddlers tagged with 'Théorie'" href="javascript:;">Théorie</a> <a tag="Téléologie" class="tagCloudtag tagCloud6" title="36 tiddlers tagged with 'Téléologie'" href="javascript:;">Téléologie</a> <a tag="Téléonomie" class="tagCloudtag tagCloud2" title="6 tiddlers tagged with 'Téléonomie'" href="javascript:;">Téléonomie</a> <a tag="Vérité" class="tagCloudtag tagCloud2" title="5 tiddlers tagged with 'Vérité'" href="javascript:;">Vérité</a></div><br></span></td></tr><tr class="evenRow"><th align="center">Théories</th></tr><tr class="oddRow"><td align="center"><span tiddler="./théories" refresh="content"><span class="floatright"><a tiddlylink="Théories" refresh="link" class="tiddlyLink tiddlyLinkExisting imageLink" title="Théories - AlbertoMolina, sam 04 oct 2008 20:49:00 CEST" href="javascript:;"><img src="./imagesWiki/MaxPlanckInstitute.png" title="Théories" style="width: 100px; height: auto;"></a></span><br><div class="textcenter">Naturalisme – Darwinisme – Intentional stance<br></div><br><hr><br><div class="tagCloud"> <a tag="AntiNaturalisme" class="tagCloudtag tagCloud2" title="2 tiddlers tagged with 'AntiNaturalisme'" href="javascript:;">AntiNaturalisme</a> <a tag="AntiRéalisme" class="tagCloudtag tagCloud2" title="3 tiddlers tagged with 'AntiRéalisme'" href="javascript:;">AntiRéalisme</a> <a tag="ApprocheEtiologique" class="tagCloudtag tagCloud3" title="9 tiddlers tagged with 'ApprocheEtiologique'" href="javascript:;">ApprocheEtiologique</a> <a tag="ApprocheSystémique" class="tagCloudtag tagCloud3" title="6 tiddlers tagged with 'ApprocheSystémique'" href="javascript:;">ApprocheSystémique</a> <a tag="Atomisme" class="tagCloudtag tagCloud2" title="2 tiddlers tagged with 'Atomisme'" href="javascript:;">Atomisme</a> <a tag="BiologieSynthétique" class="tagCloudtag tagCloud2" title="2 tiddlers tagged with 'BiologieSynthétique'" href="javascript:;">BiologieSynthétique</a> <a tag="BioSémiotique" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'BioSémiotique'" href="javascript:;">BioSémiotique</a> <a tag="Constructivisme" class="tagCloudtag tagCloud2" title="2 tiddlers tagged with 'Constructivisme'" href="javascript:;">Constructivisme</a> <a tag="Créationnisme" class="tagCloudtag tagCloud2" title="2 tiddlers tagged with 'Créationnisme'" href="javascript:;">Créationnisme</a> <a tag="Darwinisme" class="tagCloudtag tagCloud5" title="15 tiddlers tagged with 'Darwinisme'" href="javascript:;">Darwinisme</a> <a tag="DémonLaplace" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'DémonLaplace'" href="javascript:;">DémonLaplace</a> <a tag="Finalisme" class="tagCloudtag tagCloud3" title="6 tiddlers tagged with 'Finalisme'" href="javascript:;">Finalisme</a> <a tag="Gradualisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Gradualisme'" href="javascript:;">Gradualisme</a> <a tag="Holisme" class="tagCloudtag tagCloud2" title="2 tiddlers tagged with 'Holisme'" href="javascript:;">Holisme</a> <a tag="Idéalisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Idéalisme'" href="javascript:;">Idéalisme</a> <a tag="Instrumentalisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Instrumentalisme'" href="javascript:;">Instrumentalisme</a> <a tag="IntentionalStance" class="tagCloudtag tagCloud2" title="2 tiddlers tagged with 'IntentionalStance'" href="javascript:;">IntentionalStance</a> <a tag="Matérialisme" class="tagCloudtag tagCloud3" title="6 tiddlers tagged with 'Matérialisme'" href="javascript:;">Matérialisme</a> <a tag="mondeARN" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'mondeARN'" href="javascript:;">mondeARN</a> <a tag="Mécanisme" class="tagCloudtag tagCloud3" title="6 tiddlers tagged with 'Mécanisme'" href="javascript:;">Mécanisme</a> <a tag="Naturalisme" class="tagCloudtag tagCloud6" title="20 tiddlers tagged with 'Naturalisme'" href="javascript:;">Naturalisme</a> <a tag="Organicisme" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'Organicisme'" href="javascript:;">Organicisme</a> <a tag="Physicalisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Physicalisme'" href="javascript:;">Physicalisme</a> <a tag="Platonisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Platonisme'" href="javascript:;">Platonisme</a> <a tag="Pluralisme" class="tagCloudtag tagCloud2" title="3 tiddlers tagged with 'Pluralisme'" href="javascript:;">Pluralisme</a> <a tag="PositivismeLogique" class="tagCloudtag tagCloud2" title="3 tiddlers tagged with 'PositivismeLogique'" href="javascript:;">PositivismeLogique</a> <a tag="Pragmatisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Pragmatisme'" href="javascript:;">Pragmatisme</a> <a tag="PrincipeAnthropique" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'PrincipeAnthropique'" href="javascript:;">PrincipeAnthropique</a> <a tag="QuasiRéalisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'QuasiRéalisme'" href="javascript:;">QuasiRéalisme</a> <a tag="Rationalisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Rationalisme'" href="javascript:;">Rationalisme</a> <a tag="Relativisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Relativisme'" href="javascript:;">Relativisme</a> <a tag="Réalisme" class="tagCloudtag tagCloud5" title="14 tiddlers tagged with 'Réalisme'" href="javascript:;">Réalisme</a> <a tag="RéalismeScientifique" class="tagCloudtag tagCloud2" title="4 tiddlers tagged with 'RéalismeScientifique'" href="javascript:;">RéalismeScientifique</a> <a tag="Réductionnisme" class="tagCloudtag tagCloud1" title="1 tiddlers tagged with 'Réductionnisme'" href="javascript:;">Réductionnisme</a> <a tag="Théorie algorithmique de l`information" class="tagCloudtag tagCloud2" title="2 tiddlers tagged with 'Théorie algorithmique de l`information'" href="javascript:;">Théorie algorithmique de l`information</a> <a tag="TéléoMentalisme" class="tagCloudtag tagCloud2" title="2 tiddlers tagged with 'TéléoMentalisme'" href="javascript:;">TéléoMentalisme</a> <a tag="Vitalisme" class="tagCloudtag tagCloud2" title="3 tiddlers tagged with 'Vitalisme'" href="javascript:;">Vitalisme</a></div><br></span></td></tr></tbody></table><br><table class="twtable"><tbody><tr class="evenRow"><th align="center">Auteurs</th></tr><tr class="oddRow"><td align="center"><span tiddler="./auteurs" refresh="content"><span class="floatleft"><a tiddlylink="Auteurs" refresh="link" class="tiddlyLink tiddlyLinkExisting imageLink" title="Auteurs - AlbertoMolina, ven 20 fév 2009 17:05:00 CET" href="javascript:;"><img src="./imagesWiki/Borges.jpg" title="Auteurs" style="width: 150px; height: auto;"></a></span><br><div class="textcenter">Mark Bedau – Daniel Dennett – Ernst Mayr – R.G. Millikan – Ernest Nagel<br></div><br><hr><br><div class="tagCloud"> <a tag="Bedau, Mark" class="tagCloudtag tagCloud5" title="4 tiddlers tagged with 'Bedau, Mark'" href="javascript:;">Bedau, Mark</a> <a tag="Bernard, Claude" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Bernard, Claude'" href="javascript:;">Bernard, Claude</a> <a tag="Bersini, et al." class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Bersini, et al.'" href="javascript:;">Bersini, et al.</a> <a tag="Bigelow &amp; Pargetter" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Bigelow &amp; Pargetter'" href="javascript:;">Bigelow &amp; Pargetter</a> <a tag="Bloom, Paul" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Bloom, Paul'" href="javascript:;">Bloom, Paul</a> <a tag="Borges, Jorge Luis" class="tagCloudtag tagCloud4" title="3 tiddlers tagged with 'Borges, Jorge Luis'" href="javascript:;">Borges, Jorge Luis</a> <a tag="Canguilhem, Georges" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Canguilhem, Georges'" href="javascript:;">Canguilhem, Georges</a> <a tag="Cummins, Robert" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Cummins, Robert'" href="javascript:;">Cummins, Robert</a> <a tag="Danto, Arthur" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Danto, Arthur'" href="javascript:;">Danto, Arthur</a> <a tag="Daston, Lorraine" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Daston, Lorraine'" href="javascript:;">Daston, Lorraine</a> <a tag="Davies, Paul Sheldon" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Davies, Paul Sheldon'" href="javascript:;">Davies, Paul Sheldon</a> <a tag="Dawkins, Richard" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Dawkins, Richard'" href="javascript:;">Dawkins, Richard</a> <a tag="Deleuze, Gilles" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Deleuze, Gilles'" href="javascript:;">Deleuze, Gilles</a> <a tag="Dennett, Daniel" class="tagCloudtag tagCloud4" title="3 tiddlers tagged with 'Dennett, Daniel'" href="javascript:;">Dennett, Daniel</a> <a tag="Descartes, René" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Descartes, René'" href="javascript:;">Descartes, René</a> <a tag="Dewey, John" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Dewey, John'" href="javascript:;">Dewey, John</a> <a tag="Foucault, Michel" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Foucault, Michel'" href="javascript:;">Foucault, Michel</a> <a tag="Galison, Peter" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Galison, Peter'" href="javascript:;">Galison, Peter</a> <a tag="Haldane, John Burdan Sanderson" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Haldane, John Burdan Sanderson'" href="javascript:;">Haldane, John Burdan Sanderson</a> <a tag="Hempel, Carl G." class="tagCloudtag tagCloud3" title="2 tiddlers tagged with 'Hempel, Carl G.'" href="javascript:;">Hempel, Carl G.</a> <a tag="Kim, Jaegwon" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Kim, Jaegwon'" href="javascript:;">Kim, Jaegwon</a> <a tag="Lalande, André" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Lalande, André'" href="javascript:;">Lalande, André</a> <a tag="Laplace, Pierre Simon de" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Laplace, Pierre Simon de'" href="javascript:;">Laplace, Pierre Simon de</a> <a tag="Le Dantec, Félix" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Le Dantec, Félix'" href="javascript:;">Le Dantec, Félix</a> <a tag="Lecourt, Dominique" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Lecourt, Dominique'" href="javascript:;">Lecourt, Dominique</a> <a tag="Littré, Emile" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Littré, Emile'" href="javascript:;">Littré, Emile</a> <a tag="Mayr, Ernst" class="tagCloudtag tagCloud6" title="5 tiddlers tagged with 'Mayr, Ernst'" href="javascript:;">Mayr, Ernst</a> <a tag="McLaughlin, Peter" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'McLaughlin, Peter'" href="javascript:;">McLaughlin, Peter</a> <a tag="Megill, Allan" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Megill, Allan'" href="javascript:;">Megill, Allan</a> <a tag="Millikan, Ruth Garrett" class="tagCloudtag tagCloud6" title="5 tiddlers tagged with 'Millikan, Ruth Garrett'" href="javascript:;">Millikan, Ruth Garrett</a> <a tag="Monod, Jacques" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Monod, Jacques'" href="javascript:;">Monod, Jacques</a> <a tag="Moore, John" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Moore, John'" href="javascript:;">Moore, John</a> <a tag="Nagel, Ernest" class="tagCloudtag tagCloud4" title="3 tiddlers tagged with 'Nagel, Ernest'" href="javascript:;">Nagel, Ernest</a> <a tag="Plantinga, Alvin" class="tagCloudtag tagCloud3" title="2 tiddlers tagged with 'Plantinga, Alvin'" href="javascript:;">Plantinga, Alvin</a> <a tag="Popper, Karl" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Popper, Karl'" href="javascript:;">Popper, Karl</a> <a tag="Quine, Willard Van Orman" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Quine, Willard Van Orman'" href="javascript:;">Quine, Willard Van Orman</a> <a tag="Romanelli, Pasquale" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Romanelli, Pasquale'" href="javascript:;">Romanelli, Pasquale</a> <a tag="Rosch, Eleanor" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Rosch, Eleanor'" href="javascript:;">Rosch, Eleanor</a> <a tag="Rosen, Robert" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Rosen, Robert'" href="javascript:;">Rosen, Robert</a> <a tag="Searle, John" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Searle, John'" href="javascript:;">Searle, John</a> <a tag="Sellars, Roy Wood" class="tagCloudtag tagCloud3" title="2 tiddlers tagged with 'Sellars, Roy Wood'" href="javascript:;">Sellars, Roy Wood</a> <a tag="Treviranus, Gottfried Reinhold" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Treviranus, Gottfried Reinhold'" href="javascript:;">Treviranus, Gottfried Reinhold</a> <a tag="Vattimo, Gianni" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Vattimo, Gianni'" href="javascript:;">Vattimo, Gianni</a> <a tag="Wittgenstein, Ludwig" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Wittgenstein, Ludwig'" href="javascript:;">Wittgenstein, Ludwig</a> <a tag="Woodfield, Andrew" class="tagCloudtag tagCloud3" title="2 tiddlers tagged with 'Woodfield, Andrew'" href="javascript:;">Woodfield, Andrew</a> <a tag="Wright, Larry" class="tagCloudtag tagCloud2" title="1 tiddlers tagged with 'Wright, Larry'" href="javascript:;">Wright, Larry</a></div><br></span></td></tr></tbody></table><hr></span><span></span></div>
</div>












<div class="tagglyTagging"><a errortext="Error while executing macro &lt;&lt;tagglyTagging&gt;&gt;:
No such macro" class="errorButton" href="javascript:;">Error in macro &lt;&lt;tagglyTagging&gt;&gt;</a></div>


<div class="toolbar">
	
	
	
	
	<span><span><a newtext="&lt;data&gt;null&lt;/data&gt;" newtemplate="2" newfocus="title" params="note&quot;|Notes|WikiPhilo" isjournal="false" newtitle="WikiPhilo - note" accesskey="N" class="button" title="Create a new tiddler" href="javascript:;">note</a></span><a tiddler="WikiPhilo" commandname="editTiddler" class="button defaultCommand" title="Edit this tiddler" href="javascript:;">edit</a><a tiddler="WikiPhilo" commandname="references" class="button" title="Show tiddlers that link to this one" href="javascript:;">references</a><a tiddler="WikiPhilo" commandname="closeOthers" class="button" title="Close all other tiddlers" href="javascript:;">close others</a><a tiddler="WikiPhilo" commandname="closeTiddler" class="button" title="Close this tiddler" href="javascript:;">close</a><a class="button moreCommand" title="Reveal further commands" href="javascript:;">more</a><span style="display: none;" class="moreCommand"><a tiddler="WikiPhilo" commandname="deleteTiddler" class="button" title="Delete this tiddler" href="javascript:;">delete</a><a tiddler="WikiPhilo" commandname="fields" class="button" title="Show the extended fields of this tiddler" href="javascript:;">fields</a><a tiddler="WikiPhilo" commandname="syncing" class="button" title="Control synchronisation of this tiddler with a server or external file" href="javascript:;">syncing</a><a tiddler="WikiPhilo" commandname="permalink" class="button" title="Permalink for this tiddler" href="javascript:;">permalink</a><a tiddler="WikiPhilo" commandname="jump" class="button" title="Jump to another open tiddler" href="javascript:;">jump</a></span></span>
</div>






</div>
</div>
</div>
</div>
<!--}}}-->

<script type="text/javascript">
document.getElementById("splashScreen").style.display="none";
</script>

<<tiddler Concepts>>

!!1. Quel est le sens du mot "vie"?[[→|Mayr (1997) - ch.01]]
Les trois paradigmes modernes du vivant sont le physicalisme, le vitalisme, et l'organicisme+++[...]
* +++[Physicalisme]>
Contre toute explication surnaturelle ou magique, les sciences modernes imposent une vision du monde dominée par le [[modèle de la machine|Mécanisme]] et des automates ([[Descartes|Descartes, René]], [[La Mettrie, Julien Onfray de]]). Les physicalistes ont permis un certains nombre d'avancées importantes dans la compréhension de la chimie et de la physiologie des êtres vivants. Cependant, tout en rejetant la notion de force vitale, ils recouraient eux-mêmes à des facteurs inexpliqués comme l' "énergie" ou les "mouvements".+++[citation]
|<<tiddler [[Mayr 1997:20/atomisme]]>>|
===  Au bout d'un certain temps, la vacuité et l'absurdité des explications purement physicalistes du vivant devint évidente aux yeux de la plupart des biologistes.

===

* +++[Vitalisme]>
Le vitalisme moderne est une réaction des naturalistes au [[physicalisme|Physicalisme]] et au [[mécanisme|Mécanisme]]. Groupe hétérogène, le vitalisme comporte de nombreuses facettes: substance spéciale ou état particulier de la matière, forces vitales ou mentales, finalisme.+++[citation] 
|<<tiddler [[Mayr 1997:23/thèsesVitalistes]]>>|
===


"Un grand nombre des thèses avancées par les vitalistes avaient pour but de définir les caractéristiques spécifiques des organismes qui sont aujourd'hui expliquées par la notion de programme génétique." Ainsi, dans de nombreux textes, on pourrait remplacer le mot "entéléchie" par "programme génétique".

Le vitalisme s'est éteint vers 1930. Son déclin est lié à plusieurs facteurs:
** Il a finit par être considéré comme une ''doctrine métaphysique'', incapable de rien prouver scientifiquement.
** L'hypothèse d'une ''substance spéciale'' a été réfutée par l'avancée des connaissances chimiques.
** Toutes les tentatives pour démontrer l'existence d'une ''force vitale'' non matérielle ont échoué.+++[citation]
|<<tiddler [[Mayr 1997:27/forceVitale]]>>|
===

** La génétique et le darwinisme ont réussi à expliquer les processus téléonomiques que les vitalistes jugeaient inexplicables. +++[citation]
|<<tiddler [[Mayr 1997:28/génétiqueDarwinisme]]>>|
===

===

* +++[Organicisme (holisme)]>
La chute du vitalisme n'a pas signé la victoire du physicalisme mais a laissé place à un nouveau paradigme explicatif lié à l' ''organisation hiérarchique complexe'' des êtres vivants: "Les caractéristiques uniques en leur genre des êtres vivants ne sont pas dues à leur composition, mais plutôt à leur organisation." Les organicistes reprochent à la démarche physicaliste non pas tant ses aspects mécanistes que son réductionnisme. +++[citations]
|<<tiddler [[Mayr 1997:30/holisme]]>>|
|<<tiddler [[Mayr 1997:31-32/holismeOrganisation]]>>|
===
Grâce aux concepts de programme génétique et de propriétés émergentes, qui faisaient défaut au holisme, l'organicisme s'est révélé antiréductionniste, tout en restant mécaniste.
|<<tiddler [[Mayr 1997:33/organicisme]]>>|
===

===

L'auteur dresse ensuite une liste des caractéristiques distinctives des êtres vivants, autour de leur ''organisation hiérarchique'' et de leur ''programme génétique''contenant de l'information historiquement acquise.+++[...]
*''Caractéristiques du vivant:''+++>
Les deux principales caractéristiques qui distinguent les êtres vivants de la matière inanimée sont, premièrement, leur ''organisation hiérarchique'' et, deuxièmement, le ''programme génétique''  L'auteur dresse alors la liste des phénomènes spécifiques aux êtres vivants:
* ((Programmes issus de l'évolution(dimension historique)))
* ((Propriétés chimiques(macromolécules complexes)))
* ((Mécanismes régulateurs(contrôle et régulation, rétro-action, etc. -> homéostasie)))
* ((Organisation(systèmes complexes capables de réguler et de piloter leurs activités)))
* ((Systèmes téléonomiques(activités dirigées vers un but, depuis le développement embryonnaire jusqu'aux activités physiologiques et éthologiques de l'adulte)))
* ((Ordre de grandeur limité(la gamme de dimensions des organismes vivants est limitée, à l'échelle de l'univers)))
* ((Cycles vitaux(de l'œuf à l'adulte, en passant par divers stades embryonnaires)))
* ((Systèmes ouverts(extraction d'énergie et de matériaux de l'environnement, et élimination des produits finaux; en tant que systèmes ouverts, ils ne sont pas soumis aux limitations imposées par la seconde loi de la thermodynamique)))
===

* ''Capacités spécifiques du vivant:''+++>
* la capacité d'évoluer;
* la capacité de s'autorépliquer;
* la capacité de croître et de se différencier par le biais d'un programme génétique;
* la capacité de métaboliser (captage et libération d'énergie);
* la capacité de s'autoréguler, de façon à conserver un régime constant (homéostasie, rétroactions);
* la capacité (par le biais de la perception et des organes des sens) de répondre aux stimuli de l'environnement;
* la capacité de changer à deux niveaux, celui du phénotype et celui du génotype.
|<<tiddler [[Mayr, E 1997:35/unitéBiologie]]>>|
===

===
!!2. Qu'est-ce que la science?[[→|Mayr (1997) - ch.02]]
L'auteur prononce quelques généralités sur la science, et défend l'autonomie de la biologie en tant que +++^[science à part entière|critères de scientificité de J. Moore]
<<tiddler [[Moore (1993) - Critères de scientificité/critèresScientificité]]>>
===, pas plus limitée à un domaine que ne l'est la physique. La recherche de lois scientifiques universelles est identifiée à une quête religieuse des lois divines +++[citation]
|<<tiddler [[Mayr 1997:40/scienceChrétienne]]>>|
===
!!3. Comment la science explique-t-elle le monde matériel?[[→|Mayr (1997) - ch.03]]
Survol de la philosophie des sciences, avec quelques commentaires sur l'inadéquation à la biologie évolutionniste de ses modèles explicatifs +++[...]
*''Réalisme en biologie:'' Dans un bref passage, [[Mayr|Mayr, Ernst]] défend le ''réalisme du "bon sens"'' face aux spéculations idéalistes des philosophes:+++[citation]>
|<<tiddler [[Mayr 1997:68/réalismeBiologiste]]>>|
===

* ''Définitions:'' Elles ont pour objectif de lever des ambigüités. Les définitions des termes scientifiques sont aussi nécessaires que changeantes, c'est-à-dire qu'elles évoluent avec l'évolution des connaissances.
* ''Les concepts dans les sciences de la vie:''++++[citations]>
|<<tiddler [[Mayr 1997:74/concepts]]>>|
|<<tiddler [[Mayr 1997:75/théories&Concepts]]>>|
===
!!4. Comment la biologie explique-t-elle le monde vivant?[[→|Mayr (1997) - ch.04]]
L'auteur aborde plusieurs thèmes, dont notamment les [[narrations historiques|NarrationHistorique]], la [[causalité|Causalité]] en biologie, le [[pluralisme|Pluralisme]] explicatif, et l'épistémologie évolutive cognitive.+++[...]
!!!Narrations historiques
La biologie élabore des [[narrations historiques|NarrationHistorique]] qui sont "peut-être la seule démarche scientifiquement et philosophiquement envisageable pour expliquer des phénomènes qui ne se sont produits qu'une seule fois". Cette démarche est contraire à l'élaboration de [[lois universelles|LoiNaturelle]] pratiquée par la physique. Leur valeur explicative vient du fait que "dans une séquence historique, les phénomènes qui viennent en premier conditionnent généralement les phénomènes plus tardifs". Or, "l'objectif le plus important d'une narration historique est de découvrir les facteurs déterminants qui ont contribué à la survenue des événements postérieurs dans une séquence historique" (p.78).
!!!Causalité en biologie
En biologie, on distingue deux catégories de causes distinctes: [[Causes immédiates|CauseProximale]] (fonctionnelles)+++[citation]>
|<<tiddler [[Mayr 1997:80/causesImmédiates(fonctionnelles)]]>>|
===, et [[Causes lointaines|CauseDistale]] (évolutives).+++[citation]>
|<<tiddler [[Mayr 1997:80/causesLointaines(évolutives)]]>>|
=== "L'une des caractéristiques du monde vivant est qu'il présente ces deux sortes de causes. Dans le monde inanimé, au contraire, il n'y a qu'un seul type de cause, correspondant aux [[lois naturelles|LoiNaturelle]] (souvent en combinaison avec des processus aléatoires)."
!!!Pluralisme
Les phénomènes complexes sont le résultats d'une multitude de facteurs qui rend difficile voire impossible l'identification d'//une// cause. Le pluralisme des explications causales pose un problème pour les procédures de confirmation ou de réfutation.
!!!L'épistémologie évolutive cognitive
C'est l'idée que les structures cognitives de notre cerveau ont été façonnées par la sélection naturelle. L'auteur cite [[Von Uexküll|Uexküll, Jacob Von]] au nombre de ceux qui ont montré que les mondes perçus par d'autres êtres vivants sont très différents du nôtre. Au passage, l'auteur fait profession de réalisme scientifique+++[citation]>
|<<tiddler [[Mayr 1997:86/réalismeScientifique]]>>|
=== L'auteur conclut en disant: "Globalement, je pense que l'épistémologie évolutive cognitive n'a rien de révolutionnaire, elle découle de l'application de la théorie darwinienne à la neurologie et à l'épistémologie."
!!5. Est-ce que la science progresse?[[→|Mayr (1997) - ch.05]]
La réponse de l'auteur est clairement ''((oui !(Ceux qui pensent le contraire sont des philosophes incompétents pour juger les avancées scientifiques!)))'', exemples à l'appui. Mais il n'y a pas de révolutions à la [[Kuhn|Kuhn, Thomas]] (du moins ((pas en biologie(La révolution darwinienne n'obéit pas au schéma de Kuhn.)))). Les changements théoriques ressemblent davantage au modèle darwinien.
!!6. Comment les sciences de la vie sont-elles structurées?[[→|Mayr (1997) - ch.06]]
Historique de la manière dont la discipline s'est constituée et structurée (subdivisions disciplinaires). ''A noter:'' la biologie en tant que science de la vie (i.e. des êtres vivants en tant que tels) n'est née que vers 1800.+++[citation]
|''Définition de la biologie:'' <<tiddler [[Treviranus 1802:4/définitionBiologie]]>>|
===
Mayr insiste sur la ''distinction des questions de type "Comment?" et "Pourquoi?"'', qui correspondent à la recherche des [[causes immédiates|CauseProximale]] et [[lointaines|CauseDistale]]. (Cette terminologie remonte à la fin du ~XIXe s.) Selon lui, @@color:red;"aucun phénomène biologique n'est totalement expliqué tant qu'on n'a pas éclairci à la fois ses causes immédiates et ses causes lointaines"@@ (p.132).
!!7. Les questions de type "Quoi?": l'étude de la biodiversité[[→|Mayr (1997) - ch.07]]
Un chapitre sur le travail de classification en biologie (taxinomie).
!!8. Les questions de type "Comment?": la production d'un nouvel organisme[[→|Mayr (1997) - ch.08]]
Comment un nouvel individu se développe à partir d'un oeuf fécondé (ontogenèse).
!!9. Les questions de type "Pourquoi?": l'évolution des organismes[[→|Mayr (1997) - ch.09]]
Aperçu sur l'histoire et les principes de la théorie de l'évolution, et sur les controverses actuelles (l'unité de sélection, la sociobiologie).
++++!![10. Quelles questions se pose-t-on en écologie?]
Comme l'indique le titre...
===
!![[11. Où l'homme se situe-t-il dans l'évolution?|Mayr (1997) - ch.11]]
L'apparition et le développement de l'humanité du point de vue de la théorie de l'évolution.
!![[12. L'évolution peut-elle rendre compte de la morale?|Mayr (1997) - ch.12]]
<<tiddler Citation>>
!atomisme
<part atomisme> "Du Bois-Reymond a écrit, par exemple, en 1872 que la compréhension de la nature "revenait à expliquer tous les changements s'opérant dans le monde comme résultat du mouvement des atomes", autrement dit, qu'il s'agissait de "réduire tous les processus naturels à des mécanismes atomiques [...]. Dès l'instant où l'on peut montrer que les changements s'opérant dans tous les corps naturels peuvent s'expliquer en tant que somme constante d'énergies potentielles et cinétiques, il n'y a rien d'autre à rechercher." Ses contemporains n'ont pas remarqué que ce type de déclaration n'était, en fait, qu'un assemblage de mots creux, ne reposant sur aucune donnée précise et n'ayant guère de valeur explicative." ([[Mayr 1997:20]]) </part><data>{"isLivre":true}</data>
''thèsesVitalistes:''
* <part thèsesVitalistes> "Selon l'un des groupes du [[vitalisme|Vitalisme]], la vie était liée soit à une ''substance spéciale'' (qu'ils appelaient le [[protoplasme|Protoplasme]]), ne figurant pas dans la matière inanimée; soit à un ''état particulier de la matière'' (comme l'état colloïdal). Et les sciences physico-chimiques, affirmaient ces auteurs, n'étaient pas en mesure d'analyser cette substance ou cet état de la matière. Un autre groupe de vitalistes soutenait qu'il existe une ''force vitale spéciale'' (parfois appelée //Lebenskraft//, "[[entéléchie|Entéléchie]]" ou "[[élan vital|Elan vital]]") distincte des forces dont s'occupent les physiciens. Au nombre de ceux qui acceptaient l'existence de cette force figuraient aussi les adeptes de la ''[[téléologie|Téléologie]]'', qui pensaient que la vie avait pour raison d'être quelque [[but final|Finalité]]. D'autres auteurs invoquaient des forces mentales ou psychologiques (PsychoVitalisme, PsychoLamarckisme) pour rendre compte des aspects des organismes vivants que les vitalistes n'avaient pas réussi à expliquer." ([[Mayr 1997:23]])
</part>
''forceVitale:''
* <part forceVitale> "A partir du moment où les processus physiologiques et ontogénétiques ont trouvé une explication en termes physico-chimiques aux niveaux cellulaire et moléculaire, il n'est resté aucun phénomène résiduel sous-tendant l'interprétation vitaliste: le vitalisme est tout simplement devenu superflu." ([[Mayr 1997:27]]) </part>
''génétiqueDarwinisme:''
* <part génétiqueDarwinisme> "C'est ainsi que deux grandes notions sous-tendant le vitalisme se sont effondrées: la téléologie et l'antisélectionnisme. La génétique et le darwinisme ont réussi à fournir des interprétations convaincantes à des phénomènes que les vitalistes jugeaient inexplicables, à moins d'invoquer une force ou une substance vitales." ([[Mayr 1997:28]]) </part>
''holisme:''
* <part holisme> "L'holisme, dans la mesure où il rejette le réductionnisme, "ne considère pas les organismes vivants comme des machines constituées d'une multitude de parties distinctes (d'unités physico-chimiques), que l'on peut extraire comme les pièces d'un moteur et que l'on peut décrire sans prendre en considération le système dont on les a tirées". Étant donné leurs interactions, la description des parties à l'état séparé ne peut pas rendre compte des propriétés du système en tant que tout: c'est leur agencement qui régit la totalité du système." ([[Mayr 1997:30]]) </part>
''holismeOrganisation:''
* <part holismeOrganisation> "Tous les holistes sont d'accord pour admettre qu'aucun système ne peut être expliqué de façon exhaustive par les propriétés de ses parties, prises isolément. L'organicisme est fondé sur cette notion primordiale: les êtres vivants sont dotés d'une organisation. On ne peut pas les considérer comme des collections de caractéristiques ou de molécules, car leur fonctionnement dépend entièrement de l'agencement de ces dernières, de leurs interrelations, de leurs interactions et de leurs interdépendances." ([[Mayr 1997:31-32]]) </part>
''organicisme:''
* <part organicisme> "Pour résumer, on peut dire que l'organicisme repose sur deux thèses: premièrement, ''l'organisme est un 'tout' ''; deuxièmement, sa globalité ne doit pas être considérée comme mystérieuse et impossible à analyser, elle doit être étudiée en choisissant le bon ''niveau d'analyse''. L'organiciste ne rejette pas cette dernière démarche, mais soutient qu'on ne doit pas la pousser en deçà du niveau où elle apporte des informations pertinentes et des éclairages nouveaux." ([[Mayr 1997:33]]) </part>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!scienceChrétienne
<part scienceChrétienne> "Pratiquement tous les artisans de la révolution scientifique étaient de fervents chrétiens. Il n'est donc pas surprenant qu'ils aient créé un type de science se présentant comme une branche de la religion chrétienne. Dans cette optique, le monde avait été créé par Dieu et ne pouvait donc pas être chaotique. Il était gouverné par Ses lois, qui, parce qu'elles étaient les lois divines, étaient universelles. On considérait que l'explication d'un phénomène ou d'un processus donné était convaincante, dès lors qu'elle était compatible avec l'une de ces lois. Puisque la marche du cosmos était ainsi parfaitement et absolument déterminée, il devait être finalement possible de tout prouver et de tout prédire. L'objectif de cette science au service de Dieu était donc d'identifier ces lois universelles, de trouver l'ultime vérité sur tout grâce à elles et de mettre à l'épreuve leur exactitude au moyen de prédictions et d'expériences." ([[Mayr 1997:40]]) </part>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!réalismeBiologiste
<part réalismeBiologiste> "Par contraste [avec l'idéalisme de certains philosophes], les biologistes que je connais professent un réalisme du "bon sens". @@color:red;''Ils acceptent comme un fait incontestable qu'un "monde réel" existe hors de nous.''@@ On peut aujourd'hui mettre à l'épreuve, au moyen d'instruments, les impressions fournies par nos sens de tant de façons différentes, et les prédictions fondées sur ces observations sont confirmées de façon tellement constante qu'il ne semble guère y avoir d'intérêt à mettre en doute le réalisme du "bon sens" (ou réalisme pragmatique) à partir duquel les biologistes conduisent normalement leurs recherches." ([[Mayr 1997:68]]) </part>
<<tiddler RéférenceLivre>>
!concepts
<part concepts> "En biologie, les concepts jouent un rôle bien plus grand que les lois dans l'élaboration des théories. Les deux facteurs majeurs qui contribuent, dans les sciences de la vie, à la formation de nouvelles théories sont la découverte de faits nouveaux (par le biais de l'observation) et le développement de concepts nouveaux." ([[Mayr 1997:74]]) </part>
<<tiddler Citation>>
!théories&Concepts
<part théories&Concepts> "Curieusement, la philosophie classique des sciences a peu mentionné le rôle important des concepts dans l'élaboration des théories. Cependant, plus j'étudie cette question, plus j'ai l'impression que les théories en vigueur dans les sciences physiques sont généralement fondées sur des lois, tandis que celles en cours en biologie le sont sur des concepts." ([[Mayr 1997:75]]) </part>
<<tiddler Citation>>
!causesImmédiates(fonctionnelles)
* <part causesImmédiates(fonctionnelles)> "Toutes les activités et tous les processus mettant en jeu les instructions d'un programme sont des causes immédiates. C'est le cas des mécanismes responsables des processus physiologiques, ontologiques et éthologiques gouvernés par des programmes génétiques et somatiques. La description de ces mécanismes répond à des questions de type "Comment?"." ([[Mayr 1997:80]]) </part>

!causesLointaines(évolutives)
* <part causesLointaines(évolutives)> "Les causes lointaines ou évolutives sont celles qui président à l'apparition de nouveaux programmes génétiques ou à la modification de ceux qui existaient déjà. En d'autres termes, il s'agit de toutes les causes responsables des changements qui se produisent durant le processus de l'évolution. [...] Leur description répond généralement à des questions de type "Pourquoi?"." ([[Mayr 1997:80]])  </part>
<<tiddler Citation>>
!réalismeScientifique
<part réalismeScientifique> "Les partisans du [[réalisme scientifique|RéalismeScientifique]], comme on appelle quelquefois les personnes soutenant ce type de point de vue, estiment que dès l'instant où une théorie est vérifiée, cela autorise à croire en l'existence réelle d'une [[entité théorique|EntitéThéorique]] postulée et à affirmer que cette dernière est aussi réelle que toute autre que l'on peut directement observer grâce à nos sens. Le réalisme scientifique est un point de vue partagé par tous les scientifiques que je connais." (Mayr 1997:86) </part>
<<tiddler AutoRefresh on>>
{{floatleft{[img[http://ecx.images-amazon.com/images/I/419S2GD7H2L._SL500_AA240_.jpg]]}}}
++++![Résumé]
[[Ernst Mayr|Mayr, Ernst]] cherche à caractériser la [[biologie|Biologie]] parmi les autres sciences. Il distingue deux types de sciences biologiques, les unes s'efforçant d'expliquer les phénomènes du vivant d'après les [[causes immédiates|CauseProximale]] (c'est le cas de la physiologie, de la biologie moléculaire, etc.), les autres d'après les [[causes lointaines|CauseDistale]] (c'est le cas de toutes les disciplines biologiques se rattachant à la [[théorie de l'évolution|Darwinisme]]).

L'auteur expose ensuite les résultats obtenus dans quatre disciplines fondamentales: la systématique, la biologie du développement, l'écologie et la théorie du développement proprement dite, offrant en outre un remarquable résumé des derniers acquis de la paléo-anthropologie. Son dernier chapitre porte sur la morale: peut-elle être fondée sur ce que la biologie nous apprend de l'homme?
===

+++![Chapitres]
<<tiddler [[Mayr (1997) - ch.01]]>>
<<tiddler [[Mayr (1997) - ch.02]]>>
<<tiddler [[Mayr (1997) - ch.03]]>>
<<tiddler [[Mayr (1997) - ch.04]]>>
<<tiddler [[Mayr (1997) - ch.05]]>>
<<tiddler [[Mayr (1997) - ch.06]]>>
<<tiddler [[Mayr (1997) - ch.07]]>>
<<tiddler [[Mayr (1997) - ch.08]]>>
<<tiddler [[Mayr (1997) - ch.09]]>>
<<tiddler [[Mayr (1997) - ch.10]]>>
<<tiddler [[Mayr (1997) - ch.11]]>>
<<tiddler [[Mayr (1997) - ch.12]]>>
<<newChapterHere>>
===

<<tiddler RéférenceLivre>>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere label:"nouvelle note">><<newChapterHere>>
----
<data>{"nom":"Mayr","prénom":"Ernst","initiales":"E","datepublication":"1997","titrelivre":"Qu`est-ce que la biologie?","villeédition":"Paris","noméditeur":"Fayard","dateédition":"1998","pagescitation":"35","motscléscitation":"unitéBiologie","isLivre":true}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!unitéBiologie
<part unitéBiologie> "Toutes ces caractéristiques des organismes vivants les distinguent fondamentalement des systèmes inanimés. Dans l'histoire des sciences, c'est la reconnaissance graduelle du caractère unique et distinct des êtres vivants qui a conduit à délimiter cette science qu'on appelle la biologie, et à reconnaître son autonomie" ([[Mayr, E 1997:35]]) </part><data>{"nom":"Mayr","prénom":"Ernst","initiales":"E","datepublication":"1997","titrelivre":"Qu`est-ce que la biologie?","villeédition":"Paris","noméditeur":"Fayard","dateédition":"1998","pagescitation":"35","motscléscitation":"unitéBiologie"}</data>
{{floatleft{[img[Ernst Mayr, image wikipedia|./imagesWiki/Ernst_Mayr.jpg][http://fr.wikipedia.org/wiki/Ernst_Mayr]]}}}
++++![1904 — 2005]
Né en 1904, ''Ernst Mayr'' est l'un des grands biologistes du ~XXe siècle. Il est peut-être le premier à avoir introduit en [[biologie|Biologie]] la notion de [[programme génétique|Programme génétique]] en 1961. Naturaliste, il a aussi beaucoup écrit en [[philosophie de la biologie|PhiloBio]] pour souligner les spécificités et l'[[autonomie de sa discipline|Réductionnisme]] face à la [[physique|Physique]] et aux conceptions par trop [[mécanistes|Mécanisme]] du vivant.
===

!Publications
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Mayr","prénom":"Ernst","initiales":"E"}</data>
!self-reproducingSystems
<part self-reproducingSystems> "The systems of which some parts are said to have functions in an explanatory sense are conceived as self-reproducing systems, that is, as systems whose identity conditions over time include their continual self-reproduction - either as the same individual or as successive instantiations of the same type." ([[McLaughlin 2001:13]] </part>
!!1. Introduction [[→|McLaughlin, P (2001) - ch.01]]


<<tiddler AutoRefresh on>>{{floatleft{[img[McLaughlin, P (2001): What Functions Explain|http://ecx.images-amazon.com/images/I/41auw7s4AkL._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg]]}}}
++++![Résumé]
Pourquoi certains objets peuvent-ils être expliqués fonctionnellement et pas d'autres? A quel genre d'objets attribue-t-on des [[fonctions|Fonction]] et en quoi celles-ci sont-elles [[explicatives|Explication]]? L'auteur défend l'idée selon laquelle les seules attributions fonctionnelles qui soient vraiment explicatives (au sens [[causal|Causalité]]) sont liées à un type de système qu'on rencontre dans les sciences sociales et en [[biologie|Biologie]]: les systèmes auto-reproducteurs.+++[citation]
|<<tiddler [[McLaughlin 2001:13/self-reproducingSystems]]>>|
===
Considérant que la [[sélection naturelle|SélectionNaturelle]] ne rend pas suffisamment compte de la dimension [[téléologique|Téléologie]] des fonctions, l'auteur a recours à la téléologie aristotélicienne. Il ne cherche pas un concept général qui couvre à la fois les fonctions naturelles et artificielles, car les secondes sont dérivées des premières; ce qu'il faut expliquer, c'est comment des systèmes avec des fonctions biologiques peuvent donner lieu à des systèmes avec des fonctions artificielles.
===

+++![Chapitres]
<<tiddler [[McLaughlin, P (2001) - ch.01]]>>
<<tiddler [[McLaughlin, P (2001) - ch.02]]>>
<<tiddler [[McLaughlin, P (2001) - ch.03]]>>
<<tiddler [[McLaughlin, P (2001) - ch.04]]>>
<<tiddler [[McLaughlin, P (2001) - ch.05]]>>
<<tiddler [[McLaughlin, P (2001) - ch.06]]>>
<<tiddler [[McLaughlin, P (2001) - ch.07]]>>
<<tiddler [[McLaughlin, P (2001) - ch.08]]>>
<<tiddler [[McLaughlin, P (2001) - ch.09]]>>
<<tiddler [[McLaughlin, P (2001) - ch.10]]>>
===

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"McLaughlin","prénom":"Peter","initiales":"P","titrelivre":"What Functions Explain","datepublication":"2001","villeédition":"New York","noméditeur":"Cambridge University Press","dateédition":"2001"}</data>
<<tiddler Auteur>>


++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"McLaughlin","prénom":"Peter","initiales":"P"}</data>
<<tiddler AutoRefresh on>><<tiddler Livre>>{{floatleft{
}}}++++![Résumé]
Recueil d'articles sur l'objectivité scientifique vue depuis plusieurs perspectives.

<<tiddler [[Objectivité: quatre acceptions différentes]]>>
===

+++![Chapitres]
<<newChapterHere>>
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
etc.
===

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Megill","prénom":"Allan","initiales":"A","isLivre":false,"isEditedBook":true,"titrelivre":"Rethinking Objectivity","datepublication":"1994","villeédition":"London","noméditeur":"Duke University Press","dateédition":"1994"}</data>
<<tiddler Auteur>>{{floatleft{
[img(120px,auto)[ ]]
}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Megill","prénom":"Allan","initiales":"A","isLivre":false,"isEditedBook":true,"titrelivre":"Rethinking Objectivity","datepublication":"1994","villeédition":"London","noméditeur":"Duke University Press","dateédition":"1994"}</data>
<<forEachTiddler 
where 
'tiddler.tags.contains("bibRef") && tiddler.data("booktitle")' 
sortBy
'tiddler.title'
write 
 '"{{justfine{"+tiddler.data("author")+",  }}} {{italic{ "+tiddler.data("booktitle")+".}}} "+tiddler.data("pubinfo")+" [[here|"+tiddler.title+"]]<br>\n"' 
>>
<<forEachTiddler 
where 
'tiddler.tags.contains("bibRef") && tiddler.data("mine")' 
sortBy
'tiddler.data("title")'
write 
 '"{{justfine{"+tiddler.data("author")+",  }}} {{italic{ "+tiddler.data("booktitle")+".}}} "+tiddler.data("pubinfo")+" [[here|"+tiddler.title+"]]<br>\n"' 
>>
<<tiddler AutoRefresh on>>[img[tooltip|IconeLivreOuvert]]

++++![Résumé]

===

+++![Chapitres]
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
<<newChapterHere>>
===
<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Millikan","prénom":"Ruth Garrett","initiales":"RG","isLivre":true,"titrelivre":"Language, Thought, and Other Biological Categories","datepublication":"1984","villeédition":"Cambridge, MA","noméditeur":"MIT Press","dateédition":"1984"}</data>
<<tiddler Article>>

Dans cet article, [[Millikan|Millikan, Ruth Garrett]] revient sur la définition des [[fonctions propres|ProperFunction]] qu'elle avait proposée dans //[[Language, Thought, and Other Biological Categories|Millikan, RG (1984): Language, Thought, and Other Biological Categories]]//.

+++[Fonction propre: définition]
|<<tiddler ProperFunction/properFunctionDefinition>>|
===


L'auteur prétend que sa définition couvre non seulement les fonctions des organes et des comportements innés, mais aussi celles des comportements acquis, des coutumes, des dispositifs du langage comme les mots et les formes syntactiques, ainsi que les artefacts.

Millikan s'oppose tout d'abord au projet d'une analyse conceptuelle, c'est-à-dire au fait de chercher des conditions nécessaires et suffisantes pour l'application du terme, ou la recherche de critères d'application.

Ce qu'elle propose est une définition théorique des fonctions, où le sens de "définition théorique" est défini par elle dans //[[Language, Thought, and Other Biological Categories|Millikan, RG (1984): Language, Thought, and Other Biological Categories]]//. Cette définition théorique s'applique dans le contexte "The/a function of _ is _", mais pas dans le contexte "_ functions //as// a _". La définition de fonction propre peut aussi être vue comme une définition théorique de "purpose".

Sa définition théorique ne rend pas compte de certaines expériences de pensée, comme celle du double où un hasard cosmique fait que des molécules se rassemblent et constitue un double parfait d'un objet doté de fonctions. Le double, lui, bien qu'identique, n'a pas de fonction, car son histoire n'est pas la bonne.

Elle discute ensuite l'article de [[Cummins|Cummins, Robert]], montrant que sa définition porte sur autre chose, sur le sens de "//functions as//". Contrairement à Millikan, Cummins écarte toute référence à des intentions ou buts (//purpose//).

Ensuite elle discute le fait que les membres d'une catégorie fonctionnelle peuvent ne pas être capables d'accomplir leur fonction. Il s'agit d'une question normative.

...

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom","")
   var prénom=DataTiddler.getData(titre,"prénom","")
   var initiales=DataTiddler.getData(titre,"initiales","")
   var titrearticle=DataTiddler.getData(titre,"titrearticle","")
   var datepublication=DataTiddler.getData(titre,"datepublication","")
   var journal=DataTiddler.getData(titre,"journal","")
   var volumejournal=DataTiddler.getData(titre,"volumejournal","")
   var numérojournal=DataTiddler.getData(titre,"numérojournal","")
   var pagesarticle=DataTiddler.getData(titre,"pagesarticle","")
   return "|bgcolor(#ffff99): "+nom+", "+initiales+" ("+datepublication+"): '"+titrearticle+"', //"+journal+"// ''"+volumejournal+"''("+numérojournal+"):"+pagesarticle+"|[img[Fichier attaché |iconesWiki/pdf.gif][../Millikan, RG - In Defense of Proper Functions - 1989.pdf]]|";
</script>
----
+++[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var pagescitation=DataTiddler.getData(titre,"pagescitation")
   return nom+", "+initiales+" "+datepublication+":"+pagescitation;
</script>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
----
===<<newNoteHere>><data>{"titrearticle":"In Defense of Proper Functions","datepublication":"1989","journal":"Philosophy of Science","volumejournal":"56","numérojournal":"2","pagesarticle":"288-302","nom":"Millikan","prénom":"Ruth Garrett","initiales":"RG","isArticleRevue":true,"attachedPDF":"../Millikan, RG - In Defense of Proper Functions - 1989.pdf"}</data>
{{floatleft{[img(120px,auto)[Ruth Garrett Millikan, page personnelle à l'Université du Connecticut|ImageRuthMillikan][http://www.philosophy.uconn.edu/department/millikan/]]}}}

++++![Publications]
<<forEachTiddler
	where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Millikan","prénom":"Ruth Garrett","initiales":"RG"}</data>
<<tiddler Idées>>Millikan refuse l'analyse conceptuelle des fonctions pour proposer une définition théorique, de même que ~H2O est la définition théorique de l'eau.

Pourtant, derrière cette définition théorique, il n'y a aucune théorie. On n'a aucune théorie biologique à partir de laquelle on puisse expliquer les fonctions. C'est-à-dire que l'on définit les fonctions à partir de la sélection naturelle (théorie de Darwin), mais est-ce que en partant de la théorie de Darwin on peut en déduire l'existence de fonctions. Je crois que non. Cela rend l'explication par la sélection naturelle une explication ad hoc sans véritable fondement.

Par ailleurs, il y a une différence entre définir l'eau comme étant ~H2O et définir les fonctions. Le premier est une substance, un objet, tandis que le second est une propriété. Les propriétés ne peuvent pas simplement se définir de cette manière, il faut les expliquer. En physique, on explique les propriétés avec une théorie d'où elles dérivent.

La croissance, la reproduction, l'invariance, l'évolution, etc., sont des propriétés des êtres vivants, qui peuvent s'expliquer théoriquement à partir de la biochimie et de la physique, c'est-à-dire à partir d'autres propriétés de la matière, mais je pense que la vie elle-même, ainsi que les fonctions, ne sont pas des propriétés. 

Voir aussi [[Théorie de la vie - Théorie des fonctions]]

<<tiddler AutoRefresh on>><<tiddler Article>>

++++![Résumé]

===

<<tiddler RéférenceArticle>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere>>
----
<<tiddler Auteur>>{{floatleft{
[img(120px,auto)[ ]]
}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<<tiddler Chapitre>><<tiddler RéférenceLivre>>
<<tiddler Citation>><<tiddler RéférenceLivre>><<tiddler RéférenceArticle>>
<<tiddler AutoRefresh on>><<tiddler Livre>>{{floatleft{
}}}++++![Résumé]

===

+++![Chapitres]
<<newChapterHere>>
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
etc.
===

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
+++^[Auteur]
<<tiddler ModèleAuteurs>>
===
+++^[Livre]
<<tiddler ModèleLivres>>
===
+++^[Article]
<<tiddler ModèleArticles>>
===

<<newTiddler label:"nouvelAuteur" title:'Nom, Prénom' text:{{store.getTiddlerText('ModèleAuteurs')}} tag:'Auteurs'>>
Voilà ce qu'il faudrait que je sois:


<html><img src="../../Documents/Pictures/Albertosaurus.jpg" style="height: 146px; "/></html>

Voilà ce que je suis parfois !
<html><img src="../../Documents/Pictures/sadness.jpg" style="height: 146px; "/></html>





<<tiddler AutoRefresh on>><<tiddler Livre>>{{floatleft{
}}}++++![Résumé]
''Le hasard et la nécessité: essai sur la philosophie naturelle de la biologie moderne'' expose les dernières découvertes en BiologieMoléculaire (1970) et en tire les conséquences philosophiques. L'auteur y affirme que la biologie a enfin percé le secret de la [[vie|Vie]] grâce à la découverte du [[code génétique|Programme génétique]] et des mécanismes moléculaires qui lui sont associés.+++[citation]>
|<<tiddler [[Monod, J 1970:126/leSecretDeLaVie]]>>|
=== En effet, selon Monod, il y a trois propriétés fondamentales qui distinguent les êtres vivants de tous les autres objets présents dans l'univers: la ''[[téléonomie|Téléonomie]]'', la ''morphogénèse autonome'' et l' ''invariance reproductive''. Tout le livre consiste à montrer comment la biologie moléculaire permet d'expliquer ces trois propriétés.

Dans la préface de l'ouvrage, Monod affirme que le problème central de la biologie est la contradiction entre le postulat d'[[objectivité|Objectivité]] de la nature, qui est "le refus //systématique// de considérer comme pouvant conduire à une connaissance 'vraie' toute interprétation des phénomènes donnée en termes de causes finales, c'est-à-dire de 'projet'", et la (([[téléonomie|Téléonomie]] des êtres vivants, ou le fait qu'ils sont doués d'un projet.+++[citation]>
|<<tiddler [[Monod, J 1970:38/contradictionEpistémologique]]>>|
=== Monod montre comment le vivant est le fruit d'événements contingents qui sont conservés et reproduits par la mécanique moléculaire. Il veut montrer qu'il n'y a pas de prédétermination et que tout s'explique par le fruit du hasard et de la nécessité. Ce faisant, il ne peut que réduire la téléonomie biologique à une //apparence// de projet.
===

+++![Chapitres]
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
<<newChapterHere>>
===

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Monod","prénom":"Jacques","initiales":"J","titrelivre":"Le hasard et la nécessité","datepublication":"1970","villeédition":"Paris","noméditeur":"Seuil","dateédition":"1973","pagescitation":"134","motscléscitation":"invariants"}</data>
<<tiddler Citation>><<tiddler testCitations>>
!leSecretDeLaVie
<part leSecretDeLaVie> "L'//ultima ratio// de toutes les structures et performances [[téléonomiques|Téléonomie]] des êtres vivants est donc enfermée dans les séquences de radicaux des fibres polypériodiques, 'embryons' de ces [[démons de Maxwell|DémonMaxwell]] biologiques que sont les protéines globulaires. En un sens, très réel, c'est à ce niveau d'organisation chimique que gît, s'il y en a un, le secret de la vie. Et saurait-on non seulement décrire ces séquences, mais énoncer la loi d'assemblage à laquelle elles obéissent, on pourrait dire que le secret est percé, l'//ultima ratio// découverte." ([[Monod, J 1970:126]]) </part><data>{"nom":"Monod","prénom":"Jacques","initiales":"J","titrelivre":"Le hasard et la nécessité","datepublication":"1970","villeédition":"Paris","noméditeur":"Seuil","dateédition":"1973","pagescitation":"126","motscléscitation":"leSecretDeLaVie","isLivre":true}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!invariants
<part invariants> "la statégie fondamentale de la science dans l'analyse des phénomènes est la découverte des invariants. Toute loi physique, comme d'ailleurs tout développement mathématique, spécifie une relation d'invariance; les propositions les plus fondamentales de la science sont des postulats universels de conservation." ([[Monod, J 1970:134]]) </part><data>{"nom":"Monod","prénom":"Jacques","initiales":"J","titrelivre":"Le hasard et la nécessité","datepublication":"1970","villeédition":"Paris","noméditeur":"Seuil","dateédition":"1973","pagescitation":"134","motscléscitation":"invariants"}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!postulatObjectivitéNature
<part postulatObjectivitéNature> "La pierre angulaire de la [[méthode scientifique|MéthodeScientifique]] est le postulat de l'[[objectivité|Objectivité]] de la Nature. C'est-à-dire le refus //systématique// de considérer comme pouvant conduire à une connaissance 'vraie' toute interprétation des phénomènes donnée en termes de [[causes finales|Téléologie]], c'est-à-dire de 'projet'." ([[Monod, J 1970:37]]) </part>
<data>{"nom":"Monod","prénom":"Jacques","initiales":"J","titrelivre":"Le hasard et la nécessité","datepublication":"1970","villeédition":"Paris","noméditeur":"Seuil","dateédition":"1973","pagescitation":"37","motscléscitation":"postulatObjectivitéNature"}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!contradictionEpistémologique
<part contradictionEpistémologique> "L'[[objectivité|Objectivité]] cependant nous oblige à reconnaître le caractère [[téléonomique|Téléonomie]] des êtres vivants, à admettre que, dans leurs structures et performances, ils réalisent et poursuivent un projet. Il y a donc là, au moins en apparence, une contradiction épistémologique profonde. Le problème central de la biologie c'est cette contradiction elle-même, qu'il s'agit de résoudre si elle n'est qu'apparente, ou de prouver radicalement insoluble si en vérité il en est bien ainsi." ([[Monod, J 1970:38]]) </part><data>{"nom":"Monod","prénom":"Jacques","initiales":"J","titrelivre":"Le hasard et la nécessité","datepublication":"1970","villeédition":"Paris","noméditeur":"Seuil","dateédition":"1973","pagescitation":"38","motscléscitation":"contradictionEpistémologique"}</data>
{{floatleft{
[img(120px,auto)[Jacques Monod, wikipedia|imagesWiki/monod.jpg][http://fr.wikipedia.org/wiki/Jacques_Monod_(biologiste)]]
}}}
''Jacques Monod'' (1910 - 1976) est un médecin et biologiste moléculaire français, Prix Nobel de médecine en 1965 (avec [[François Jacob|Jacob, François]] et A. Lwoff) pour ses travaux sur la régulation génétique et la découverte du rôle effectif de l'[[ARN]] messager. Directeur de l'Institut Pasteur de 1971 à sa mort.

Dans //[[Le hasard et la nécessité|Monod, J (1970): Le hasard et la nécessité]]// il tire les conséquences philosophiques des découvertes en [[biologie moléculaire|BiologieMoléculaire]] et en donne une formulation canonique.
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Monod","prénom":"Jacques","initiales":"J","titrelivre":"Le hasard et la nécessité","datepublication":"1970","villeédition":"Paris","noméditeur":"Seuil","dateédition":"1973"}</data>
<<tiddler Citations>>
!critèresScientificité
<part critèresScientificité> __Selon [[John Moore|Moore, John]] (1993), il y a huit critères pour évaluer la [[scientificité d'une discipline|Moore (1993) - Critères de scientificité]]:__

# Cette discipline doit être fondée sur le recueil de données obtenues par l'observation de la nature ou par des expériences de laboratoire, sans invoquer de facteurs surnaturels.
# Les données doivent être recueillies dans le but de répondre à des questions, et les observations doivent être faites afin de confirmer ou de réfuter des hypothèses.
# Des méthodes objectives doivent être employées, afin d'éliminer au maximum toute déformation des conclusions.
#Les hypothèses doivent être compatibles avec les observations et avec le cadre conceptuel général.
# Toutes les hypothèses doivent être testées et, si possible, de nouvelles hypothèses alternatives doivent être formulées et leurs mérites respectifs (leur capacité à résoudre les problèmes) comparés.
# Les généralisations doivent avoir valeur universelle au sein du domaine couvert par une science particulière. Les phénomènes uniques en leur genre doivent être explicables sans invoquer de facteurs surnaturels.
# Afin d'éliminer les éventuelles erreurs, un fait ou une découverte ne doivent être pleinement acceptés qu'à la condition d'avoir été confirmés de façon répétée par d'autres chercheurs.
# La science est caractérisée par l'amélioration constante des théories scientifiques, par le remplacement des conceptions incomplètes ou défectueuses par de nouvelles conceptions et par la résolution de problèmes antérieurement énigmatiques.

(Moore, J. (1993): Science as a Way of Knowing, Harvard University Press, Cambridge. Cité par [[E. Mayr (1997), p. 43|Mayr, E (1997): Qu`est-ce que la biologie?]])</part>
<<tiddler Auteur>>

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Moore","prénom":"John","initiales":"J"}</data>
<<search>>
<<tiddler AutoRefresh on>><<tiddler HideTiddlerTags>><<tabs txtMainTab "Nuage" "Nuage de mots-clefs" NuageMotsClefs "Liste" "Liste de tous les mot-clés" TabTags "Tiddlers" "Liste des tiddlers par mot-clef" ListeParMotsClefs >>
Name: MptwBlack
Background: #000
Foreground: #fff
PrimaryPale: #333
PrimaryLight: #555
PrimaryMid: #888
PrimaryDark: #aaa
SecondaryPale: #111
SecondaryLight: #222
SecondaryMid: #555
SecondaryDark: #888
TertiaryPale: #222
TertiaryLight: #666
TertiaryMid: #888
TertiaryDark: #aaa
Error: #300

This is in progress. Help appreciated.


Name: MptwBlue
Background: #fff
Foreground: #000
PrimaryPale: #cdf
PrimaryLight: #57c
PrimaryMid: #114
PrimaryDark: #012
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

/***
|Name:|MptwConfigPlugin|
|Description:|Miscellaneous tweaks used by MPTW|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
!!Note: instead of editing this you should put overrides in MptwUserConfigPlugin
***/
//{{{
var originalReadOnly = readOnly;
var originalShowBackstage = showBackstage;

config.options.chkHttpReadOnly = false; 		// means web visitors can experiment with your site by clicking edit
readOnly = false;								// needed because the above doesn't work any more post 2.1 (??)
showBackstage = true;							// show backstage for same reason

config.options.chkInsertTabs = true;    		// tab inserts a tab when editing a tiddler
config.views.wikified.defaultText = "";			// don't need message when a tiddler doesn't exist
config.views.editor.defaultText = "";			// don't need message when creating a new tiddler 

config.options.chkSaveBackups = true;			// do save backups
config.options.txtBackupFolder = 'twbackup';	// put backups in a backups folder

config.options.chkAutoSave = (window.location.protocol == "file:"); // do autosave if we're in local file

config.mptwVersion = "2.5.1";

config.macros.mptwVersion={handler:function(place){wikify(config.mptwVersion,place);}};

if (config.options.txtTheme == '')
	config.options.txtTheme = 'MptwTheme';

// add to default GettingStarted
config.shadowTiddlers.GettingStarted += "\n\nSee also [[MPTW]].";

// add select theme and palette controls in default OptionsPanel
config.shadowTiddlers.OptionsPanel = config.shadowTiddlers.OptionsPanel.replace(/(\n\-\-\-\-\nAlso see AdvancedOptions)/, "{{select{<<selectTheme>>\n<<selectPalette>>}}}$1");

// these are used by ViewTemplate
config.mptwDateFormat = 'DD/MM/YY';
config.mptwJournalFormat = 'Journal DD/MM/YY';

//}}}
Name: MptwGreen
Background: #fff
Foreground: #000
PrimaryPale: #9b9
PrimaryLight: #385
PrimaryMid: #031
PrimaryDark: #020
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

Name: MptwRed
Background: #fff
Foreground: #000
PrimaryPale: #eaa
PrimaryLight: #c55
PrimaryMid: #711
PrimaryDark: #500
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

|Name|MptwRounded|
|Description|Mptw Theme with some rounded corners (Firefox only)|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|PageTemplate|MptwTheme##PageTemplate|
|StyleSheet|##StyleSheet|

!StyleSheet
/*{{{*/

[[MptwTheme##StyleSheet]]

.tiddler,
.sliderPanel,
.button,
.tiddlyLink,
.tabContents
{ -moz-border-radius: 1em; }

.tab {
	-moz-border-radius-topleft: 0.5em;
	-moz-border-radius-topright: 0.5em;
}
#topMenu {
	-moz-border-radius-bottomleft: 2em;
	-moz-border-radius-bottomright: 2em;
}

/*}}}*/

Name: MptwSmoke
Background: #fff
Foreground: #000
PrimaryPale: #aaa
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

|Name|MptwStandard|
|Description|Mptw Theme with the default TiddlyWiki PageLayout and Styles|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
Name: MptwTeal
Background: #fff
Foreground: #000
PrimaryPale: #B5D1DF
PrimaryLight: #618FA9
PrimaryMid: #1a3844
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #f8f8f8
TertiaryLight: #bbb
TertiaryMid: #999
TertiaryDark: #888
Error: #f88
|Name|MptwTheme|
|Description|Mptw Theme including custom PageLayout|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|

http://mptw.tiddlyspot.com/#MptwTheme ($Rev: 1829 $)

!PageTemplate
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
	<div class='headerShadow'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
	<div class='headerForeground'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
</div>
<!-- horizontal MainMenu -->
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
<!-- original MainMenu menu -->
<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->
<div id='sidebar'>
	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->

!ViewTemplate
<!--{{{-->
[[MptwTheme##ViewTemplateToolbar]]

<div class="tagglyTagged" macro="tags"></div>

<div class='titleContainer'>
	<span class='title' macro='view title'></span>
	<span macro="miniTag"></span>
</div>

<div class='subtitle'>
	(updated <span macro='view modified date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>
	by <span macro='view modifier link'></span>)
	<!--
	(<span macro='message views.wikified.createdPrompt'></span>
	<span macro='view created date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>)
	-->
</div>

<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
	<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div macro="else">
	<div class='viewer' macro='view text wikified'></div>
</div>

<div class="tagglyTagging" macro="tagglyTagging"></div>

<!--}}}-->

!ViewTemplateToolbar
<!--{{{-->
<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
		<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
	</span>
	<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
	<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
	<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
	<span style="padding:1em;"></span>
	<span macro='toolbar closeTiddler closeOthers +editTiddler deleteTiddler > fields syncing permalink references jump'></span> <span macro='newHere label:"new here"'></span>
	<span macro='newJournalHere {{config.mptwJournalFormat?config.mptwJournalFormat:"MM/0DD/YY"}}'></span>
</div>
<!--}}}-->

!EditTemplate
<!--{{{-->
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler closeOthers -cancelTiddler cancelCloseTiddler deleteTiddler"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div macro='annotations'></div>
<div class="editLabel">Content</div><div class="editor" macro="edit text"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<!--}}}-->

!StyleSheet
/*{{{*/

/* a contrasting background so I can see where one tiddler ends and the other begins */
body {
	background: [[ColorPalette::TertiaryLight]];
}

/* sexy colours and font for the header */
.headerForeground {
	color: [[ColorPalette::PrimaryPale]];
}
.headerShadow, .headerShadow a {
	color: [[ColorPalette::PrimaryMid]];
}

/* separate the top menu parts */
.headerForeground, .headerShadow {
	padding: 1em 1em 0;
}

.headerForeground, .headerShadow {
	font-family: 'Trebuchet MS' sans-serif;
	font-weight:bold;
}
.headerForeground .siteSubtitle {
	color: [[ColorPalette::PrimaryLight]];
}
.headerShadow .siteSubtitle {
	color: [[ColorPalette::PrimaryMid]];
}

/* make shadow go and down right instead of up and left */
.headerShadow {
	left: 1px;
	top: 1px;
}

/* prefer monospace for editing */
.editor textarea, .editor input {
	font-family: 'Consolas' monospace;
	background-color:[[ColorPalette::TertiaryPale]];
}


/* sexy tiddler titles */
.title {
	font-size: 250%;
	color: [[ColorPalette::PrimaryLight]];
	font-family: 'Trebuchet MS' sans-serif;
}

/* more subtle tiddler subtitle */
.subtitle {
	padding:0px;
	margin:0px;
	padding-left:1em;
	font-size: 90%;
	color: [[ColorPalette::TertiaryMid]];
}
.subtitle .tiddlyLink {
	color: [[ColorPalette::TertiaryMid]];
}

/* a little bit of extra whitespace */
.viewer {
	padding-bottom:3px;
}

/* don't want any background color for headings */
h1,h2,h3,h4,h5,h6 {
	background-color: transparent;
	color: [[ColorPalette::Foreground]];
}

/* give tiddlers 3d style border and explicit background */
.tiddler {
	background: [[ColorPalette::Background]];
	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
	margin-bottom: 1em;
	padding:1em 2em 2em 1.5em;
}

/* make options slider look nicer */
#sidebarOptions .sliderPanel {
	border:solid 1px [[ColorPalette::PrimaryLight]];
}

/* the borders look wrong with the body background */
#sidebar .button {
	border-style: none;
}

/* this means you can put line breaks in SidebarOptions for readability */
#sidebarOptions br {
	display:none;
}
/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {
	display:inline;
}

/* horizontal main menu stuff */
#displayArea {
	margin: 1em 15.7em 0em 1em; /* use the freed up space */
}
#topMenu br {
	display: none;
}
#topMenu {
	background: [[ColorPalette::PrimaryMid]];
	color:[[ColorPalette::PrimaryPale]];
}
#topMenu {
	padding:2px;
}
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
	margin-left: 0.5em;
	margin-right: 0.5em;
	padding-left: 3px;
	padding-right: 3px;
	color: [[ColorPalette::PrimaryPale]];
	font-size: 115%;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
	background: [[ColorPalette::PrimaryDark]];
}

/* make 2.2 act like 2.1 with the invisible buttons */
.toolbar {
	visibility:hidden;
}
.selected .toolbar {
	visibility:visible;
}

/* experimental. this is a little borked in IE7 with the button 
 * borders but worth it I think for the extra screen realestate */
.toolbar { float:right; }

/* fix for TaggerPlugin. from sb56637. improved by FND */
.popup li .tagger a {
   display:inline;
}

/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
  padding:0.5em;
  display:block;
}
#sidebarOptions .sliderPanel .select br {
	display:none;
}

/* make it print a little cleaner */
@media print {
	#topMenu {
		display: none ! important;
	}
	/* not sure if we need all the importants */
	.tiddler {
		border-style: none ! important;
		margin:0px ! important;
		padding:0px ! important;
		padding-bottom:2em ! important;
	}
	.tagglyTagging .button, .tagglyTagging .hidebutton {
		display: none ! important;
	}
	.headerShadow {
		visibility: hidden ! important;
	}
	.tagglyTagged .quickopentag, .tagged .quickopentag {
		border-style: none ! important;
	}
	.quickopentag a.button, .miniTag {
		display: none ! important;
	}
}

/* get user styles specified in StyleSheet */
[[StyleSheet]]

/*}}}*/

|Name|MptwTrim|
|Description|Mptw Theme with a reduced header to increase useful space|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|StyleSheet|MptwTheme##StyleSheet|
|PageTemplate|##PageTemplate|

!PageTemplate
<!--{{{-->

<!-- horizontal MainMenu -->
<div id='topMenu' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<span refresh='content' tiddler='SiteTitle' style="padding-left:1em;font-weight:bold;"></span>:
<span refresh='content' tiddler='MainMenu'></span>
</div>
<div id='sidebar'>
	<div id='sidebarOptions'>
		<div refresh='content' tiddler='SideBarOptions'></div>
		<div style="margin-left:0.1em;"
			macro='slider chkTabSliderPanel SideBarTabs {{"tabs \u00bb"}} "Show Timeline, All, Tags, etc"'></div>
	</div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
</div>

For upgrading. See [[ImportTiddlers]].
URL: http://mptw.tiddlyspot.com/upgrade.html
this is a test
[img(auto,auto)[imagesWiki/fermions.png]]
<<tiddler Théories>>



<<tiddler AutoRefresh on>><<tiddler Article>>

++++![Résumé]
L'auteur y résume sa conception du naturalisme en deux grandes thèses :
* la première concerne l'existence de forces ou d'agents immatériels+++>
La première thèse du naturalisme, dit Nagel, est la primauté existentielle et causale de la matière organisée dans le déroulement des choses naturelles : tout ce qui existe et a lieu dans la Nature dépend in fine de la seule organisation de la matière1. Les événements, qualités et processus, ainsi que le comportement caractéristique de certains individus, dépendent de manière contingente de l'organisation de corps spatio-temporels dont la structure interne et les relations externes déterminent et limitent l'apparition et la disparition de tout ce qui arrive dans le monde. Cela ne veut pas dire que seuls les corps matériels soient réels, car beaucoup de choses dont nous faisons l'expérience (modes d'action, relations de signification, rêves, joies, projets, etc) ne sont ni des corps matériels ni des organisations de corps matériels. Ce que le naturalisme affirme comme étant une vérité, continue Nagel, c'est que les formes de comportement et les fonctions des systèmes matériels, bien que faisant indéniablement (indefeasibly) partie de la nature, ne sont pas eux-mêmes les agents de leur propre réalisation ni de la réalisation de quoi que ce soit d'autre. Dans la conception naturaliste des processus naturels, termine l'auteur, il n'y a pas de place pour l'opération de forces non-physiques ou l'intervention d'esprits immatériels.
===

* la seconde concerne l'existence d'une téléologie à l'œuvre derrière les événements et phénomènes naturels+++>
La seconde grande thèse du naturalisme de Nagel est que la pluralité et la variété manifeste des choses, de leurs qualités et de leurs fonctions, est un trait irréductible du cosmos, et pas une apparence illusoire derrière laquelle se cacherait une ''réalité ultime'' ou une substance méta-empirique plus homogène. Cette seconde thèse affirme également que l'ordre séquentiel avec lequel les choses arrivent, de même que les relations multiples de dépendance qu'entretiennent les choses, sont des connections contingentes, et pas les produits d'une structure fixée et cohérente (fixed and unified pattern) de relations logiques nécessaires. On peut interpréter cette thèse comme étant la négation prudente d'un dessein ou d'un plan divin pour l'univers, mais l'auteur ne fait pas directement référence à Dieu dans ce passage1. Il insiste plutôt dans son explication sur la téléologie en biologie2 et en cosmologie pour nier qu'il existe une organisation de type téléologique à l'échelle de l'univers. Il conclue en disant que, si le naturalisme est vrai, alors la variété irréductible des choses (irreducible variety) et leur contingence logique sont des traits fondamentaux du monde dans lequel nous habitons effectivement. La raison peut nous permettre de comprendre la structure des choses et leurs relations, mais pas de manière déductive à partir de prémisses a priori.
===

Nagel non seulement défend la vérité du naturalisme, mais il affirme aussi que ses deux thèses principales sont confirmées par l'expérience. Son discours donne à penser que le naturalisme n'est pas simplement une attitude philosophique, une façon de voir et de penser, ou un programme de recherche, mais plutôt une hypothèse susceptible d'être confirmée, et qui se trouve confirmée de fait : « naturalism as I construe it merely formulates what centuries of human experience have repeatedly confirmed » [Nagel, 1956 ^na (:7) #15719]. Les idées qu'il présente s'appuient, dit-il, sur des faits (compelling empirical evidence), et pas sur des préférences dogmatiques. Il est possible de concevoir le monde autrement, et le naturalisme n'exclut a priori aucune conception alternative ; cela dit, seul le naturalisme correspond au monde tel qu'il est réellement, c'est-à-dire tel que nous le donnent à connaître les sciences de la nature. On peut imaginer un monde dans lequel des forces immatérielles seraient des agents dynamiques, ou un monde dans lequel tous les événements obéiraient à une structure logique sous-jacente. Dans un tel monde possible, dit-il, ce serait une erreur d'être naturaliste1 ; mais ce monde-là n'est pas le nôtre. Le rejet des hypothèses concernant des causes ou des entités surnaturelles n'est pas un rejet de principe, il est dû au fait que ces hypothèses soit n'expliquent rien soit ne sont pas confirmées par l'expérience.
===

<<tiddler RéférenceArticle>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere>> [img[Lire l'article|IconePDF][../Nagel, Ernest - Naturalism Reconsidered - 1955.pdf]]
----
<data>{"nom":"Nagel","prénom":"Ernst","initiales":"E","titrearticle":"Naturalism Reconsidered","datepublication":"1956","journal":"Proceedings and Addresses of the American Philosophical Association","volumejournal":"28","numérojournal":"1956","pagesarticle":"5-17","isArticleRevue":true}</data>
{{floatleft{[img(120px,auto)[Ernest Nagel|./imagesWiki/ErnestNagel.jpg]]}}}
''Ernest Nagel'' (1901-1985) est un philosophe américain d'origine tchèque. Élève de [[John Dewey|Dewey, John]], sous l'influence du [[pragmatisme|Pragmatisme]] américain et de l'[[empirisme logique|PositivismeLogique]] européen, il s'intéresse à la philosophie et à la méthodologie de la science et de la logique. Selon Nagel, la tâche de la logique est d'éclairer les méthodes de la connaissance, dont les résultats doivent toujours être soumis à un contrôle empirique.

Partisan du [[naturalisme|Naturalisme]], il soutient que tous les événements, les qualités et les processus doivent être toujours rapportés à des corps situés dans l'espace et le temps. Il s'ensuit une vision déterministe du monde.

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Nagel","prénom":"Ernst","initiales":"E"}</data>
<<tiddler Notes>>

La connaissance narrative en histoire a notamment été analysée par [[Arthur Danto|Danto, Arthur]].

En biologie, [[Ernst Mayr|Mayr, Ernst]] utilise le concept de narration historique pour caractériser le type de connaissance propre à la biologie, par contraste avec la recherche de [[lois universelles|LoiNaturelle]] propre à la physique.
[img[Idée|iconesWiki/idée.ico][Notes]]Ce qui distingue les explications causale et téléologique a peut-être quelque chose à voir avec le type de narration. Dans un roman, on peut décrire de façon chronologique, c'est-à-dire au fur et à mesure que les événements arrivent, ou alors, comme dans un roman policier, on peut essayer de remonter dans le passé à partir d'un événement présent, un crime, qu'il s'agit d'expliquer.

Je crois que les [[explications téléologiques|Téléologie]] sont plutôt comme des romans policiers: on connaît la fin de l'histoire (le crime) et on cherche à comprendre ce qui s'est passé avant à la lumière de cette fin. C'est je crois la raison pour laquelle on l'utilise en biologie: pour comprendre les organismes biologiques tels qu'on les observe actuellement, il faut remonter le fil du passé en prêtant attention aux causes qui sont pertinentes //pour// ce que l'on veut expliquer. Pour pouvoir voler, les oiseaux ont développé des ailes. Cela ne veut pas dire qu'il y ait des causes futures qui ont provoqué l'apparition des ailes, ni qu'il y ait un créateur dont c'était le dessein. Cela veut dire plutôt que notre façon de raconter l'histoire des événements passés est orientée vers un futur qui n'est déterminé que dans la mesure où nous le connaissons, car c'est notre présent.
On distingue deux formes principales du naturalisme : ontologique et méthodologique.

En première approximation, le NaturalismeOntologique est une conception du monde selon laquelle qu'il n'existe rien en dehors de la Nature ; selon laquelle toute réalité est naturelle, par opposition à surnaturelle. L'extension du concept de ''Nature'' restant à préciser, bon nombre de discussions portent sur ce que l'on doit ou non y inclure1.

Le NaturalismeMéthodologique, en première approximation, est la doctrine selon laquelle tout est explicable par les méthodes des sciences de la nature. Le naturalisme méthodologique consacre l'autorité de la méthode scientifique, de façon générale, pour l'acquisition des connaissances. Il est lié au versant ontologique du naturalisme dans la mesure où notre conception de ce qui existe dans le monde dépend de la manière dont nous acquérons des connaissances sur le monde. Réciproquement, l'image que nous avons du monde influe sur nos modes d'investigation.
|vertical-align:bottom;<<toggleSideBar sidebar hide>>|<<tiddler NavButtons>>|vertical-align:bottom;[[Open in a new window|http://plato.stanford.edu/entries/teleology-biology/]]&nbsp;&raquo;|
http://plato.stanford.edu/entries/naturalism/ ++++
<html><div align="center"><iframe src="http://plato.stanford.edu/entries/naturalism/"0" frameborder="0" width="100%" height="600"></iframe></div></html>
===

<html><div align="center"><font size="-1"><input type="button" value="&laquo; Back" onClick="history.go(-1)" name="button" class="btn" onmouseover="this.className='btn btnhov'" onmouseout="this.className='btn'"/><a href="javascript:;" onclick="var tid=story.findContainingTiddler(this); if (tid) story.refreshTiddler(tid.getAttribute('tiddler'),null,true); return false;"><input class="btn" type="button"  onmouseover="this.className='btn btnhov'" onmouseout="this.className='btn'" value="Reload " ></a><input class="btn" type="button"  onmouseover="this.className='btn btnhov'" onmouseout="this.className='btn'" value="Forward &raquo; "onClick="history.forward()"</font></div></html>
/***

|Name|NavigationMacro|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#NavigationMacro|
|Version|0.3 |
|Requires|~TW2.08+|
!Description:
*Creates Next and Prev buttons on tiddlers, to cycle through tiddlers in order.
**you can create next and previous buttons to navigate through your journals, or the tiddlers of a tutorial.
*You can exclude certain tiddlers, or navigate through tiddlers with a specific tag only.
*The tiddlers can be sorted by modified or created.
*Custom ordering will be available after the release of TW 2.1
*Needs to be added to the ViewTemplate
*Buttons are updated dynamically and are hidden if there is no next or previous tiddler.

!Usage
{{{<<navigation>>}}}
or for more options:
{{{<<navigation sort exclude tag labelPrevious labelNext >>}}}
where sort is ''created'' (default) or ''modified''
exlcude is the tag to exclude.
tag is the tag to navigate through.
labelPrevious is the label for the previous button.
labelNext is the label for the next button. 

I recommend adding it to the ViewTemplate in the viewer div:
{{{<div class='viewer'>
<span macro='view text wikified'></span>
<span macro='navigation "" "" plugin'></span></div>}}}



!Example:
The next and previous buttons at the bottom of this tiddler will cycle through all of my extensions for TW.
!History
* 25-06-06 : version 0.3, first release

!Code
***/
//{{{
window.refreshNavLink = function (e) {
             var title = e.getAttribute("here");
             var sort = e.getAttribute("sort");
             var exclude =  e.getAttribute("exclude");
             if (e.getAttribute("tag")!=undefined) var tag = e.getAttribute("tag");
             var navtype = e.getAttribute("navtype");
              if (tag) {var tiddlers = store.getTaggedTiddlers(tag,sort);}
              else {var tiddlers = store.getTiddlers(sort,exclude);}
              for (var g=0; g<tiddlers.length; g++)
                  {if (title==tiddlers[g].title)
                       {if(navtype=="next" && !tiddlers[g+1])                             
                             e.className += " navNonExisting"
                        else if (navtype=="prev" && !tiddlers[g-1])
                             e.className += " navNonExisting"
                        else e.className = "button";}
                  }
}


config.refreshers.navLink = function(e,changeList){         
             refreshNavLink(e);
} 



config.macros.navigation={};
config.macros.navigation.handler = function(place,macroName,params,wikifier,paramString,tiddler){

          var sort = (params[0] && params[0]!=".")? params[0]: "created";
          var exclude =(params[1] && params[1]!=".")? params[1]: undefined;
          if (params[2])
                {var tag= params[2];
                 if(tiddler.tags.contains(tag)==false)
                 return false;
                }
          var labelPrev = params[3] ? params[3] : "Previous";
          var labelNext = params[4] ? params[4] : "Next";

          var next = function(e){
              if (!e) var e=window.event;
              var theTarget = resolveTarget(e);
              var navtype = theTarget.getAttribute("navtype");
              if (tag) {var tiddlers = store.getTaggedTiddlers(tag,sort);}
              else {var tiddlers = store.getTiddlers(sort,exclude);}
              for (var g=0; g<tiddlers.length; g++)
                  {if (tiddler.title==tiddlers[g].title)
                        {if (navtype == "next")
                            story.displayTiddler(theTarget,tiddlers[g+1].title)
                        else if (navtype == "prev")
                            story.displayTiddler(theTarget,tiddlers[g-1].title)}
                  }
              }

     var createNavBtn = function(text,theId,mode){
         var nextBtn = createTiddlyButton(place,text,text,next,null,theId);
         nextBtn.setAttribute("refresh","navLink");
         nextBtn.setAttribute("here",tiddler.title);
         nextBtn.setAttribute("sort",sort);
         nextBtn.setAttribute("exclude",exclude);
         nextBtn.setAttribute("navtype",mode);
         if (tag) nextBtn.setAttribute("tag",tag);
         refreshNavLink(nextBtn);
         }
    createNavBtn(labelNext+" ►","NavNext","next");
    createNavBtn("◄ "+labelPrev,"NavPrevious","prev");

}

setStylesheet(
"#NavNext {float:right;}\n"+
//"#NavPrevious {float:left;}\n"+//
".navNonExisting {display:none;}\n"+
 "",
"NavMacroStyles");
//}}}
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Version|2.0.5|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Slider.prototype.stop|
|Description|Make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content.|

++++!!!!![Configuration]>
Enable animation for slider panels
<<option chkFloatingSlidersAnimate>> allow sliders to animate when opening/closing
>(note: This setting is in //addition// to the general option for enabling/disabling animation effects:
><<option chkAnimate>> enable animations (entire document)
>For slider animation to occur, you must also allow animation in general.

Debugging messages for 'lazy sliders' deferred rendering:
<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering
<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered
===
++++!!!!![Usage]>
When installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content.  Use {{{+++}}} and {{{===}}} to delimit the slider content.  You can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created.  This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.

Additional optional syntax elements let you specify
*default to open
*cookiename
*heading level
*floater (with optional CSS width value)
*mouse auto rollover
*custom class/label/tooltip/accesskey
*automatic blockquote
*deferred rendering
The complete syntax, using all options, is:
//{{{
++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip]}}}>...
content goes here
===
//}}}
where:
* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^
marks the start and end of the slider definition, respectively.  When the extra {{{+}}} is used, the slider will be open when initially displayed.^^
* {{{(cookiename)}}}^^
saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^
* {{{!}}} through {{{!!!!!}}}^^
displays the slider label using a formatted headline (Hn) style instead of a button/link style^^
* {{{^width^}}} (or just {{{^}}})^^
makes the slider 'float' on top of other content rather than shifting that content downward.  'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.).  If omitted, the default width is "auto" (i.e., fit to content)^^
* {{{*}}}^^
automatically opens/closes slider on "rollover" as well as when clicked^^
* {{{{{class{[label=key|tooltip]}}}}}}^^
uses custom label/tooltip/accesskey.  {{{{{class{...}}}}}}, {{{=key}}} and {{{|tooltip}}} are optional.  'class' is any valid CSS class name, used to style the slider label text.  'key' must be a ''single letter only''.  Default labels/tootips are: ">" (more) and "<" (less), with no default access key assignment.^^
* {{{">"}}} //(without the quotes)//^^
automatically adds blockquote formatting to slider content^^
* {{{"..."}}} //(without the quotes)//^^
defers rendering of closed sliders until the first time they are opened.  //Note: deferred rendering may produce unexpected results in some cases.  Use with care.//^^

//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//
===
++++!!!!![Examples]>
simple in-line slider: 
{{{
+++
   content
===
}}}
+++
   content
===
----
use a custom label and tooltip: 
{{{
+++[label|tooltip]
   content
===
}}}
+++[label|tooltip]
   content
===
----
content automatically blockquoted: 
{{{
+++>
   content
===
}}}
+++>
   content
===
----
all options combined //(default open, cookie, heading, sized floater, rollover, class, label/tooltip/key, blockquoted, deferred)//
{{{
++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
}}}
++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
----
complex nesting example:
{{{
+++^[get info...=I|click for information or press Alt-I]
   put some general information here, plus a floating slider with more specific info:
   +++^10em^[view details...|click for details]
      put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===
   ===
===
}}}
+++^[get info...=I|click for information or press Alt-I]
   put some general information here, plus a floating slider with more specific info:
   +++^10em^[view details...|click for details]
      put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===
   ===
===
===
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.06.10 - 2.0.5'' add check to ensure that window.adjustSliderPanel() is defined before calling it (prevents error on shutdown when mouse event handlers are still defined)
''2007.05.31 - 2.0.4'' add handling to invoke adjustSliderPanel() for onmouseover events on slider button and panel.  This allows the panel position to be re-synced when the button position shifts due to changes in unrelated content above it on the page.  (thanks to Harsha for bug report)
''2007.03.30 - 2.0.3'' added chkFloatingSlidersAnimate (default to FALSE), so that slider animation can be disabled independent of the overall document animation setting (avoids strange rendering and focus problems in floating panels)
''2007.03.01 - 2.0.2'' for TW2.2+, hijack Morpher.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
''2007.03.01 - 2.0.1'' in hijack for Slider.prototype.stop, use apply() to pass params to core function
|please see [[NestedSlidersPluginHistory]] for additional revision details|
''2005.11.03 - 1.0.0'' initial public release
<<<
!!!!!Credits
<<<
This feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with initial research and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson.
<<<
!!!!!Code
***/
//{{{
version.extensions.nestedSliders = {major: 2, minor: 0, revision: 5, date: new Date(2007,6,10)};
//}}}

//{{{
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;
if (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;
if (config.options.chkFloatingSlidersAnimate==undefined) config.options.chkFloatingSlidersAnimate=false;

// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
	background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
//}}}

//{{{
config.formatters.push( {
	name: "nestedSliders",
	match: "\\n?\\+{3}",
	terminator: "\\s*\\={3}\\n?",
	lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\[\\>]*\\^)?)?(\\*)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(?:\\}{3})?(\\>)?(\\.\\.\\.)?\\s*",
	handler: function(w)
		{
			// defopen=lookaheadMatch[1]
			// cookiename=lookaheadMatch[2]
			// header=lookaheadMatch[3]
			// panelwidth=lookaheadMatch[4]
			// rollover=lookaheadMatch[5]
			// class=lookaheadMatch[6]
			// label=lookaheadMatch[7]
			// blockquote=lookaheadMatch[8]
			// deferred=lookaheadMatch[9]

			 lookaheadRegExp = new RegExp(this.lookahead,"mg");
			lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = lookaheadRegExp.exec(w.source)
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
			{
				// location for rendering button and panel
				var place=w.output;

				// default to closed, no cookie, no accesskey
				var show="none"; var title=">"; var tooltip="show"; var cookie=""; var key="";

				// extra "+", default to open
				if (lookaheadMatch[1])
					{ show="block"; title="<"; tooltip="hide"; }

				// cookie, use saved open/closed state
				if (lookaheadMatch[2]) {
					cookie=lookaheadMatch[2].trim().slice(1,-1);
					cookie="chkSlider"+cookie;
					if (config.options[cookie]==undefined)
						{ config.options[cookie] = (show=="block") }
					if (config.options[cookie])
						{ show="block"; title="<"; tooltip="hide"; }
					else
						{ show="none"; title=">"; tooltip="show"; }
				}

				// parse custom label/tooltip/accesskey: [label=X|tooltip]
				if (lookaheadMatch[7]) {
					title = lookaheadMatch[7].trim().slice(1,-1);
					var pos=title.indexOf("|");
					if (pos!=-1) { tooltip = title.substr(pos+1,title.length); title=title.substr(0,pos); }
					if (title.substr(title.length-2,1)=="=") { key=title.substr(title.length-1,1); title=title.slice(0,-2); }
					if (pos==-1) tooltip += " "+title; // default tooltip: "show/hide <title>"
				}

				// create the button
				if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link
					var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;
					var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,lookaheadMatch[6],title);
					btn.onclick=onClickNestedSlider;
					btn.setAttribute("href","javascript:;");
					btn.setAttribute("title",tooltip);
				}
				else
					var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,lookaheadMatch[6]);

				// set extra button attributes
				btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
				btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)
				btn.keyparam=key; // save the access key letter ("" if none)
				if (key.length) {
					btn.setAttribute("accessKey",key); // init access key
					btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
				}

				// "non-click" MouseOver opens/closes slider
				if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;
				// otherwise, mouseover aligns floater position with button
				else btn.onmouseover=function(event)
					{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel,this.sliderPanel.className); }

				// create slider panel
				var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";
				var panel=createTiddlyElement(place,"div",null,panelClass,null);
				panel.button = btn; // so the slider panel know which button it belongs to
				panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):""; // save requested panel size
				btn.sliderPanel=panel;
				panel.style.display = show;
				panel.style.width=panel.defaultPanelWidth;
				panel.onmouseover=function(event) // mouseover aligns floater position with button
					{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this,this.className); }

				// render slider (or defer until shown) 
				w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
				if ((show=="block")||!lookaheadMatch[9]) {
					// render now if panel is supposed to be shown or NOT deferred rendering
					w.subWikify(lookaheadMatch[8]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
					// align floater position with button
					if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel,panelClass);
				}
				else {
					var src = w.source.substr(w.nextMatch);
					var endpos=findMatchingDelimiter(src,"+++","===");
					panel.setAttribute("raw",src.substr(0,endpos));
					panel.setAttribute("blockquote",lookaheadMatch[8]?"true":"false");
					panel.setAttribute("rendered","false");
					w.nextMatch += endpos+3;
					if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
					if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\n\n"+panel.getAttribute("raw"));
				}
			}
		}
	}
)

// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)
function findMatchingDelimiter(src,starttext,endtext) {
	var startpos = 0;
	var endpos = src.indexOf(endtext);
	// check for nested delimiters
	while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
		// count number of nested 'starts'
		var startcount=0;
		var temp = src.substring(startpos,endpos-1);
		var pos=temp.indexOf(starttext);
		while (pos!=-1)  { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
		// set up to check for additional 'starts' after adjusting endpos
		startpos=endpos+endtext.length;
		// find endpos for corresponding number of matching 'ends'
		while (startcount && endpos!=-1) {
			endpos = src.indexOf(endtext,endpos+endtext.length);
			startcount--;
		}
	}
	return (endpos==-1)?src.length:endpos;
}
//}}}

//{{{
window.onClickNestedSlider=function(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	var theLabel = theTarget.firstChild.data;
	var theSlider = theTarget.sliderPanel
	var isOpen = theSlider.style.display!="none";
	// if using default button labels, toggle labels
	if (theLabel==">") theTarget.firstChild.data = "<";
	else if (theLabel=="<") theTarget.firstChild.data = ">";
	// if using default tooltips, toggle tooltips
	if (theTarget.getAttribute("title")=="show")
		theTarget.setAttribute("title","hide");
	else if (theTarget.getAttribute("title")=="hide")
		theTarget.setAttribute("title","show");
	if (theTarget.getAttribute("title")=="show "+theLabel)
		theTarget.setAttribute("title","hide "+theLabel);
	else if (theTarget.getAttribute("title")=="hide "+theLabel)
		theTarget.setAttribute("title","show "+theLabel);
	// deferred rendering (if needed)
	if (theSlider.getAttribute("rendered")=="false") {
		if (config.options.chkDebugLazySliderRender)
			alert("rendering '"+theLabel+"':\n\n"+theSlider.getAttribute("raw"));
		var place=theSlider;
		if (theSlider.getAttribute("blockquote")=="true")
			place=createTiddlyElement(place,"blockquote");
		wikify(theSlider.getAttribute("raw"),place);
		theSlider.setAttribute("rendered","true");
	}
	// show/hide the slider
	if(config.options.chkAnimate && (theSlider.className!='floatingPanel' || config.options.chkFloatingSlidersAnimate))
		anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
	else
		theSlider.style.display = isOpen ? "none" : "block";
	// reset to default width (might have been changed via plugin code)
	theSlider.style.width=theSlider.defaultPanelWidth;
	// align floater panel position with target button
	if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);
	// if showing panel, set focus to first 'focus-able' element in panel
	if (theSlider.style.display!="none") {
		var ctrls=theSlider.getElementsByTagName("*");
		for (var c=0; c<ctrls.length; c++) {
			var t=ctrls[c].tagName.toLowerCase();
			if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
				{ ctrls[c].focus(); break; }
		}
	}
	if (this.sliderCookie && this.sliderCookie.length) {
		config.options[this.sliderCookie]=!isOpen;
		if (config.options[this.sliderCookie]!=this.defOpen)
			saveOptionCookie(this.sliderCookie);
		else { // remove cookie if slider is in default display state
			var ex=new Date(); ex.setTime(ex.getTime()-1000);
			document.cookie = this.sliderCookie+"=novalue; path=/; expires="+ex.toGMTString();
		}
	}
	return false;
}

// TW2.1 and earlier:
// hijack Slider animation handler 'stop' handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
	{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }

// TW2.2+
// hijack Morpher animation handler 'stop' handler so overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
	Morpher.prototype.coreStop = Morpher.prototype.stop;
	Morpher.prototype.stop = function()
		{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }
}

// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {
	if (panelClass=="floatingPanel") {
		var left=0;
		var top=btn.offsetHeight; 
		if (place.style.position!="relative") {
			var left=findPosX(btn);
			var top=findPosY(btn)+btn.offsetHeight;
			var p=place; while (p && p.className!='floatingPanel') p=p.parentNode;
			if (p) { left-=findPosX(p); top-=findPosY(p); }
		}
		if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-15;
		panel.style.left=left+"px"; panel.style.top=top+"px";
	}
}

function getWindowWidth() {
	if(document.width!=undefined)
		return document.width; // moz (FF)
	if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
		return document.documentElement.clientWidth; // IE6
	if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )
		return document.body.clientWidth; // IE4
	if(window.innerWidth!=undefined)
		return window.innerWidth; // IE - general
	return 0; // unknown
}
//}}}
<<tiddler HideTiddlerTags>><html><div align="center"><iframe src="http://www.zotero.org/alberto_molina/11594/items/10347" frameborder="0" width="100%" height="600"></iframe></div></html>
/***
!Usage
//{{{
<<newArticleHere>>
//}}}

!Code
***/

//{{{
config.macros.newArticleHere = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
	var nomauteur = store.getTiddler(tiddler.title).data('nom');
	var prénomauteur = store.getTiddler(tiddler.title).data('prénom');
	var initialesauteur = store.getTiddler(tiddler.title).data('initiales');
	var datepublication = store.getTiddler(tiddler.title).data('datepublication');
	var titrearticle = store.getTiddler(tiddler.title).data('titrearticle');
	var guion = store.getTiddlerText('GuiOn')
	var titre = nomauteur+", "+initialesauteur+" ("+datepublication+"): "+guion+titrearticle+guion;
	wikify("<<newTiddler "+paramString+" label:'nouvel article' title:'"+titre+"' text:{{store.getTiddlerText('ModèleArticles')+store.getTiddlerText('DataOpen')+DataTiddler.getDataText('"+tiddler.title+"')+store.getTiddlerText('DataClose')}} tag:[["+tiddler.title+"]] Articles>>",place,null,tiddler);
		}
	};

//}}}
/***
!Usage
//{{{
<<newAuthorHere>>
//}}}

!Code
***/

//{{{
config.macros.newAuthorHere = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
	var nomauteur = store.getTiddler('NouvelAuteur').data('nom');
 	var prénomauteur = store.getTiddler('NouvelAuteur').data('prénom');
 	var initialesauteur = store.getTiddler('NouvelAuteur').data('initiales');
 	var guion = "store.getTiddlerText('GuiOn')";
	var titre = nomauteur+", "+prénomauteur;
	wikify("<<newTiddler "+paramString+" label:'créer' title:'"+titre+"' text:{{store.getTiddlerText('ModèleAuteurs')+store.getTiddlerText('DataOpen')+DataTiddler.getDataText('NouvelAuteur')+store.getTiddlerText('DataClose')}} tag:Auteurs>>",place,null,tiddler);		
		}
	};
//}}}
/***
!Usage
//{{{
<<newBookHere>>
//}}}

!Code
***/

//{{{
config.macros.newBookHere = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
	var nomauteur = store.getTiddler(tiddler.title).data('nom');
 	var prénomauteur = store.getTiddler(tiddler.title).data('prénom');
 	var initialesauteur = store.getTiddler(tiddler.title).data('initiales');
	var datepublication = store.getTiddler(tiddler.title).data('datepublication');
	var titrelivre = store.getTiddler(tiddler.title).data('titrelivre');
	var titre = nomauteur+", "+initialesauteur+" ("+datepublication+"): "+titrelivre;
	wikify("<<newTiddler "+paramString+" label:'créer' title:'"+titre+"'	text:{{store.getTiddlerText('ModèleLivres')+store.getTiddlerText('DataOpen')+DataTiddler.getDataText('"+tiddler.title+"')+store.getTiddlerText('DataClose')}} tag:[["+tiddler.title+"]] Livres>>",place,null,tiddler);		
		}
	};
//}}}
/***
!Usage
//{{{
<<newChapterHere>>
//}}}
<<newChapterHere>>
!Code
***/

//{{{
config.macros.newChapterHere = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var nomauteur = store.getTiddler(tiddler.title).data('nom');
 		var prénomauteur = store.getTiddler(tiddler.title).data('prénom');
 		var initialesauteur = store.getTiddler(tiddler.title).data('initiales');
 		var titrelivre = store.getTiddler(tiddler.title).data('titrelivre');
 		var datepublication = store.getTiddler(tiddler.title).data('datepublication');
		var numérochapitre = store.getTiddler(tiddler.title).data('numérochapitre');
		var titrechapitre = store.getTiddler(tiddler.title).data('titrechapitre');
 		var titre = nomauteur+", "+initialesauteur+" ("+datepublication+") - ch."+numérochapitre;
		var titretag = nomauteur+", "+initialesauteur+" ("+datepublication+") - chapitres";
		var texte = "'!!"+numérochapitre+". "+titrechapitre+"[[→|"+titre+"]] '";
	wikify("<<newTiddler "+paramString+" label:'nouveau chapitre' title:'"+titre+"' text:{{store.getTiddlerText('ModèleChapitres')+"+texte+"+store.getTiddlerText('DataOpen')+DataTiddler.getDataText('"+tiddler.title+"')+store.getTiddlerText('DataClose')}} tag:[["+titretag+"]] Chapitres>>",place,null,tiddler);		
		}
	};

//}}}
/***
!Usage
//{{{
<<newCitationHere>>
//}}}

!Code
***/

//{{{
config.macros.newCitationHere = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var nomauteur = store.getTiddler(tiddler.title).data('nom');
 		var initialesauteur = store.getTiddler(tiddler.title).data('initiales');
 		var datepublication = store.getTiddler(tiddler.title).data('datepublication');
 		var pagescitation = store.getTiddler(tiddler.title).data('pagescitation');
		var motscléscitation = store.getTiddler(tiddler.title).data('motscléscitation');
		var guion = store.getTiddlerText('GuiOn');
 		var titre = nomauteur+", "+initialesauteur+" "+datepublication+":"+pagescitation;
		var texte = "'!"+motscléscitation+"  <part "+motscléscitation+"> "+guion+"texte de la citation"+guion+" ([["+titre+"]]) </part>'";
	wikify("<<newTiddler "+paramString+" label:'créer' title:'"+titre+"' text:{{store.getTiddlerText('ModèleCitations')+"+texte+"+store.getTiddlerText('DataOpen')+DataTiddler.getDataText('"+tiddler.title+"')+store.getTiddlerText('DataClose')}} tag:[["+nomauteur+", "+initialesauteur+" ("+datepublication+") - citations]] Citations>>",place,null,tiddler);		
		}
	};

//}}}
/***
|Name:|NewHerePlugin|
|Description:|Creates the new here and new journal macros|
|Version:|3.0 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.macros, {
	newHere: {
		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
		}
	},
	newJournalHere: {
		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
		}
	}
});

//}}}

/***
|Name:|NewMeansNewPlugin|
|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1 ($Rev: 2263 $)|
|Date:|$Date: 2007-06-13 04:22:32 +1000 (Wed, 13 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/empty.html#NewMeansNewPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Note: I think this should be in the core
***/
//{{{

String.prototype.getNextFreeName = function() {
       var numberRegExp = / \(([0-9]+)\)$/;
       var match = numberRegExp.exec(this);
       if (match) {
               var num = parseInt(match[1]) + 1;
               return this.replace(numberRegExp," ("+num+")");
       }
       else {
               return this + " (1)";
       }
}

config.macros.newTiddler.checkForUnsaved = function(newName) {
	var r = false;
	story.forEachTiddler(function(title,element) {
		if (title == newName)
			r = true;
	});
	return r;
}

config.macros.newTiddler.getName = function(newName) {
       while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
               newName = newName.getNextFreeName();
       return newName;
}


config.macros.newTiddler.onClickNewTiddler = function()
{
	var title = this.getAttribute("newTitle");
	if(this.getAttribute("isJournal") == "true") {
		var now = new Date();
		title = now.formatString(title.trim());
	}

	title = config.macros.newTiddler.getName(title); // <--- only changed bit

	var params = this.getAttribute("params");
	var tags = params ? params.split("|") : [];
	var focus = this.getAttribute("newFocus");
	var template = this.getAttribute("newTemplate");
	var customFields = this.getAttribute("customFields");
	story.displayTiddler(null,title,template,false,null,null);
	var tiddlerElem = document.getElementById(story.idPrefix + title);
	if(customFields)
		story.addCustomFields(tiddlerElem,customFields);
	var text = this.getAttribute("newText");
	if(typeof text == "string")
		story.getTiddlerField(title,"text").value = text.format([title]);
	for(var t=0;t<tags.length;t++)
		story.setTiddlerTag(title,tags[t],+1);
	story.focusTiddler(title,focus);
	return false;
};

//}}}

/***
!Usage
//{{{
<<newNoteHere>>
//}}}
<<newNoteHere>>

!Code
***/

//{{{
config.macros.newNoteHere = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
	wikify("<<newTiddler "+paramString+" label:'note' title:'"+tiddler.title+" - note' text:{{store.getTiddlerText('DataOpen')+DataTiddler.getDataText('"+tiddler.title+"')+store.getTiddlerText('DataClose')}} tag:Notes [["+tiddler.title+"]]>>",place,null,tiddler);		
		}
	};

//}}}
/***
| Name:|NewSavedTiddlerPlugin|
| Description:||
| Version:|1.0
| Date:|$Date: 2008-08-26 10:06:22 $|
| Source:||
| Author:||

***/
//{{{
config.macros.newSavedTiddler={};
config.macros.newSavedTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	if(readOnly){
		return false;
	}
	var p = paramString.parseParams("anon",null,true,false,false);
	var label = getParam(p,"label","NewSavedTiddler");
	var tooltip = getParam(p,"tooltip","Create a new saved tiddler");
	var btn = createTiddlyButton(place,label,tooltip,this.onClick);
	btn.params = paramString;
	return false;
};

config.macros.newSavedTiddler.onClick = function(e){
	var p = this.params.parseParams("anon",null,true,false,false);
	var title = prompt("Enter the title for the new tiddler:","");
	while (title && store.getTiddler(title)) {
		title = prompt("A tiddler named '"+title+"' already exists.\n\n"+"Please specify a different title.", title);
	}
	if(title){
		var text = getParam(p,"text","");
		var tags = getParam(p,"tags","");
		var fields = getParam(p,"fields","").decodeHashMap();
		store.saveTiddler(title,title,text,config.options.txtUserName,new Date(),tags,fields);
		story.displayTiddler(this,title);
		return false;
	}
};
//}}}


''The newTiddlerWithForm Macro''

To create tiddlers that are referencing [[FormTemplate]]s you may use the {{{<<newTiddlerWithForm...>>}}} macro. 

The {{{<<newTiddlerWithForm...>>}}} macro displays a button. When pressed the button creates the requested tiddler and displays it. 

If no title is given in the macro (or a tiddler with the given name already exists) the user can enter the tiddlers name in a dialog.

''Syntax:'' 
|>|{{{<<}}}''newTiddlerWithForm'' //formTemplateName// //buttonLabel// [//titleExpression// [''askUser'']] {{{>>}}}|
|//formTemplateName//|The name of the tiddler that defines the form the new tiddler should use.|
|//buttonLabel//|The label of the button|
|//titleExpression//|A (quoted) JavaScript String expression that defines the title (/name) of the new tiddler.|
|''askUser''|Typically the user is not asked for the title when a title is specified (and not yet used). When ''askUser'' is given the user will be asked in any case. This may be used when the calculated title is just a suggestion that must be confirmed by the user|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

''Examples''
* Ask the user for a bug report name and create a bugreport.
{{{
<<newTiddlerWithForm BugReportTemplate "New Bugreport">>
}}}
<<newTiddlerWithForm BugReportTemplate "New Bugreport">>

* Create a blog entry tiddler. Let the user confirm the automatically generated title (that contains the current date) or change it.
{{{
<<newTiddlerWithForm 
 BlogTemplate 
 "New Blog" 
 '"Blog: "+(new Date()).formatString("YYYY-MM-DD")' askUser
>>
}}}
<<newTiddlerWithForm 
 BlogTemplate 
 "New Blog" 
 '"Blog: "+(new Date()).formatString("YYYY-MM-DD")' askUser
>>

+++!![Notes]
<<forEachTiddler where 'tiddler.tags.contains(context.inTiddler.title) && tiddler.tags.contains("Notes")'>>
===
<<tiddler Note>>Guillaume Le Blanc, dans //Canguilhem et les Normes// (PUF, 1998), analyse le concept de [[Normativité]] de [[Canguilhem, Georges]] d'une manière qui me fait penser au concept de cognition de [[Varela, Francisco]], repris par [[Bitbol, Michel]] et Luisi comme la caractéristique principale du vivant avec l'[[Autopoïèse]].

Il dit en effet que les comportements des organismes "ne sont pas des réponses automatiques à un //stimulus// externe mais des manières singulières de se rapporter à un milieu extérieur. Tout vivant explore à sa manière le milieu extérieur. Chaque vivant manifeste alors une activité propre. Cette activité est double. Elle est, d'une part, reproductrice: elle vise à maintenir l'organisme dans sa puissance intrinsèque. Elle est, d'autre part, productrice ou encore créatrice: elle permet à l'organisme d'inventer des réponses inédites dès qu'il est menacé. C'est cette activité première de l'organisme que Canguilhem désigne sous le nom de normativité." (p.53)

Un peu plus loin il ajoute: "Le vivant animal ne subit pas le milieu. Il contribue à le constituer." (p.53)

Etc.
{{floatleft{[img[iconesWiki/notes.ico][Notes]]}}}
[img[Notes|iconesWiki/notes.ico][Notes]]<<tiddler AutoRefresh>>
<html>
 <sub><b>Numéro:</b></sub><br/>
 <input name=numérochapitre type=text /><br/>
 <sub><b>Titre:</b></sub><br/>
 <input name=titrechapitre type=text /><br/>
 <br/>
 <input name=btnReset type=reset />
</html>

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var numérochapitre=DataTiddler.getData(titre,"numérochapitre")
   var titrechapitre=DataTiddler.getData(titre,"titrechapitre")
   return nom+", "+initiales+" "+datepublication+" - ch."+numérochapitre+"\n"+titrechapitre;
</script>
+++(infosLivre)[infos »]<<tiddler [[NouveauLivreModèle/données]]>> === <part données hidden> <html>
<br/>
 <input name=isLivre type=checkbox />Livre<br/>
 <input name=isEditedBook type=checkbox />Livre édité<br/>
 <sub><b>Titre:</b></sub><br/>
 <input name=titrelivre type=text /><br/>
 <sub><b>Date de première publication:</b></sub><br/>
 <input name=datepublication type=text /><br/>
 <sub><b>Ville:</b></sub><br/>
 <input name=villeédition type=text /><br/>
 <sub><b>Editeur:</b></sub><br/>
 <input name=noméditeur type=text /><br/>
 <sub><b>Date d'édition:</b></sub><br/>
 <input name=dateédition type=text /><br/>
 <br/>
 <input name=btnReset type=reset />
</html>

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var titrelivre=DataTiddler.getData(titre,"titrelivre")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   return nom+", "+initiales+" ("+datepublication+"):"+titrelivre;
</script> </part>
<data>{"nom":"Arroyo","prénom":"Cristina","initiale":"C"}</data>
<<newMachinHere>>
<<newTrucHere>>
<<newTiddler label:nouveau machin ici title:'le bon cheval' text:{{store.getTiddlerText("ModèleLivres")}} tag:Machin>>
<<newTiddler>>
[[nouvel auteur|NouvelAuteur]]
<<newJournal "DD MMM YYYY">><data>{"nom":"Henri","prénom":"IV","initiales":"H"}</data>
[img[imagesWiki/Bedau, Marc.jpg]]
[img[imagesWiki/PaulKlee_head.jpg]]
+++[infos »]<<tiddler [[NouvelArticleModèle/données]]>> === <part données hidden> <html>
 <input name=isArticleRevue type=checkbox /> Article de revue<br/>
 <input name=isArticleRecueil type=checkbox /> Article de recueil (edited book)<br/>
 <sub><b>Titre:</b></sub><br/>
 <input name=titrearticle type=text /><br/>
 <sub><b>Date de publication:</b></sub><br/>
 <input name=datepublication type=text /><br/>
 <sub><b>Journal:</b></sub><br/>
 <input name=journal type=text /><br/>
 <sub><b>Volume:</b></sub><br/>
 <input name=volumejournal type=text /><br/>
 <sub><b>Numéro:</b></sub><br/>
 <input name=numérojournal type=text /><br/>
 <sub><b>Pages:</b></sub><br/>
 <input name=pagesarticle type=text /><br/>
 <br/>
 <input name=btnReset type=reset />
</html>

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var titrearticle=DataTiddler.getData(titre,"titrearticle")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   return nom+", "+initiales+" ("+datepublication+"): '"+titrearticle+"'";
</script>
</part>
<<formTiddler NouvelAuteurModèle>><data>{"nom":"Kitcher","prénom":"Philip","initiales":"P"}</data>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData("NouvelAuteur","nom")
   var prénom=DataTiddler.getData("NouvelAuteur","prénom")
   var initiales=DataTiddler.getData("NouvelAuteur","initiales")
   return "''Nom:'' "+nom+", ''Prénom:'' "+prénom+", ''Initiales:'' "+initiales;
</script>
<<RefreshTiddler "Rafraîchir les données">><<newAuthorHere>>
+++(infosAuteur)[infos »]
<html>
 <sub><b>Nom:</b></sub><br/>
 <input name=nom type=text /><br/>
 <sub><b>Prénom:</b></sub><br/>
 <input name=prénom type=text /><br/>
 <sub><b>Initiales:</b></sub><br/>
 <input name=initiales type=text /><br/>
 <br/>
 <input name=btnReset type=reset />
</html>
===
+++[infos »][img[tooltip|IconeFiches]]
<<tiddler [[NouvelleCitationModèle/données]]>> === <part données hidden>  
<html>
 <input name=isLivre type=checkbox /> Livre<br/>
 <input name=isEditedBook type=checkbox /> Livre édité (edited book)<br/>
 <input name=isArticleRevue type=checkbox /> Article de revue<br/>
 <input name=isArticleRecueil type=checkbox /> Article de recueil (edited book)<br/>
 <sub><b>Pages:</b></sub><br/>
 <input name=pagescitation type=text /><br/>
 <sub><b>Mots-clés:</b></sub><br/>
 <input name=motscléscitation type=text /><br/>
 <br/>
 <input name=btnReset type=reset />
</html>

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var pagescitation=DataTiddler.getData(titre,"pagescitation")
   var motscléscitation=DataTiddler.getData(titre,"motscléscitation")
   return nom+", "+initiales+" "+datepublication+":"+pagescitation+"\n''"+motscléscitation+"''";
</script>
</part>
<<tagCloud AttachFilePackage attachment documentation excludeLists excludeMissing excludeSearch formTemplate FormTiddlerProject Icones includeNew Macro Modèles NewHere Outils OutilsSystème Plugin sample script story system systemConfig systemConfigDisable systemPalette systemServer systemTheme Trash>>
<<tiddler Concepts>>

++++![Définition générale]
L'''objectivité'' est la qualité de ce qui est [[objectif|Objectif]], au sens philosophique du terme. Elle peut caractériser:
##Un [[objet|Objet]] en tant qu'objet;
##La [[connaissance|Connaissance]] ou la [[représentation|Représentation]] d'un objet;
##Le [[sujet|Sujet]] de cette connaissance ou représentation (son auteur).

!!!Sens ontologique [[→|ObjectivitéOntologique]]
<<tiddler ObjectivitéOntologique>>
!!!Sens épistémique [[→|ObjectivitéEpistémique]]
<<tiddler ObjectivitéEpistémique>>
!!!Sens moral
<<tiddler [[./sensMoral]]>>
++++!![Autres définitions]
<<tiddler [[./définitions]]>>
===
===
+++!![Domaines]
<<tiddler [[./domaines]]>>
===
+++!![Bibliographie]
* [[Bachelard, Gaston]], ''La formation de l'esprit scientifique : contribution à une psychanalyse de la connaissance'', Paris: Vrin, 2004.
* [[Castillejo, David]], ''The Formation of Modern Objectivity'', Madrid: Ediciones de Arte y Bibliofilia, 1982.
* [[Kuhn,Thomas S.]], ''The structure of scientific revolutions'', Chicago: University of Chicago Press, 1996, 3º éd.
* [[Megill, Allan]], ''Rethinkink Objectivity'', London: Duke UP, 1994.
* [[Nagel, Ernest]], ''The Structure of Science'', New York: Brace and World, 1961.
* [[Nagel, Thomas]], ''The View from Nowhere'', Oxford: Oxford UP, 1986; trad. fr. ''Le point de vue de nulle part'', Paris, Éd. de l'Éclat, 1993.
* [[Nozick, Robert]], ''Invariances: the structure of the objective world'', Cambridge: Harvard UP, 2001.
* [[Popper, Karl]], ''Objective Knowledge'', Oxford: Clarendon Pr, 1972.
* [[Nicholas Rescher]], ''Objectivity: the obligations of impersonal reason'', Notre Dame: Notre Dame Press, 1977.
* [[Rorty, Richard]], ''Objectivity, Relativism, and Truth'', Cambridge: Cambridge University Press, 1991; trad. fr. ''Objectivisme, relativisme et vérité'', Paris: PUF, 1994
* [[Rousset, Bernard]], ''La théorie kantienne de l'objectivité'', Paris: Vrin, 1967.
* [[Schaeffler, Israel]], ''Science and Subjectivity'', Hackett, 1982.
===
++++!![Voir aussi]
| [[Existence]] | [[Métaphysique]] | [[Ontologie]] | [[Philosophie des sciences|PhiloSciences]] | [[Réalité]] | [[Sciences]] |
===
<part sensMoral hidden> L'objectivité d'un sujet est liée à des considérations à la fois épistémiques et morales. Elle s'exprime généralement en termes de neutralité, impartialité, désintéressement, ou impersonnalité.+++[suite...]

<br>Il s'agit d'une prise de distance du sujet vis-à-vis de lui-même pour se rapprocher de l'objet, étant admis que l'objectivité et la subjectivité sont mutuellement exclusives. L'individu objectif est censé, au moment de porter un jugement, abandonner tout ce qui lui est propre (idées, croyances ou préférences personnelles) pour atteindre une espèce d'universalité, ce que [[Thomas Nagel|Nagel, Thomas]] a appelé le "point de vue de nulle part". Cette conception utopique (de "nulle part") a été remise en question, surtout à partir des années 60 et 70, tant pour des raisons pratiques et de principe.
===
</part>
<part domaines hidden>
+++!!![Sciences de la nature]
* [[Kant, Emmanuel]]
* [[Cassirer, Ernst]] et l'[[école de Marbourg|EcoleMarbourg]]
* Le [[Cercle de Vienne|CercleVienne]] et le [[positivisme logique|PositivismeLogique]]
* La thèse de l'[[Incommensurabilité]] des [[paradigmes|Paradigme]]
!!!!MécaniqueQuantique
* Le problème de la mesure
* L'[[objectivité "faible"|ObjectivitéFaible]] de [[d`Espagnat, Bernard]]
* Les thèses de [[Bitbol, Michel]]
!!!![[Biologie]]
===
+++!!![Sciences humaines]
!!!![[Histoire]]
!!!![[Sociologie]]
* [[Durkheim, Émile]], Les règles de la méthode sociologique.
* [[Weber, Max]]
===
</part>
<part définitions hidden>
*[[Littré, E (1872-1877): Dictionnaire de la langue française]]+++["Objectif"]
|<<tiddler [[Littré, E 1872-1877:"Objectif"/Objectif]]>>|
|<<tiddler [[Littré, E 1872-1877:"Objectif"/Objectivement]]>>|
|<<tiddler [[Littré, E 1872-1877:"Objectif"/Objectivité]]>>|
===
+++["Objet"]
|<<tiddler [[Littré, E 1872-1877:"Objectif"/Objet]]>>|
===

*[[Lalande, A (1926): Vocabulaire technique et critique de la philosophie]]+++["Objectif"]
|<<tiddler [[Lalande, A 1926:"Objectif"/Objectif]]>>|
===

*[[Vattimo, G (1981): Enciclopedia Garzanti di filosofia]]+++["Objectivité"]
|<<tiddler [[Vattimo, G 1981:"Objectivité"/Objectivité]]>>|
===
+++["Objet"]
|<<tiddler [[Vattimo, G 1981:"Objet"/Objet]]>>|
===

*[[Megill, A (1994): Rethinking Objectivity]]+++[Objectivity]
|<<tiddler [[Objectivité: quatre acceptions différentes]]>>|
===

*[[Lecourt, D (1999): Dictionnaire d`histoire et philosophie des sciences]]+++["Objectivité"]
|<<tiddler [[Lecourt, D 1999:"Objectivité"/Objectivité]]>>|
===
</part>
Selon [[Peter Mandik|http://host.uniroma3.it/progetti/kant.field/suob.html]], il y a types de théories de l'objectivité épistémique:
*Les ''théories du consensus'' définissent comme étant objectives les [[représentations|Représentation]] qui, pour être vraies, doivent faire l'objet d'un accord. [Voir Rorty (1979) et Gauker (1995) pour une discussion de la différence entre l'objectivité comme consensus et l'objectivité comme correspondance.)
*Les ''théories indexicales'' définissent comme étant objectives les [[représentations|Représentation]] qui sont dénuées d'éléments [[indexicaux|Indexicalité]]. (Pour une discussion des théories indexicales, voir Bell (1992), Lycan (1996), et McGinn (1983).)
*Les ''théories de la correspondance'' définissent comme étant objectives les [[représentations|Représentation]] qui se rapportent à des choses [[métaphysiquement objectives|ObjectivitéOntologique]] (indépendantes de l'esprit). 
Dans l'introduction de //[[Rethinking Objectivity|Megill, A (1994): Rethinking Objectivity]]//, Allan Megill distingue quatre sens du concept d'objectivité:
#Le sens ''absolu'' correspond à l’idéal réaliste d’une saisie des choses ‘telles qu’elles sont réellement’.
#Le sens ''procédural'', auquel correspond l'idéal d'une méthode strictement impersonnelle et déshumanisée: « //Its motto might well be ‘untouched by human hands’// ». L'objectivité procédurale est fidèle à la lettre de l’objectivité absolue, mais pas à son esprit, étant agnostique à l’égard de la vérité.
#Le sens ''disciplinaire'' se concentre sur l'idée que la constitution d'objets est propre à chaque discipline et repose sur le consensus au sein de chaque communauté disciplinaire.
#Le sens ''dialectique'' insiste sur le rôle crucial de la subjectivité individuelle dans la constitution d'objets (dans la co-constitution sujet/objet) et sur l'aspect participatif (actif) de la connaissance.
<data>{"nom":"Megill","prénom":"Allan","initiales":"A","isLivre":false,"isEditedBook":true,"titrelivre":"Rethinking Objectivity","datepublication":"1994","villeédition":"London","noméditeur":"Duke University Press","dateédition":"1994"}</data>
<<tiddler Note>>Le concept d'[[Objectivité]] exprime-t-il une relation particulière de la [[Connaissance]] avec la [[Réalité]], ou est-ce qu'il n'exprime pas au contraire une relation au [[Sujet]] qui est l'auteur de cette connaissance? Est-ce qu'il pointe en direction de l'objet, de la réalité, ou est-ce qu'il indique plutôt une opposition à la [[Subjectivité]]? De fait, on définit le terme de façon négative, par opposition à la subjectivité.

[[Strawson, Peter]] défend une conception de la [[Vérité]] où celle-ci n'indique pas une relation de la connaissance avec la réalité, mais une relation au sujet: "c'est vrai" signifierait ainsi "je suis d'accord". C'est une conception performative de la vérité, de même que quand je dis "je promets".

Dans la même veine, dire "ceci est objectif" signifierait simplement "ceci n'est pas subjectif", où la subjectivité peut-être conçue de différentes manières.
L'objectivité, au sens [[épistémique|Epistémologie]], caractérise la validité d'une connaissance ou d'une représentation se rapportant à un objet. (Selon [[Peter Mandik|http://host.uniroma3.it/progetti/kant.field/suob.html]], ne peuvent être épistémiquement objectifs ou subjectifs que des phénomènes intentionnels: connaissance, croyances, peurs, jugements, théories, propositions, représentations mentales, informations journalistiques, etc.) Elle dépend, d'une part, de ce que l'on entend par //objet// et, de l'autre, des règles [[normatives|Normativité]] propres au domaine considéré.+++[suite...]

<br>En [[sciences|Science]], ces règles constituent la [[méthodologie scientifique|MéthodeScientifique]], qui est propre à chaque discipline.

L'objectivité au sens [[épistémique|Epistémologie]] n'est pas synonyme de [[vérité|Vérité]], quoi que l'usage ait tendance à les confondre. Elle est davantage un "indice de confiance" ou de "qualité" des connaissances et des représentations.

L'objectivité n'est pas non plus synonyme de fidélité à l'objet, bien que ce soit l'un de ses critères les plus couramment cités. Car les critères normatifs permettant de distinguer ce qui est objectif de ce qui ne l'est pas sont déterminés, dans chaque domaine d'utilisation du concept, par la communauté des membres ou des experts de ce domaine.

Depuis [[Kant|Kant, Emmanuel]], on définit l'objectivité comme ce qui est valable universellement, c'est-à-dire pour tous les esprits, indépendamment de l'époque et du lieu, et par opposition à ce qui ne vaut que pour un seul ou pour un groupe. L'objectivité se trouve ainsi opposée au [[relativisme|Relativisme]]. À partir des années soixante, cependant, certains ont abandonné l'exigence d'une stricte universalité tout en conservant celle d'un [[consensus|Consensus]] au sein de la communauté (scientifique, culturelle,...), délimitant ainsi des sphères indépendantes d'application du concept. Loin de l'acception formelle ou méthodologique qui a marqué la période dite du PositivismeLogique, on tend aujourd'hui à privilégier une conception nettement [[intersubjective|Intersubjectivité]].

En ce qui concerne son fondement normatif, on peut dire que l'objectivité épistémique repose en dernière instance sur l'[[altérité|Altérité]] de l'objet vis-à-vis du sujet, ainsi que sur la [[rationalité|Rationalité]] des sujets. Cette rationalité et cette altérité, laquelle s'exprime par exemple en termes de résistance ou d'indépendance à l'égard de la volonté, sont peut-être à chercher du côté de l'[[action|Action]].

|<<tiddler [[Objectivité épistémique: trois théories]]>>|
===
L'objectivité, au sens [[ontologique|Ontologie]], est ce qui caractérise un objet (une propriété, un événement, etc.), par opposition à ce qui caractérise un sujet. Elle caractérise ce qui est propre à l'objet ou, plus généralement, ce qui //constitue// un objet. On entend habituellement par là ce en quoi consiste la [[réalité|Réalité]] de cet objet.+++[suite...]

<br>L'un des critères d'objectivité les plus courants est celui de l'indépendance à l'égard d'un quelconque sujet connaissant. Entendue au sens [[métaphysique|Métaphysique]] d'une réalité de l'objet, l'objectivité s'oppose soit à ce qui n'est qu'[[apparence|Phénomène]], [[illusion|Illusion]], [[fiction|Fiction]], soit à ce qui n'est que [[mental|Esprit]] ou [[spirituel|Âme]], contrairement à ce qui est [[physique|Physique]] ou [[matériel|Matière]]. Néanmoins, cette acception n'est ni nécessaire ni évidente.

Dans sa plus grande généralité, l'objectivité au sens ontologique ne repose en effet que sur la notion d'[[invariance|Invariance]]. Ce que nous considérons comme un objet réel est d'abord et avant tout un invariant. Les objets dits [[empiriques|Empirique]] ou matériels se caractérisent ainsi par la continuité spatio-temporelle, l'intermodalité (accord des différents sens: vue, toucher, odorat, etc.), et certaines autres propriétés mécaniques, chimiques ou autres que les scientifiques expriment par des lois.
===
<<tiddler Concept>>

<<tiddler Concepts>>
/***
|Name|OpenTopPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#OpenTopPlugin|
|Version|0.1|
|Requires|~TW2.x|
!!!Description:
Open new tiddlers at the top of the screen.

!!!Code
***/
//{{{
Story.prototype.coreLewcidDisplayTiddler=Story.prototype.displayTiddler ;
Story.prototype.displayTiddler =
function(srcElement,title,template,unused1,unused2,animate,slowly)
{
       var srcElement=null;
       if (document.getElementById(this.idPrefix + title))
          {story.closeTiddler(title);}
       this.coreLewcidDisplayTiddler(srcElement,title,template,unused1,unused2,animate,slowly);
       window.scrollTo(0,0);
}
//}}}
Les options de configuration de ce bloc-notes TiddlyWiki sont sauvegardées dans des cookies de votre navigateur.

Nom d'utilisateur avec lequel seront signés vos ajouts ou vos modifications dans les éléments (par exemple Jeremy_Ruston).

<<option txtUserName>>
<<option chkSaveBackups>> Backup de chaque version
<<option chkAutoSave>> Backup à chaque modification
<<option chkRegExpSearch>> Expression régulières dans les recherches
<<option chkCaseSensitiveSearch>> Respecter la casse dans les recherches
<<option chkAnimate>> Animations à l'ouverture des éléments

----
<<option chkFramedLinks>> display inline frames for all external links

<<option chkSinglePageMode>> Display one tiddler at a time
– <<option chkSinglePagePermalink>> Automatically permalink current tiddler
– <<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
– <<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)
----
Voir aussi [[Options Avancées|AdvancedOptions]]

<<tiddler Concepts>>

<<tiddler Concepts>>
L'une des significations de l'objectivité est celle d'une description fidèle, une description des choses telles qu'elles sont. Or, si par fidélité on entend exactitude (au sens de précision et de vérité), ou bien si l'on associe ces deux idées, on tombe dans des paradoxes que Borges a transcrits dans ses textes et qui montrent la vanité de cette prétention. Il s'agit notamment de paradoxes cartographiques comme les suivants:

><<tiddler [[Borges 1952: "Magias parciales del 'Quijote'"/mapaAutorreferente]]>>

><<tiddler [[Borges 1960: "Del Rigor en la Ciencia"]]>>

Cette Carte Démesurée peut bien prétendre être une description objective de la réalité du territoire, mais elle s'avère, de par les dimensions que sa précision requiert, impraticable et inutile.

Le caractère impraticable de la carte de Borges dépend de limitations techniques qu'aujourd'hui nous sommes en mesure de surmonter. Il suffit de penser à un GoogleEarth - voire à un GoogleUniverse - où la puissance de calcul rendrait possible la manipulation d'images indéfiniment précises. Poussée à son comble, l'idée d'un GoogleUniverse se confondrait d'une certaine manière avec celle du [[démon de Laplace|DémonLaplace]], à ceci près que la carte est statique, bien qu'elle permette de voyager virtuellement dans l'espace, tandis que la représentation du démon de Laplace est dynamique et permet de voyager dans le temps. Cette idée rejoint également celle de la modélisation scientifique, dont l'aboutissement serait une sorte de DémonLaplace. Mais la modélisation rend possible une expérimentation virtuelle, à la fois réelle et fictive ("Que se passerait-il si...?"), qui est un voyage dans le territoire du possible.

L'inutilité de la carte de Borges apparaît dès lors qu'on se pose la question de sa fonction, de son utilité. Car une carte qui serait la représentation exacte d'un territoire serait redondante avec celui-ci et n'apporterait rien qui n'y soit pas déjà. La connaissance n'est pas un reflet du monde dans le miroir du langage. Une carte peut avoir de nombreux usages, et en suivant l'usage qu'on veut en faire, il existe différents types de cartes. Celles-ci ne représentent que ce qui est //pertinent// pour l'usage qu'on veut en faire: une carte militaire ne représentera pas les mêmes choses qu'une carte géologique ou une carte botanique. C'est-à-dire que chaque carte, pour montrer ce qui mérite d'être vu, ce qui est jugé important, doit cacher le reste. Elle est donc infidèle à la réalité qu'elle représente dans la mesure où elle en montre une partie et en cache le reste selon un critère qui est directement relatif aux intérêts humains. Dira-t-on pour autant qu'une représentation cartographique est subjective?

Il est assez évident que toute connaissance scientifique procède par abstraction de l'objet qu'elle étudie. Sans cette abstraction, noyé dans une infinité de détails, le scientifique serait incapable de tirer la moindre conclusion. Il serait comme [[Funes el memorioso|Borges 1944: "Funes el memorioso"]] pour qui le chien de profil de 14h01 n'est pas le même que le chien de trois-quarts de 14h02. Abstraire ne veut pas forcément dire perdre de l'information, car il est possible de trouver des structures et des redondances dans cette information permettant de la formuler de manière plus concise ; c'est le principe des algorithmes. Mais ce procédé n'est sans doute pas suffisant, raison pour laquelle il est inévitable de perdre une partie de l'information pour gagner en intelligibilité.

Ce que montre le texte de Borges, ce sont les limites de la connaissance entendue comme une représentation de la réalité. Pour ma part, je crois qu'il est plus intéressant de la considérer non pas comme une représentation, mais comme une interprétation. Interpréter c'est donner un ordre, donner une cohérence, quitte à éliminer une partie de l'information originale, et quitte à ajouter des choses. Interpréter, en ce sens, c'est donner du sens. On peut essayer de donner une formulation plus précise de cette idée, et surtout de lui imposer des limites, à partir de la théorie algorithmique de l'information.

----

[[William James|James, William]] (1907) utilise lui aussi l'image de la carte pour illustrer son concept de vérité: Quelqu'un se trouve perdu en forêt avec en sa possession plusieurs cartes de la même région. Laquelle de ces cartes est plus vraie? Pour un pragmatiste, la carte qui est vraie pour une personne perdue en forêt est celle qui lui permet d'en sortir. "[L]a idea correcta es aquella que nos conduce al camino de vuelta, la que nos conduce a la conclusión deseada, la que trae el estado de cosas pretendido."

On peut également penser à [[Descartes, René]], dans le //Discours de la méthode// je crois, où lui aussi évoque une personne perdue en forêt. (Peut-être que James s'en est inspiré.)
!!!<<gradient horiz #fc3 #ffffff>>&nbsp;PartPlugin^^<<tiddler CloseThisOpen with: FormattingTiddlers  '« back'>>|<<toolbar editTiddler>>» ^^>>
*There is a most useful plugin from http://tiddlywiki.abego-software.de/#PartTiddlerPlugin
|padding:5px;vertical-align: middle; Example using <part>... </part> |<<tiddler ./Name>>|
!!!<<gradient horiz #abf  #ffffff>>&nbsp;To use 'within' a tiddler Do This>>
''1: Surround some text in a tiddler like this:''
{{{
<part partName hidden> tiddler content </part>
}}}
''2: Then where you want the content to be displayed do this:''
{{{
<<tiddler [[./partName]]>>
}}}
''Example: For the above table...''

''In this tiddler there exists this: (As it says it is hidden from normal view until it is put into the table.)''
{{{
<part partName hidden>
*This plugin allows many things in a table you could not do otherwise like these bullet points.
*This plugin can be used within a tiddler itself or to take sections of content from one tiddler to display in another
*It allows you to make multiple columns in a tiddler using tables.
*It allows you to use certain sections of tiddlers in several places without rewriting them; also editing one edits them all.
</part>
}}}

''The table is constructed so...''
!!!Code
{{{
|padding:5px; This is a most useful plugin|<<tiddler [[./partName]]>>|
}}}
!!!Example
|padding:5px;vertical-align: middle; ''Example using <part>... </part>'' |<<tiddler ./Name>>|
!!!<<gradient horiz #aaaaaa #bbbbbb #cccccc #eeeeee #ffffff>>&nbsp;To use 'between' separate tiddlers Do This:>>
''1: Surround some text in a tiddler (TiddlerName) like this:''
{{{
<part partName> tiddler content </part>
}}}
''2: Then in the tiddler where you want the content to be displayed do this:''
{{{
<<tiddler TiddlerName/partName>>
}}}
''Here is this demonstrated by an excerpt from the Glossary''
<<<
{{{<<tiddler Glossary/permaview>>}}}
<<tiddler Glossary/permaview>>
<<<
<part Name hidden>
*This plugin allows many things in a table you could not do otherwise like these bullet points.
*This plugin can be used within a tiddler itself or to take sections of content from one tiddler to display in another
*It allows you to make multiple columns in a tiddler using tables.
*It allows you to use certain sections of tiddlers in several places without rewriting them; also editing one edits them all.
</part>

/***
|<html><a name="Top"/></html>''Name:''|PartTiddlerPlugin|
|''Version:''|1.0.7 (2007-03-07)|
|''Source:''|http://tiddlywiki.abego-software.de/#PartTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.3|
|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
!Table of Content<html><a name="TOC"/></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Description',null, event)">Description, Syntax</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Applications',null, event)">Applications</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('LongTiddler',null, event)">Refering to Paragraphs of a Longer Tiddler</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Citation',null, event)">Citation Index</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('TableCells',null, event)">Creating "multi-line" Table Cells</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Tabs',null, event)">Creating Tabs</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Sliders',null, event)">Using Sliders</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Revisions',null, event)">Revision History</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Code',null, event)">Code</a></html>
!Description<html><a name="Description"/></html>
With the {{{<part aPartName> ... </part>}}} feature you can structure your tiddler text into separate (named) parts. 
Each part can be referenced as a "normal" tiddler, using the "//tiddlerName//''/''//partName//" syntax (e.g. "About/Features"). E.g. you may create links to the parts, use it in {{{<<tiddler...>>}}} or {{{<<tabs...>>}}} macros etc.

''Syntax:'' 
|>|''<part'' //partName// [''hidden''] ''>'' //any tiddler content// ''</part>''|
|//partName//|The name of the part. You may reference a part tiddler with the combined tiddler name "//nameOfContainerTidder//''/''//partName//.|
|''hidden''|When defined the content of the part is not displayed in the container tiddler. But when the part is explicitly referenced (e.g. in a {{{<<tiddler...>>}}} macro or in a link) the part's content is displayed.|
|<html><i>any&nbsp;tiddler&nbsp;content</i></html>|<html>The content of the part.<br>A part can have any content that a "normal" tiddler may have, e.g. you may use all the formattings and macros defined.</html>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Applications<html><a name="Applications"/></html>
!!Refering to Paragraphs of a Longer Tiddler<html><a name="LongTiddler"/></html>
Assume you have written a long description in a tiddler and now you want to refer to the content of a certain paragraph in that tiddler (e.g. some definition.) Just wrap the text with a ''part'' block, give it a nice name, create a "pretty link" (like {{{[[Discussion Groups|Introduction/DiscussionGroups]]}}}) and you are done.

Notice this complements the approach to first writing a lot of small tiddlers and combine these tiddlers to one larger tiddler in a second step (e.g. using the {{{<<tiddler...>>}}} macro). Using the ''part'' feature you can first write a "classic" (longer) text that can be read "from top to bottom" and later "reuse" parts of this text for some more "non-linear" reading.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Citation Index<html><a name="Citation"/></html>
Create a tiddler "Citations" that contains your "citations". 
Wrap every citation with a part and a proper name. 

''Example''
{{{
<part BAX98>Baxter, Ira D. et al: //Clone Detection Using Abstract Syntax Trees.// 
in //Proc. ICSM//, 1998.</part>

<part BEL02>Bellon, Stefan: //Vergleich von Techniken zur Erkennung duplizierten Quellcodes.// 
Thesis, Uni Stuttgart, 2002.</part>

<part DUC99>Ducasse, Stéfane et al: //A Language Independent Approach for Detecting Duplicated Code.// 
in //Proc. ICSM//, 1999.</part>
}}}

You may now "cite" them just by using a pretty link like {{{[[Citations/BAX98]]}}} or even more pretty, like this {{{[[BAX98|Citations/BAX98]]}}}.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Creating "multi-line" Table Cells<html><a name="TableCells"/></html>
You may have noticed that it is hard to create table cells with "multi-line" content. E.g. if you want to create a bullet list inside a table cell you cannot just write the bullet list
{{{
* Item 1
* Item 2
* Item 3
}}}
into a table cell (i.e. between the | ... | bars) because every bullet item must start in a new line but all cells of a table row must be in one line.

Using the ''part'' feature this problem can be solved. Just create a hidden part that contains the cells content and use a {{{<<tiddler >>}}} macro to include its content in the table's cell.

''Example''
{{{
|!Subject|!Items|
|subject1|<<tiddler ./Cell1>>|
|subject2|<<tiddler ./Cell2>>|

<part Cell1 hidden>
* Item 1
* Item 2
* Item 3
</part>
...
}}}

Notice that inside the {{{<<tiddler ...>>}}} macro you may refer to the "current tiddler" using the ".".

BTW: The same approach can be used to create bullet lists with items that contain more than one line.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Creating Tabs<html><a name="Tabs"/></html>
The build-in {{{<<tabs ...>>}}} macro requires that you defined an additional tiddler for every tab it displays. When you want to have "nested" tabs you need to define a tiddler for the "main tab" and one for every tab it contains. I.e. the definition of a set of tabs that is visually displayed at one place is distributed across multiple tiddlers.

With the ''part'' feature you can put the complete definition in one tiddler, making it easier to keep an overview and maintain the tab sets.

''Example''
The standard tabs at the sidebar are defined by the following eight tiddlers:
* SideBarTabs
* TabAll
* TabMore
* TabMoreMissing
* TabMoreOrphans
* TabMoreShadowed
* TabTags
* TabTimeline

Instead of these eight tiddlers one could define the following SideBarTabs tiddler that uses the ''part'' feature:
{{{
<<tabs txtMainTab 
    Timeline Timeline SideBarTabs/Timeline 
    All 'All tiddlers' SideBarTabs/All 
    Tags 'All tags' SideBarTabs/Tags 
    More 'More lists' SideBarTabs/More>>
<part Timeline hidden><<timeline>></part>
<part All hidden><<list all>></part>
<part Tags hidden><<allTags>></part>
<part More hidden><<tabs txtMoreTab 
    Missing 'Missing tiddlers' SideBarTabs/Missing 
    Orphans 'Orphaned tiddlers' SideBarTabs/Orphans 
    Shadowed 'Shadowed tiddlers' SideBarTabs/Shadowed>></part>
<part Missing hidden><<list missing>></part>
<part Orphans hidden><<list orphans>></part>
<part Shadowed hidden><<list shadowed>></part>
}}}

Notice that you can easily "overwrite" individual parts in separate tiddlers that have the full name of the part.

E.g. if you don't like the classic timeline tab but only want to see the 100 most recent tiddlers you could create a tiddler "~SideBarTabs/Timeline" with the following content:
{{{
<<forEachTiddler 
		sortBy 'tiddler.modified' descending 
		write '(index < 100) ? "* [["+tiddler.title+"]]\n":""'>>
}}}
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Using Sliders<html><a name="Sliders"/></html>
Very similar to the build-in {{{<<tabs ...>>}}} macro (see above) the {{{<<slider ...>>}}} macro requires that you defined an additional tiddler that holds the content "to be slid". You can avoid creating this extra tiddler by using the ''part'' feature

''Example''
In a tiddler "About" we may use the slider to show some details that are documented in the tiddler's "Details" part.
{{{
...
<<slider chkAboutDetails About/Details details "Click here to see more details">>
<part Details hidden>
To give you a better overview ...
</part>
...
}}}

Notice that putting the content of the slider into the slider's tiddler also has an extra benefit: When you decide you need to edit the content of the slider you can just doubleclick the content, the tiddler opens for editing and you can directly start editing the content (in the part section). In the "old" approach you would doubleclick the tiddler, see that the slider is using tiddler X, have to look for the tiddler X and can finally open it for editing. So using the ''part'' approach results in a much short workflow.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Revision history<html><a name="Revisions"/></html>
* v1.0.7 (2007-03-07)
** Bugfix: <<tiddler "./partName">> does not always render correctly after a refresh (e.g. like it happens when using the "Include" plugin). Thanks to Morris Gray for reporting the bug.
* v1.0.6 (2006-11-07)
** Bugfix: cannot edit tiddler when UploadPlugin by Bidix is installed. Thanks to José Luis González Castro for reporting the bug.
* v1.0.5 (2006-03-02)
** Bugfix: Example with multi-line table cells does not work in IE6. Thanks to Paulo Soares for reporting the bug.
* v1.0.4 (2006-02-28)
** Bugfix: Shadow tiddlers cannot be edited (in TW 2.0.6). Thanks to Torsten Vanek for reporting the bug.
* v1.0.3 (2006-02-26)
** Adapt code to newly introduced Tiddler.prototype.isReadOnly() function (in TW 2.0.6). Thanks to Paulo Soares for reporting the problem.
* v1.0.2 (2006-02-05)
** Also allow other macros than the "tiddler" macro use the "." in the part reference (to refer to "this" tiddler)
* v1.0.1 (2006-01-27)
** Added Table of Content for plugin documentation. Thanks to RichCarrillo for suggesting.
** Bugfix: newReminder plugin does not work when PartTiddler is installed. Thanks to PauloSoares for reporting.
* v1.0.0 (2006-01-25)
** initial version
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Code<html><a name="Code"/></html>
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
***/
//{{{
//============================================================================
//                           PartTiddlerPlugin

// Ensure that the PartTiddler Plugin is only installed once.
//
if (!version.extensions.PartTiddlerPlugin) {



version.extensions.PartTiddlerPlugin = {
    major: 1, minor: 0, revision: 7,
    date: new Date(2007, 2, 7), 
    type: 'plugin',
    source: "http://tiddlywiki.abego-software.de/#PartTiddlerPlugin"
};

if (!window.abego) window.abego = {};
if (version.major < 2) alertAndThrow("PartTiddlerPlugin requires TiddlyWiki 2.0 or newer.");

//============================================================================
// Common Helpers

// Looks for the next newline, starting at the index-th char of text. 
//
// If there are only whitespaces between index and the newline 
// the index behind the newline is returned, 
// otherwise (or when no newline is found) index is returned.
//
var skipEmptyEndOfLine = function(text, index) {
	var re = /(\n|[^\s])/g;
	re.lastIndex = index;
	var result = re.exec(text);
	return (result && text.charAt(result.index) == '\n') 
			? result.index+1
			: index;
}


//============================================================================
// Constants

var partEndOrStartTagRE = /(<\/part>)|(<part(?:\s+)((?:[^>])+)>)/mg;
var partEndTagREString = "<\\/part>";
var partEndTagString = "</part>";

//============================================================================
// Plugin Specific Helpers

// Parse the parameters inside a <part ...> tag and return the result.
//
// @return [may be null] {partName: ..., isHidden: ...}
//
var parseStartTagParams = function(paramText) {
	var params = paramText.readMacroParams();
	if (params.length == 0 || params[0].length == 0) return null;
	
	var name = params[0];
	var paramsIndex = 1;
	var hidden = false;
	if (paramsIndex < params.length) {
		hidden = params[paramsIndex] == "hidden";
		paramsIndex++;
	}
	
	return {
		partName: name, 
		isHidden: hidden
	};
}

// Returns the match to the next (end or start) part tag in the text, 
// starting the search at startIndex.
// 
// When no such tag is found null is returned, otherwise a "Match" is returned:
// [0]: full match
// [1]: matched "end" tag (or null when no end tag match)
// [2]: matched "start" tag (or null when no start tag match)
// [3]: content of start tag (or null if no start tag match)
//
var findNextPartEndOrStartTagMatch = function(text, startIndex) {
	var re = new RegExp(partEndOrStartTagRE);
	re.lastIndex = startIndex;
	var match = re.exec(text);
	return match;
}

//============================================================================
// Formatter

// Process the <part ...> ... </part> starting at (w.source, w.matchStart) for formatting.
//
// @return true if a complete part section (including the end tag) could be processed, false otherwise.
//
var handlePartSection = function(w) {
	var tagMatch = findNextPartEndOrStartTagMatch(w.source, w.matchStart);
	if (!tagMatch) return false;
	if (tagMatch.index != w.matchStart || !tagMatch[2]) return false;

	// Parse the start tag parameters
	var arguments = parseStartTagParams(tagMatch[3]);
	if (!arguments) return false;
	
	// Continue processing
	var startTagEndIndex = skipEmptyEndOfLine(w.source, tagMatch.index + tagMatch[0].length);
	var endMatch = findNextPartEndOrStartTagMatch(w.source, startTagEndIndex);
	if (endMatch && endMatch[1]) {
		if (!arguments.isHidden) {
			w.nextMatch = startTagEndIndex;
			w.subWikify(w.output,partEndTagREString);
		}
		w.nextMatch = skipEmptyEndOfLine(w.source, endMatch.index + endMatch[0].length);
		
		return true;
	}
	return false;
}

config.formatters.push( {
    name: "part",
    match: "<part\\s+[^>]+>",
	
	handler: function(w) {
		if (!handlePartSection(w)) {
			w.outputText(w.output,w.matchStart,w.matchStart+w.matchLength);
		}
	}
} )

//============================================================================
// Extend "fetchTiddler" functionality to also recognize "part"s of tiddlers 
// as tiddlers.

var currentParent = null; // used for the "." parent (e.g. in the "tiddler" macro)

// Return the match to the first <part ...> tag of the text that has the
// requrest partName.
//
// @return [may be null]
//
var findPartStartTagByName = function(text, partName) {
	var i = 0;
	
	while (true) {
		var tagMatch = findNextPartEndOrStartTagMatch(text, i);
		if (!tagMatch) return null;

		if (tagMatch[2]) {
			// Is start tag
	
			// Check the name
			var arguments = parseStartTagParams(tagMatch[3]);
			if (arguments && arguments.partName == partName) {
				return tagMatch;
			}
		}
		i += tagMatch[0].length;
	}
}

// Return the part "partName" of the given parentTiddler as a "readOnly" Tiddler 
// object, using fullName as the Tiddler's title. 
//
// All remaining properties of the new Tiddler (tags etc.) are inherited from 
// the parentTiddler.
// 
// @return [may be null]
//
var getPart = function(parentTiddler, partName, fullName) {
	var text = parentTiddler.text;
	var startTag = findPartStartTagByName(text, partName);
	if (!startTag) return null;
	
	var endIndexOfStartTag = skipEmptyEndOfLine(text, startTag.index+startTag[0].length);
	var indexOfEndTag = text.indexOf(partEndTagString, endIndexOfStartTag);

	if (indexOfEndTag >= 0) {
		var partTiddlerText = text.substring(endIndexOfStartTag,indexOfEndTag);
		var partTiddler = new Tiddler();
		partTiddler.set(
						fullName,
						partTiddlerText,
						parentTiddler.modifier,
						parentTiddler.modified,
						parentTiddler.tags,
						parentTiddler.created);
		partTiddler.abegoIsPartTiddler = true;
		return partTiddler;
	}
	
	return null;
}

// Hijack the store.fetchTiddler to recognize the "part" addresses.
//
var hijackFetchTiddler = function() {
	var oldFetchTiddler = store.fetchTiddler ;
	store.fetchTiddler = function(title) {
		var result = oldFetchTiddler.apply(this, arguments);
		if (!result && title) {
			var i = title.lastIndexOf('/');
			if (i > 0) {
				var parentName = title.substring(0, i);
				var partName = title.substring(i+1);
				var parent = (parentName == ".") 
						? store.resolveTiddler(currentParent)
						: oldFetchTiddler.apply(this, [parentName]);
				if (parent) {
					return getPart(parent, partName, parent.title+"/"+partName);
				}
			}
		}
		return result;	
	};
};

// for debugging the plugin is not loaded through the systemConfig mechanism but via a script tag. 
// At that point in the "store" is not yet defined. In that case hijackFetchTiddler through the restart function.
// Otherwise hijack now.
if (!store) {
	var oldRestartFunc = restart;
	window.restart = function() {
		hijackFetchTiddler();
		oldRestartFunc.apply(this,arguments);
	};
} else
	hijackFetchTiddler();




// The user must not edit a readOnly/partTiddler
//

config.commands.editTiddler.oldIsReadOnlyFunction = Tiddler.prototype.isReadOnly;

Tiddler.prototype.isReadOnly = function() {
	// Tiddler.isReadOnly was introduced with TW 2.0.6.
	// For older version we explicitly check the global readOnly flag
	if (config.commands.editTiddler.oldIsReadOnlyFunction) {
		if (config.commands.editTiddler.oldIsReadOnlyFunction.apply(this, arguments)) return true;
	} else {
		if (readOnly) return true;
	}

	return this.abegoIsPartTiddler;
}

config.commands.editTiddler.handler = function(event,src,title)
{
	var t = store.getTiddler(title);
	// Edit the tiddler if it either is not a tiddler (but a shadowTiddler)
	// or the tiddler is not readOnly
	if(!t || !t.abegoIsPartTiddler)
		{
		clearMessage();
		story.displayTiddler(null,title,DEFAULT_EDIT_TEMPLATE);
		story.focusTiddler(title,"text");
		return false;
		}
}

// To allow the "./partName" syntax in macros we need to hijack 
// the invokeMacro to define the "currentParent" while it is running.
// 
var oldInvokeMacro = window.invokeMacro;
function myInvokeMacro(place,macro,params,wikifier,tiddler) {
	var oldCurrentParent = currentParent;
	if (tiddler) currentParent = tiddler;
	try {
		oldInvokeMacro.apply(this, arguments);
	} finally {
		currentParent = oldCurrentParent;
	}
}
window.invokeMacro = myInvokeMacro;

// To correctly support the "./partName" syntax while refreshing we need to hijack 
// the config.refreshers.tiddlers to define the "currentParent" while it is running.
// 
(function() {
	var oldTiddlerRefresher= config.refreshers.tiddler;
	config.refreshers.tiddler = function(e,changeList) {
		var oldCurrentParent = currentParent;
		try {
			currentParent = e.getAttribute("tiddler");
			return oldTiddlerRefresher.apply(this,arguments);
		} finally {
			currentParent = oldCurrentParent;
		}
	};
})();

// Scroll the anchor anchorName in the viewer of the given tiddler visible.
// When no tiddler is defined use the tiddler of the target given event is used.
window.scrollAnchorVisible = function(anchorName, tiddler, evt) {
	var tiddlerElem = null;
	if (tiddler) {
		tiddlerElem = document.getElementById(story.idPrefix + tiddler);
	}
	if (!tiddlerElem && evt) {
		var target = resolveTarget(evt);
		tiddlerElem = story.findContainingTiddler(target);
	}
	if (!tiddlerElem) return;

	var children = tiddlerElem.getElementsByTagName("a");
	for (var i = 0; i < children.length; i++) {
		var child = children[i];
		var name = child.getAttribute("name");
		if (name == anchorName) {
			var y = findPosY(child);
			window.scrollTo(0,y);
			return;
		}
	}
}

} // of "install only once"
//}}}

/***
<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2006 ([[www.abego-software.de|http://www.abego-software.de]])

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
***/
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}

<<tiddler AutoRefresh on>>{{floatleft{[img(150px,auto)[Philosophie de la biologie|./imagesWiki/canard_mécanique.gif][PhiloBio]]}}}<<tagCloud =PhiloBio>>










{{floatleft{[img(250px,auto)[Philosophie|./imagesWiki/platon_aristote.gif][Philosophie]]}}}<<tagCloud =Philosophie>>


# ''[[Introduction|ThèseIntro]]:'' les problèmes que pose l'objectivité en biologie (téléologie, normativité, intentionnalité) +++[voir]
<<tiddler TroisEnjeux>>
===

# ''[[Naturalisation|Naturalisme]]:'' tentatives de de naturalisation des fonctions biologiques; principales conceptions, principales objections
## ''ApprocheEtiologique''
## ''ApprocheSystémique''
# ''Alternatives''
## Autres approches
### [[Bigelow & Pargetter]]
### [[Davies, Paul Sheldon]]
### [[Bedau, Mark]]
### ApprocheMentaliste
## BiologieSynthétique: vie et fonctions
## BioSémiotique
# ''Ma proposition''
## FolkBiology
## FonctionsTechniques
## Langage de l'action: AgentCenteredApproach
## Interprétationnisme; herméneutique
## Action-Signification
# ''Conclusions''
Ceci sont mes plans de thèse:
L'auteur pose la question: que faire quand la raison et la foi se contredisent? De façon générale, la réponse de l'auteur consiste à dire: on ne peut pas rejeter a priori l'un ou l'autre, il faut évaluer chaque question individuellement et voir de quelles garanties dispose chacune des propositions concurrentes. 

Les sciences, contrairement à ce qu'elles prétendent, ne sont pas neutres vis-à-vis de la religion, ni de la morale. Il y a une bataille qui se livre entre trois adversaires: le naturalisme (athée), l'antiréalisme (kantien), le théisme (chrétien).

Il discute ensuite plus en détail la théorie de l'évolution. Il rejette en particulier, en citant des contre-exemples ou difficultés, l'hypothèse de l'ancêtre commun, à laquelle il oppose une création séparée pour les différentes espèces. Selon lui, cette hypothèse n'est probable que si l'on adopte au départ la perspective naturaliste, mais nous n'y sommes pas obligés. 

Il propose finalement la création d'une "science théiste", non limitée par les parti-pris du naturalisme. Le christianisme est engagé dans une bataille contre les forces de l'incroyance, et la science n'est pas neutre. Il faut donc adopter une attitude critique vis-à-vis des universitaires et des experts, ne pas toujours les croire sur parole, et s'engager soi-même dans les sciences avec une perspective chrétienne.

L'article est disponible à l'adresse: [[www.calvin.edu/academic/philosophy/virtual_library/plantinga_alvin.html]]
Dans la permière partie, l'auteur cherche à montrer, exemples à l'appui, que la science n'est pas neutre. Que ce soit en sociologie, en biologie évolutionniste, ou en cosmologie (//cosmic fine-tuning//). Il demande alors la création d'une science chrétienne.

Dans la seconde partie, il s'en prend d'abord à la définition de la science de M. Ruse qui exclut, par définition, toute référence à Dieu. Il discute ensuite de la manière dont Dieu agit ou est présent dans sa Création, et de la manière dont le théiste peut l'invoquer dans ses explications, notamment en référence au Dieu-des-brèches (God-of-the-gaps). Il discute finalement la "science duhemienne", c'est-à-dire l'idée que les théories scientifiques sont subordonnées à une métaphysique, et ce qui pourrait être une science augustinienne.

{{floatleft{[img(120px,auto)[Alvin Plantinga, wikipedia|./imagesWiki/alvin-plantinga.jpg][http://en.wikipedia.org/wiki/Alvin_Plantinga]]}}}
''Alvin Plantinga'' est un philosophe étasunien, [[protestant|Protestantisme]], spécialisé en [[philosophie de la religion|PhiloReligion]] et sur des questions de [[logique modale|PhiloLogique]].

Il développe notamment un argument évolutionniste contre le [[naturalisme|Naturalisme]], avec lequel il prétend montrer que le naturalisme et la [[théorie de l'évolution biologique||Darwinisme]], pris ensemble, s'auto-réfutent. Il développe cet argument dans le dernier chapitre de [[Warrant and Proper Function|Plantinga, A (1993): Warrant and Proper Function]], et dans un article inédit intitulé [["Naturalism Defeated"|Plantinga, A (1994): "Naturalism Defeated"]].

!Bibliographie
* 1991: [["When Faith and Reason Clash"|Plantinga, A (1991): "When Faith and Reason Clash"]]
* 1993: [[Warrant and Proper Function|Plantinga, A (1993): Warrant and Proper Function]]
* 1994: [["Naturalism Defeated"|Plantinga, A (1994): "Naturalism Defeated"]]
* 1997: [["Methodological Naturalism?"|Plantinga, A (1997): "Methodological Naturalism?"]]

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Plantinga","prénom":"Alvin","initiales":"A"}</data>
<<tiddler Théories>>

<<tiddler Théories>>
{{floatleft{[img[Karl Popper|./imagesWiki/KarlPopper.jpeg]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Popper","prénom":"Karl","initiales":"K"}</data>
<<tiddler Théories>>
<<tiddler Théories>>
Para empezar con este TiddlyWiki vacío, necesitará modificar los siguientes tiddlers:
* SiteTitle & SiteSubtitle: El título y subtítulo del sitio, mostrados en el encabezado (después de guardar, también aparecerán en la barra del título de su navegador web)
* MainMenu: El menú principal que funciona como tabla de contenido para el usuario (generalmente este menú se encuentra a la izquierda)
* DefaultTiddlers: Contiene los nombres de los tiddlers que aparecerán cuando el archivo TiddlyWiki se abre
Además, necesitará ingresar su nombre usuario para firmar sus cambios posteriores al archivo: <<option txtUserName>>
#Problème: biologie et objectivité
##Téléologie
##Normativité
##Intentionnalité
#Naturalisation des fonctions
##ApprocheEtiologique
##ApprocheSystémique
#Naturalisation de la vie: VieMinimale
##TopDown
##BottomUp
#Principales objections
#Normativité biologique: la maladie
##Borse
#Approches alternatives
##Aristote
##ApprocheValorative de Bedau
##TéléoMentalisme
#Mentalisme
##Objections et réponses
##FolkBiology
#Langage de l'action

/***
|Name:|PrettyDatesPlugin|
|Description:|Provides a new date format ('pppp') that displays times such as '2 days ago'|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#PrettyDatesPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Notes
* If you want to you can rename this plugin. :) Some suggestions: LastUpdatedPlugin, RelativeDatesPlugin, SmartDatesPlugin, SexyDatesPlugin.
* Inspired by http://ejohn.org/files/pretty.js
***/
//{{{
Date.prototype.prettyDate = function() {
	var diff = (((new Date()).getTime() - this.getTime()) / 1000);
	var day_diff = Math.floor(diff / 86400);

	if (isNaN(day_diff))      return "";
	else if (diff < 0)        return "in the future";
	else if (diff < 60)       return "just now";
	else if (diff < 120)      return "1 minute ago";
	else if (diff < 3600)     return Math.floor(diff/60) + " minutes ago";
	else if (diff < 7200)     return "1 hour ago";
	else if (diff < 86400)    return Math.floor(diff/3600) + " hours ago";
	else if (day_diff == 1)   return "Yesterday";
	else if (day_diff < 7)    return day_diff + " days ago";
	else if (day_diff < 14)   return  "a week ago";
	else if (day_diff < 31)   return Math.ceil(day_diff/7) + " weeks ago";
	else if (day_diff < 62)   return "a month ago";
	else if (day_diff < 365)  return "about " + Math.ceil(day_diff/31) + " months ago";
	else if (day_diff < 730)  return "a year ago";
	else                      return Math.ceil(day_diff/365) + " years ago";
}

Date.prototype.formatString_orig_mptw = Date.prototype.formatString;

Date.prototype.formatString = function(template) {
	return this.formatString_orig_mptw(template).replace(/pppp/,this.prettyDate());
}

// for MPTW. otherwise edit your ViewTemplate as required.
// config.mptwDateFormat = 'pppp (DD/MM/YY)'; 
config.mptwDateFormat = 'pppp'; 

//}}}

<<tiddler Théories>>
<<tiddler Concepts>>
<<tiddler Problèmes>>

<<tiddler Concepts>>
[[Ruth Garrett Millikan|Millikan, Ruth Garrett]], dans [["In Defense of Proper Functions"|Millikan (1989): "In Defense of Proper Functions"]], donne la définition suivante:

><part properFunctionDefinition> La définition de "fonction propre" est récursive. Pour qu'un item //A// ait la "fonction propre" //F//, il est nécessaire (et presque suffisant) que l'une de ces deux conditions soit satisfaite:
# //A// originated as a "reproduction" (to give one example, as a copy, or a copy of a copy) of some prior item or items that, //due// in part to possession of the properties reproduced, have actually performed //F// in the past, and //A// exists because (causally historically because) of this or these performances.
# //A// originated as the product of some prior device that, given its circumstances, had performance of //F// as a proper function and that, under those circumstances, normally causes //F// to be performed by //means// of producing an item like //A//.
Les items qui tombent sous la seconde condition ont des "fonctions propres dérivées".
</part>
<<tiddler Concepts>>
+++[voir texte]
! Is This Life?
      From The Scientist (January 2006)
      .pdf format, 324 kb
! NOVA Science Now Story on Artificial Life
      October 2005
! Alive! The Race to Create Life from Scratch
      From New Scientist (February 2005)
      .pdf format, 65 kb
! It's Life, Jim, But Not As We Know It
      PR Web Press Release (January 2005)
      .pdf format, 104 kb
! Researchers Seek to Create a Living Cell
      From The Wall Street Journal (April 2004)
      .pdf format, 49 kb
! Science on Verge of New 'Creation'
      From The Chicago Tribune (March 2004)
      .pdf format, 68 kb
===

Source: [[ProtoLife : News - Press|http://www.protolife.net/news/]] ++++
<html><div align="center"><iframe src="http://www.protolife.net/news/"0" frameborder="0" width="100%" height="600"></iframe></div></html>
===
+++[texte]

Publications

! Evolutionary Design of a Model of Self-Assembling Chemical Structures
      A. Buchanan, G. Gazzola, and M. A. Bedau. In N. Krasnegor, S. Gustafson, D. Pelta and J. L. Verdegay (Eds.), Systems Self-Assembly: Multidisciplinary Snapshots, Elsevier (2006).
      .pdf format, 928kb

! Evolutionary Design of a DDPD Model of Ligation
      M. Bedau, A. Buchanan, G. Gazzola, M. Hanczyc, T. Maeke, J. McCaskill, I. Poli, and N. Packard, Forthcoming in Proceedings of the 7th International Conference on Artificial Evolution EA'05, Lecture Notes on Computer Science, Springer-Verlag (2005).
      .pdf format, 332kb

! Transitions from Nonliving to Living Matter
      S. Rasmussen, L. Chen, D. Deamer, D. Krakauer, N. Packard, P. Stadler, and M. Bedau, Science (2004)
      .pdf format, 277 kb

! Replicating Vesicles as Models of Primitive Cell Growth and Division
      M. Hanczyc and J. Szostak, Current Opinion in Chemical Biology (2004)
      .pdf format, 193 kb

! Experimental Models of Primitive Cellular Compartments: Encapsulation, Growth, and Division
      M. Hanczyc, S. Fujikawa, and J. Szostak, Science (2003)
      .pdf format, 422 kb
      Supporting Material
      .pdf format, 601 kb

! Replicability and Recurrence in the Experimental Evolution of a Group I Ribozyme
      M. Hanczyc and R. Dorit, Molecular Biology and Evolution (2000)
      .pdf format, 436 kb

! Experimental Evolution of Complexity: In Vitro Emergence of Intermolecular Ribozyme Interactions
      M. Hanczyc and R. Dorit, RNA (1998)
      .pdf format, 721 kb

Source: [[ProtoLife : News - Publications|http://www.protolife.net/news/publications.php]]
===

|vertical-align:bottom;<<tiddler ToggleRightSidebar>>|<<tiddler NavButtons>>|vertical-align:bottom;[[Open in a new window|http://www.protolife.net/news/publications.php]]&nbsp;&raquo;|

++++[Voir/Cacher]
<html><div align="center"><iframe src="http://www.protolife.net/news/publications.php"0" frameborder="0" width="100%" height="600"></iframe></div></html>}}}
===
<<tiddler Concepts>>

<<tiddler Concepts>>

/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
config.quickOpenTag = {

	dropdownChar: (document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE?

	createTagButton: function(place,tag,excludeTiddler) {
		// little hack so we can do this: <<tag PrettyTagName|RealTagName>>
		var splitTag = tag.split("|");
		var pretty = tag;
		if (splitTag.length == 2) {
			tag = splitTag[1];
			pretty = splitTag[0];
		}
		
		var sp = createTiddlyElement(place,"span",null,"quickopentag");
		createTiddlyText(createTiddlyLink(sp,tag,false),pretty);
		
		var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
                        config.views.wikified.tag.tooltip.format([tag]),onClickTag);
		theTag.setAttribute("tag",tag);
		if (excludeTiddler)
			theTag.setAttribute("tiddler",excludeTiddler);
    		return(theTag);
	},

	miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var tagged = store.getTaggedTiddlers(tiddler.title);
		if (tagged.length > 0) {
			var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
                        	config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
			theTag.setAttribute("tag",tiddler.title);
			theTag.className = "miniTag";
		}
	},

	allTagsHandler: function(place,macroName,params) {
		var tags = store.getTags(params[0]);
		var filter = params[1]; // new feature
		var ul = createTiddlyElement(place,"ul");
		if(tags.length == 0)
			createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
		for(var t=0; t<tags.length; t++) {
			var title = tags[t][0];
			if (!filter || (title.match(new RegExp('^'+filter)))) {
				var info = getTiddlyLinkInfo(title);
				var theListItem =createTiddlyElement(ul,"li");
				var theLink = createTiddlyLink(theListItem,tags[t][0],true);
				var theCount = " (" + tags[t][1] + ")";
				theLink.appendChild(document.createTextNode(theCount));
				var theDropDownBtn = createTiddlyButton(theListItem," " +
					config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
				theDropDownBtn.setAttribute("tag",tags[t][0]);
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag ",
"	{ margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",
"/* extra specificity to make it work right */",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink ",
"	{ border:0px solid black; }",
"#displayArea .viewer .quickopentag a.button, ",
"#mainMenu .quickopentag a.button ",
"	{ margin-left:0px; padding-left:2px; }",
"#displayArea .viewer .quickopentag a.tiddlyLink, ",
"#mainMenu .quickopentag a.tiddlyLink ",
"	{ margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",
"a.miniTag {font-size:150%;} ",
"#mainMenu .quickopentag a.button ",
"	/* looks better in right justified main menus */",
"	{ margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }", 
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",
"/*}}}*/",
		""].join("\n"),

	init: function() {
		// we fully replace these builtins. can't hijack them easily
		window.createTagButton = this.createTagButton;
		config.macros.allTags.handler = this.allTagsHandler;
		config.macros.miniTag = { handler: this.miniTagHandler };
		config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;
		store.addNotification("QuickOpenTagStyles",refreshStyles);
	}
}

config.quickOpenTag.init();

//}}}

[[Quine|Quine, Willard]] constate l'échec des tentatives du [[Cercle de Vienne]] pour justifier les connaissances par la réduction des propositions scientifiques à des propositions observationnelles, c'est-à-dire par une reconstruction rationnelle //a priori//. L'auteur tire les conséquences de sa critique de l'incommensurabilité de la traduction et de la distinction entre connaissance analytique et synthétique, et il affirme que le projet de justification rationnelle des connaissances doit être abandonné au profit de l'investigation scientifique: la nouvelle épistémologie doit être un chapitre de la psychologie, c'est-à-dire des sciences naturelles.

L'article est un classique de l'épistémologie contemporaine et mérite d'être relu, notamment pour la manière dont il définit les énoncés observationnels à partir d'une communauté linguistique.
<<tiddler AutoRefresh on>><<tiddler Livre>>++++![Résumé]

===

+++![Chapitres]
<<newChapterHere>>
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
etc.
===

<<tiddler RéférenceLivre>>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere label:"nouvelle note">><<newChapterHere>>
----
<data>{"nom":"Quine","prénom":"Willard","initiales":"WVO","titrelivre":"Ontological Relativity and Other Essays","datepublication":"1969"}</data>
{{floatleft{[img[W.V.O. Quine|./imagesWiki/QuineWVO.jpeg][http://en.wikipedia.org/wiki/Willard_Van_Orman_Quine]]}}}
''W.V.O. Quine'' (~Etats-Unis, 1908 - 2000) a fait des études de [[mathématiques|Mathématiques]] avec [[Whitehead|Whitehead, Alfred North]]. Proche de [[Carnap|Carnap, Rudolph]], il développe des travaux de [[logique|PhiloLogique]] puis publie, en 1951, ses //[[Deux dogmes de l'empirisme|Quine, WVO (1951): Deux dogmes de l'empirisme]]// où il critique la dichotomie analytique/synthétique et le réductionnisme aux [[énoncés observationnels|Théorie-Observation]] du [[positivisme logique|PositivismeLogique]].


!Bibliographie
* 1951: [[Two Dogmas of Empirism|Quine, WVO (1951): Deux dogmes de l'empirisme]]
* 1953: [[From a Logical Point of View|Quine, WVO (1953): From a Logical Point of View]]
* 1960: [[Word and Object|Quine, WVO (1960): Word and Object]]
* 1969: [[Ontological Relativity and Other Essays|Quine, WVO (1969): Ontological Relativity and Other Essays]]

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Quine","prénom":"Willard","initiales":"WVO"}</data>
<<tiddler Théories>>
<<tiddler Concepts>>
/***
|''Name:''|RefreshTiddlerPlugin|
|''Description:''|Refresh an entire tiddler with optional periodic re-refresh|
|''Date:''|Oct 3, 2006|
|''Source:''|http://solo.dc3.com/tw/index.html#RefreshTiddlerPlugin|
|''Author:''|Bob Denny ~DC-3 Dreams, SP|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''Version:''|1.0.4|
|''~CoreVersion:''|2.0.11, 2.1.0|
|''Browser:''|Firefox 1.5; Internet Explorer 6.0; Safari|
|''Require:''|CheckboxPlugin (http://www.TiddlyTools.com/#CheckboxPlugin)|
This macro provides a tiddler with refresh control. At a minimum, a refresh button appears at the location of the macro invocation. Clicking this button causes the contents of the tiddler to be refreshed. Optionally, a checkbox may also be displayed with which the user can enable and disable automatic periodic refresh of  the tiddler at a specified interval.
There are three optional parameters
|!Parameter|!Description|
|''1''|Button label, default "Refresh"|
|''2''|Button tooltip, default "Refresh this tiddler"|
|''3''|Periodic refresh interval, sec., default 0 (no periodic refresh checkbox)|
!!Revision History
<<<
''2006.09.13 [1.0.1]'' Initial creation, several days
''2006.09.22 [1.0.2]'' Make periodic refresh checkbox optional
''2006.09.29 [1.0.3]'' Refresh checkbox cookie names different from RefreshIframe.
''2006.10.03 [1.0.4]'' Lint check, validate on TW 2.1.0.
<<<
!!Code
***/
//{{{
version.extensions.RefreshTiddler = {
 major: 1, minor: 0, revision: 4,
 date: new Date(2006, 10, 3), 
 type: 'macro',
 source: "#RefreshTiddlerPlugin"
};

config.macros.RefreshTiddler = 
{
	states: { },													// Associative array of refresh states indexed by tiddler name
    
	handler: function(place, macroName, params, wikifier, paramString, tiddler)
	{
		var tidTitle = tiddler.title;								// Shortcut
		if(!this.states[tidTitle]) this.states[tidTitle] = {		// Array of state objects for refreshed tiddlers
				butLabel: "",
				butTooltip: "",
				refInterval: 0,
				doRefresh: false,
				initPerRef: false,
				timerId: 0,
				chkBox: null
				};
		var state = this.states[tidTitle];							// Shortcut
		state.butLabel = params[0] ? params[0] : "RefreshTiddler"; 		// Make these react to edits
		state.butTooltip = params[1] ? params[1] : "Refresh this tiddler";
		state.refInterval = params[2] ? params[2] : 0;				// 0 = no periodic refresh checkbox
		var btn = createTiddlyButton(place, state.butLabel, state.butTooltip, this.onButClick);
		btn.name = tidTitle;										// Set button name to tiddler name (see onButClick())
		if(state.refInterval > 0) 									// If periodic refresh wanted
		{
			wikify(" [ =chkPerRefTid" + tiddler.created.convertToYYYYMMDDHHMM() + // Uniquify chkbox ID
				"{config.macros.RefreshTiddler.states[\"" + tidTitle + "\"].chkBox = this;}" +
				"{config.macros.RefreshTiddler.onChkClick(\"" +  tidTitle + "\");}] " + 
				state.butLabel + " every " + state.refInterval + " seconds", place);
			state.timerId = 0;
			if(!state.initPerRef) this.onChkClick(tidTitle);		// Simulate checkbox click (state already from cookie)
		}
	},
    
	onButClick: function(e) 
	{
		if(!e) e = window.event;
		var tidTitle = resolveTarget(e).name;						// Name is the tiddler name!
		//displayMessage("but " + tidTitle);
		story.refreshTiddler(tidTitle, null, true);
		return false;
	},
    
	onChkClick: function(tidTitle) 
	{
		var state = this.states[tidTitle];
		if(state.chkBox.checked) {
			if(state.timerId) clearTimeout(state.timerId);
			this.startRefresh(tidTitle); 
		} else { 
			state.doRefresh = false;
		}
		state.initPerRef = true;
	},
    
	startRefresh: function(tidTitle) 
	{
		var state = this.states[tidTitle];
		state.doRefresh = true;
		//displayMessage("st " + tidTitle + " " + state.refInterval);
		state.timerId = setTimeout("config.macros.RefreshTiddler.reRefresh(\"" + 
						tidTitle + "\")", state.refInterval * 1000);
	},
    
	reRefresh: function(tidTitle)
	{
		var state = this.states[tidTitle];
		state.timerId = 0;
		if(!state.doRefresh) return;


<script>
	place.insertBefore(document.getElementById(story.idPrefix + tidTitle),null);
	
</script>



		// Kill re-refresh cycle if tiddler closed or edited
		var tidElem = document.getElementById(story.idPrefix + tidTitle);  // DON'T GET CUTE! THIS IS CORRECT!
		//**BUGBUG** Hardwired to EditTemplate!
		if(!tidElem || tidElem.attributes['template'].value == "EditTemplate") // Prevent hidden or editing
		{
			state.initPerRef = false;
			return;
		}
		//displayMessage("re " + tidTitle + " " + state.refInterval);
		story.refreshTiddler(tidTitle, null, true);
		state.timerId = setTimeout("config.macros.RefreshTiddler.reRefresh(\"" + 
						tidTitle + "\")", state.refInterval * 1000);
	}
};
//}}}

<<tiddler Théories>>

/***
|Name:|RenameTagsPlugin|
|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.0 ($Rev: 5501 $)|
|Date:|$Date: 2008-06-10 23:11:55 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {

	prompts: {
		rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
		remove: "Remove the tag '%0' from %1 tidder%2?"
	},

	removeTag: function(tag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,tag);
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	renameTag: function(oldTag,newTag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
			store.setTiddlerTag(tiddlers[i].title,true,newTag);  // add new
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	storeMethods: {

		saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,

		saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
			if (title != newTitle) {
				var tagged = this.getTaggedTiddlers(title);
				if (tagged.length > 0) {
					// then we are renaming a tag
					if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
						config.renameTags.renameTag(title,newTitle,tagged);

					if (!this.tiddlerExists(title) && newBody == "")
						// dont create unwanted tiddler
						return null;
				}
			}
			return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
		},

		removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,

		removeTiddler: function(title) {
			var tagged = this.getTaggedTiddlers(title);
			if (tagged.length > 0)
				if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
					config.renameTags.removeTag(title,tagged);
			return this.removeTiddler_orig_renameTags(title);
		}

	},

	init: function() {
		merge(TiddlyWiki.prototype,this.storeMethods);
	}
}

config.renameTags.init();

//}}}

<<tiddler Concept>>
Un site avec plein de choses sympa de [[Dave et Blanca Gifford|http://www.giffmex.org/tiddlywikicentral.html]]
<<tiddler Concepts>>

''Homme = nature :''
* <part HommeNature> "Man is an example of nature, and just as good an example as rocks, sea, and sky, because he is bone of her bones and flesh or her flesh." ([[Romanelli 1941:41]]) </part>
''Connaissance de l'intérieur de la nature:''
* <part ConnaissanceInterne> "Contemporary naturalism approaches the theory of nature from the fact of //living// rather than from the fact of //doubting// [...] Man does not understand the world by going outside of it, but by living in it." ([[Romanelli 1941:42]]) </part>
Ce texte cherche à décrire les caractéristiques essentielles du [[naturalisme|Naturalisme]] en tant que théorie de la nature.

Il commence par dire que le naturalisme est une réaction contre le mécanisme matérialiste du XIXe siècle à la lumière des révolutions de la physique: MécaniqueQuantique et Relativité. Le naturalisme correspondrait à un changement d'attitude vis-à-vis des sciences et du monde, moins dogmatique et plus ouvert à reconnaître les complexités de la nature. Il correspond à une tentative de comprendre le monde de l'intérieur, tenant compte du fait que l'homme fait partie de cette nature qu'il cherche à décrire:
> <<tiddler [[Romanelli 1941:41/HommeNature]]>>
> <<tiddler [[Romanelli 1941:42/ConnaissanceInterne]]>>

Le reste du texte est un peu bizarre, et je ne suis pas sûr qu'on puisse en tirer grand chose.
<<tiddler Auteur>>
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Romanelli","prénom":"Pasquale","initiales":"P"}</data>

<<tiddler AutoRefresh on>><<tiddler Article>>

++++![Résumé]
L'un des premiers articles à défendre l'idée que les catégories cognitives sont structurées autour de prototypes. L'étude porte sur la catégorisation des couleurs et des formes. Elle a été réalisée auprès de 162 membres d'une tribu dont le langage est dépourvu de concepts pour les formes géométriques et pour les teintes de couleur. Elle a consisté à leur présenter des catégories de couleur constituées autour de "prototypes naturels" perceptivement saillants, ainsi que des catégories où les prototypes naturels étaient périphériques, afin d'étudier la manière dont ils apprenaient et manipulaient ces catégories.

L'étude a montré que les catégories "naturelles" étaient nettement plus faciles à apprendre que les catégories "biscornues". Même lorsqu'il n'étaient pas centraux, les stimuli prototypiques naturels avaient tendance à être plus rapidement appris et plus souvent choisis comme exemples typiques de la catégorie que d'autres stimuli. L'article se termine par une discussion sur les différences générales entre les catégories naturelles et artificielles dans les recherches sur la formation des concepts.
===


<<tiddler RéférenceArticle>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere>>
----<data>{"nom":"Rosch","prénom":"Eleanor","initiales":"E","isArticleRevue":true,"titrearticle":"Natural Categories","datepublication":"1973","journal":"Cognitive Psychology","volumejournal":"4","pagesarticle":"328-350","pagescitation":"332","motscléscitation":"naturalCategories"}</data>
<<tiddler Citation>>
!naturalCategories
<part naturalCategories> "[...] the basic hypothesis of the present study is that colors are 'natural categories' and conform to the hypotheses for the learning of natural categories stated in the introduction; that is, it is predicted that focal colors themselves and sets in which focal colors are central will be learned faster that nonfocal colors and than unnaturally structured sets." ([[Rosch, E 1973:332]]) </part><data>{"nom":"Rosch","prénom":"Eleanor","initiales":"E","isArticleRevue":true,"titrearticle":"Natural Categories","datepublication":"1973","journal":"Cognitive Psychology","volumejournal":"4","pagesarticle":"328-350","pagescitation":"332","motscléscitation":"naturalCategories"}</data>
{{floatleft{[img(120px,auto)[Eleanor Rosch, wikipedia|imagesWiki/rosch.jpg][http://fr.wikipedia.org/wiki/Eleanor_Rosch]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Rosch","prénom":"Eleanor","initiales":"E","isArticleRevue":true,"titrearticle":"Natural Categories","datepublication":"1973","journal":"Cognitive Psychology","volumejournal":"4","pagesarticle":"328-350"}</data>
<<tiddler AutoRefresh on>><<tiddler Livre>>{{floatleft{
}}}++++![Résumé]
''La physique, la biologie et la clôture sous causalité efficiente''
(par John Stewart, COSTECH, Université de Technologie de Compiègne)

Rosen (1991) propose de ré-interpréter les quatre types de causalité que distinguait Aristote: les causalités matérielle, efficiente, formelle et finale. Dans le cas des systèmes dynamiques déterminés par leur état (SDDE), les trois causes matérielle, efficiente et formelle sont si étroitement imbriquées qu'au fond elles ne forment qu'une seule cause; et, comme l'a dit Russell, la notion même de "causalité" s'affaiblit dans la mesure où //tout est déterminé//. Par conséquent, il n'y a rigoureusement aucune place pour le quatrième type de causalité aristotélicienne, la "cause finale": elle ne //peut// rien ajouter, rien signifier, car tout est //déjà// déterminé et il n'y a plus rien à spécifier.

Rosen propose comme //définition// d'un organisme vivant le fait qu'il s'agit d'un système matériel qui est clos //sous causalité efficiente//. Cela n'est possible que si les causalités efficientes bouclent sur elles-mêmes dans une configuration circulaire ; ce qui est impossible dans le cadre conceptuel d'un SDDE car la structure des implications causales est déjà totalement saturée. Par exemple, la physique, en tant que science des SDDE, ne //peut// répondre à la question: "//pourquoi// la force est-elle proportionnelle au produit des masses et inversement proportionnelle au carré de la distance?" Les "lois dynamiques" sont en fait hétéronomes, "extérieures" en quelque sorte au système lui-même.

En employant la Théorie des Catégories, Rosen propose un modèle formel (minimal) de la clôture sous causalité efficiente, dans lequel @@il devient possible de donner un contenu scientifique aux notions de //cause finale// et de //fonction//@@. Chaque composant du modèle relationnel ainsi obtenu possède alors des "raisons d'être" qui proviennent de ses conséquences et des //fonctions//, non pas au sens mathématique (des applications), mais au sens biologique du terme.
===

+++![Chapitres]
<<newChapterHere>>
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
etc.
===

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Rosen","prénom":"Robert","initiales":"R","isLivre":true,"titrelivre":"Life Itself","datepublication":"1991","villeédition":"New York","noméditeur":"Columbia University Press","dateédition":"1991"}</data>
<<tiddler Auteur>>{{floatleft{
[img(120px,auto)[ ]]
}}}
!1934 - 1998
Robert Rosen est un théoricien de la biologie américain et professeur de biophysique à l'université de Dalhousie.

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Rosen","prénom":"Robert","initiales":"R","isLivre":true,"titrelivre":"Life Itself","datepublication":"1991","villeédition":"New York","noméditeur":"Columbia University Press","dateédition":"1991"}</data>


<<tiddler Concepts>>
<<tiddler Théories>>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom","")
   var prénom=DataTiddler.getData(titre,"prénom","")
   var initiales=DataTiddler.getData(titre,"initiales","")
   var titrearticle=DataTiddler.getData(titre,"titrearticle","")
   var datepublication=DataTiddler.getData(titre,"datepublication","")
   var journal=DataTiddler.getData(titre,"journal","")
   var volumejournal=DataTiddler.getData(titre,"volumejournal","")
   var numérojournal=DataTiddler.getData(titre,"numérojournal","")
   var pagesarticle=DataTiddler.getData(titre,"pagesarticle","")
   return "|bgcolor(#ffff99): ''"+nom+", "+initiales+" ("+datepublication+"):'' '"+titrearticle+"', //"+journal+"// ''"+volumejournal+"''("+numérojournal+"):"+pagesarticle+"|";
</script>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var titrelivre=DataTiddler.getData(titre,"titrelivre")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var villeédition=DataTiddler.getData(titre,"villeédition","")
   var noméditeur=DataTiddler.getData(titre,"noméditeur","")
   var dateédition=DataTiddler.getData(titre,"dateédition","")
   return "|bgcolor(#ffff99): ''"+nom+", "+initiales+" ("+datepublication+"):'' //"+titrelivre+"//. "+villeédition+": "+noméditeur+", "+dateédition+"|";
</script>

[>img[Sauvegarder ou restaurer une session|IconeBoite]]<<saveStory "SessionPrécédente" "enregistrer" "Sauvegarder la liste des tiddler ouverts">>
<<saveStory ask "nouvelle session" "Enregistrer une nouvelle session">>
<<openStory popup "restaurer une session" "Restaurer une session précédente">>
<<option chkSaveStory>>Sauvegarde automatique de la session
/***
|Name:|SaveCloseTiddlerPlugin|
|Description:|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
|Version:|3.0 ($Rev: 5502 $)|
|Date:|$Date: 2008-06-10 23:31:39 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
To use these you must add them to the tool bar in your EditTemplate
***/
//{{{
merge(config.commands,{

	saveCloseTiddler: {
		text: 'done/close',
		tooltip: 'Save changes to this tiddler and close it',
		handler: function(ev,src,title) {
			var closeTitle = title;
			var newTitle = story.saveTiddler(title,ev.shiftKey);
			if (newTitle)
				closeTitle = newTitle;
			return config.commands.closeTiddler.handler(ev,src,closeTitle);
		}
	},

	cancelCloseTiddler: {
		text: 'cancel/close',
		tooltip: 'Undo changes to this tiddler and close it',
		handler: function(ev,src,title) {
			// the same as closeTiddler now actually
			return config.commands.closeTiddler.handler(ev,src,title);
		}
	}

});

//}}}

/***
|Name|SaveOnExitPlugin|
|Source|http://www.TiddlyTools.com/#SaveOnExitPlugin|
|Version|1.0.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|window.confirmExit|
|Description|extra safety when exiting with unsaved changes|

As of TW 2.0.5, when exiting from a TW session with unsaved tiddler changes, an "onbeforeunload" event handler calls upon confirmExit() to display a message box with a warning message and options to stay on the current page or continue exiting and lose all changes.

However, not all browsers support the use of the "onbeforeunload" event, so TW still supports the previous "onunload" event handler, which offers a "save-or-discard-before-exiting" option, but cannot stop the browser from exiting the TW session.  Normally, when the newer confirmation message is used, the older message box is suppressed, so that only one confirmation message will be displayed.

This plugin prevents the "Save or Discard" confirmation message from being suppressed, so that the 'save-on-exit' option is still available, even after responding to the default "Exit or Cancel" message.  ''This double check procedure adds just a bit more "data safety" to the TW exit process.''
!!!!!Configuration
<<<
<<option chkSaveOnExit>> Enable second "save-before-exiting" confirmation message
<<<
!!!!!Revision History
<<<
2007.03.01 1.0.2 use apply() to invoke hijacked core function
2006.08.23 1.0.1 Re-released.  Note default is now to NOT enable second message. (i.e., standard behavior)
2006.02.24 1.0.0 Initial release.  Replaces ConfirmExitPlugin, which is now included in the TW core functionality.
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
if (config.options.chkSaveOnExit==undefined) config.options.chkSaveOnExit=false; // default to standard behavior
// clear the standard exit message, since the second confirm message will show the "unsaved TiddlyWiki" warning text
config.messages.confirmExit = "There are unsaved changes in TiddlyWiki.";
// hijack standard confirm to clear flag so that second confirm will occur as well
config.coreConfirmExit=window.confirmExit;
window.confirmExit=function() {
	var r=config.coreConfirmExit.apply(this,arguments);
	window.hadConfirmExit=!config.options.chkSaveOnExit;
	return r;
}
//}}}
<<tiddler Concepts>>
{{floatleft{[img(100px, auto)[Sciences|./imagesWiki/Atome.JPG][Sciences]]}}}<<tagCloud =Sciences>>

<<tiddler Concepts>>
/***
|''Name:''|SearchOptionsPlugin|
|''Source:''|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|''Author:''|Eric Shulman - ELS Design Studios|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.0.10|

The TiddlyWiki search function normally looks in both tiddler titles and tiddler body content ('text').  However, narrowing the search so that it examines only titles or only text, or expanding the search to include text contained in tiddler tags can be very helpful, especially when searching on common words or phrases.  In addition, it is often useful for the search results to show tiddlers with matching titles before tiddlers that contain matching text or tags.

!!!!!Usage
<<<
This plugin adds checkboxes (see below and in AdvancedOptions) to let you selectively configure the TiddlyWiki search function to just examine any combination of tiddler titles, text, or tags.  It also provides an option to switch the search results order between 'titles mixed in' (default) and 'titles shown first', as well as an option display the search results as a list of links (in an auto-generated "SearchResults" tiddler), rather than actually displaying all matching tiddlers.  You can also enable/disable the "incremental search" (key-by-key searching), so that a search is only initiated when you press the ENTER key or click on the "search:" prompt text.
<<<
!!!!!Configuration
<<<
In additional to the checkboxes in AdvancedOptions, a self-contained control panel is included here for your convenience:
<<option chkSearchTitles>> Search in titles
<<option chkSearchText>> Search in tiddler text
<<option chkSearchTags>> Search in tags
<<option chkSearchFields>> Search in data fields
<<option chkSearchShadows>> Search shadow tiddlers
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchByDate>> Sort matching tiddlers by date
<<option chkSearchList>> Show list of matches in [[SearchResults]]
<<option chkSearchIncremental>> Incremental searching
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''SearchOptionsPlugin'' (tagged with <<tag systemConfig>>)
^^documentation and javascript for SearchOptionsPlugin handling^^

When installed, this plugin automatically adds checkboxes in the AdvancedOptions shadow tiddler so you can enable/disable the extended search behavior.  However, if you have customized your AdvancedOptions, you will need to manually add {{{<<option chkSearchTitles>>}}},  {{{<<option chkSearchText>>}}} and {{{<<option chkSearchTitlesFirst>>}}}  (with suitable prompt text) to your customized tiddler.
<<<
!!!!!Revision History
<<<
''2007.01.29 [2.5.0]'' added support for "sort results by date".  Default is to sort alphabetically (standard).  When sorted by dates, most recent changes are shown first
''2006.10.10 [2.4.0]'' added support for "search in tiddler data" (tiddler.fields)  Default is to search extended data.
''2006.04.06 [2.3.0]'' added support for "search in shadow tiddlers".  Default is *not* to search in the shadows (i.e. standard TW behavior).  Note: if a shadow tiddler has a 'real' counterpart, only the real tiddler is searched, since the shadow is inaccessible for viewing/editing.
''2006.02.03 [2.2.1]'' rewrite timeout clearing code and blank search text handling to match 2.0.4 core release changes.  note that core no longer permits "blank=all" searches, so neither does this plugin.  To search for all, use "." with text patterns enabled.
''2006.02.02 [2.2.0]'' in search.handler(), KeyHandler() function clears 'left over' timeout when search input is < 3 chars.  Prevents searching on shorter text when shortened by rapid backspaces (<500msec)
''2006.02.01 [2.1.9]'' in Story.prototype.search(), correct inverted logic for using/not using regular expressions when searching
also, blank search text now presents "No search text.  Continue anyway?" confirm() message box, so search on blank can still be processed if desired by user.
''2006.02.01 [2.1.8]'' in doSearch(), added alert/return if search text is blank
''2006.01.20 [2.1.7]'' fixed setting of config.macros.search.reportTitle so that Tweaks can override it.
''2006.01.19 [2.1.6]'' improved SearchResults formatting, added a "search again" form to the report (based on a suggestion from MorrisGray)
define results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title
''2006.01.18 [2.1.5]'' Created separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.
''2006.01.17 [2.1.4]'' Use regExp.search() instead of regExp.test() to scan for matches.  Correctd the problem where only half the matching tiddlers (the odd-numbered ones) were being reported.
''2006.01.15 [2.1.3]'' Added information (date/time, username, search options used) to SearchResults output
''2006.01.10 [2.1.2]'' use displayTiddlers() to render matched tiddlers.  This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.
''2006.01.08 [2.1.1]'' corrected invalid variable reference, "txt.value" to "text" in story.search()
''2006.01.08 [2.1.0]'' re-write to match new store.search(), store.search.handler() and story.search() functions.
''2005.12.30 [2.0.0]'' Upgraded to TW2.0
when rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.
''2005.12.26 [1.4.0]'' added option to search for matching text in tiddler tags
''2005.12.21 [1.3.7]'' use \\ to 'escape' single quotes in tiddler titles when generating "Open all matching tiddlers" link.  Also, added access key: "O", to trigger "open all" link.
Based on a suggestion by UdoBorkowski.
''2005.12.18 [1.3.6]'' call displayMessage() AFTER showing matching tiddlers so message is not cleared too soon
''2005.12.17 [1.3.5]'' if no matches found, just display message and delete any existing SearchResults tiddler.
''2005.12.17 [1.3.4]'' use {/%%/{/%%/{  and }/%%/}/%%/} to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered 
Based on a suggestion by UdoBorkowski.
''2005.12.14 [1.3.3]'' tag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches
Based on a suggestion by UdoBorkowski.
''2005.12.14 [1.3.2]'' added "open all matching tiddlers..." link to search results output.
Based on a suggestion by UdoBorkowski.
''2005.12.10 [1.3.1]'' added "discard search results" link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.
''2005.12.01 [1.3.0]'' added chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).
added handling for Enter key so it can be used to start a search.
Based on a suggestion by LyallPearce
''2005.11.25 [1.2.1]'' renamed from SearchTitleOrTextPlugin to SearchOptionsPlugin
''2005.11.25 [1.2.0]'' added chkSearchList option
Based on a suggestion by RodneyGomes
''2005.10.19 [1.1.0]'' added chkSearchTitlesFirst option.
Based on a suggestion by ChristianHauck
''2005.10.18 [1.0.0]'' Initial Release
Based on a suggestion by LyallPearce.
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].
<<<
!!!!!Code
***/
//{{{
version.extensions.SearchTitleOrText = {major: 2, minor: 4, revision: 0, date: new Date(2006,10,12)};
//}}}

//{{{
if (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=true;
if (config.options.chkSearchText==undefined) config.options.chkSearchText=true;
if (config.options.chkSearchTags==undefined) config.options.chkSearchTags=true;
if (config.options.chkSearchFields==undefined) config.options.chkSearchFields=true;
if (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=false;
if (config.options.chkSearchList==undefined) config.options.chkSearchList=false;
if (config.options.chkSearchByDate==undefined) config.options.chkSearchByDate=false;
if (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=true;
if (config.options.chkSearchShadows==undefined) config.options.chkSearchShadows=false;

config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTitles>> Search in tiddler titles";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchText>> Search in tiddler text";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTags>> Search in tiddler tags";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchFields>> Search in tiddler data fields";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchShadows>> Search in shadow tiddlers";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTitlesFirst>> Search results show title matches first";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchList>> Search results show list of matching tiddlers";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchByDate>> Search results sorted by modification date ";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchIncremental>> Incremental searching";
//}}}

//{{{
if (config.macros.search.reportTitle==undefined)
	config.macros.search.reportTitle="SearchResults";
//}}}

//{{{
config.macros.search.handler = function(place,macroName,params)
{
	var lastSearchText = "";
	var searchTimeout = null;
	var doSearch = function(txt)
		{
		if (txt.value.length>0)
			{
			story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);
			lastSearchText = txt.value;
			}
		};
	var clickHandler = function(e)
		{
		doSearch(this.nextSibling);
		return false;
		};
	var keyHandler = function(e)
		{
		if (!e) var e = window.event;
		switch(e.keyCode)
			{
			case 13: // ELS: handle enter key
				doSearch(this);
				break;
			case 27:
				this.value = "";
				clearMessage();
				break;
			}
		if (config.options.chkSearchIncremental)
			{
			if(this.value.length > 2)
				{
				if(this.value != lastSearchText)
					{
					if(searchTimeout) clearTimeout(searchTimeout);
					var txt = this;
					searchTimeout = setTimeout(function() {doSearch(txt);},500);
					}
				}
			else
				if(searchTimeout) clearTimeout(searchTimeout);
			}
		};
	var focusHandler = function(e)
		{
		this.select();
		};
	var btn = createTiddlyButton(place,this.label,this.prompt,clickHandler);
	var txt = createTiddlyElement(place,"input",null,null,null);
	if(params[0])
		txt.value = params[0];
	txt.onkeyup = keyHandler;
	txt.onfocus = focusHandler;
	txt.setAttribute("size",this.sizeTextbox);
	txt.setAttribute("accessKey",this.accessKey);
	txt.setAttribute("autocomplete","off");
	if(config.browser.isSafari)
		{
		txt.setAttribute("type","search");
		txt.setAttribute("results","5");
		}
	else
		txt.setAttribute("type","text");
}
//}}}

//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
	highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
	var matches = store.search(highlightHack,config.options.chkSearchByDate?"modified":"title","excludeSearch");
	if (config.options.chkSearchByDate) matches=matches.reverse(); // most recent changes first
	var q = useRegExp ? "/" : "'";
	clearMessage();
	if (!matches.length) {
		if (config.options.chkSearchList) discardSearchResults();
		displayMessage(config.macros.search.failureMsg.format([q+text+q]));
	} else {
		if (config.options.chkSearchList) 
			reportSearchResults(text,matches);
		else {
			var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
			this.closeAllTiddlers(); story.displayTiddlers(null,titles);
			displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
		}
	}
	highlightHack = null;
}
//}}}

//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)
{
	var candidates = this.reverseLookup("tags",excludeTag,false,sortField);

	// scan for matching titles first...
	var results = [];
	if (config.options.chkSearchTitles) {
		for(var t=0; t<candidates.length; t++)
			if(candidates[t].title.search(searchRegExp)!=-1)
				results.push(candidates[t]);
		if (config.options.chkSearchShadows)
			for (var t in config.shadowTiddlers)
				if ((t.search(searchRegExp)!=-1) && !store.tiddlerExists(t))
					results.push((new Tiddler()).assign(t,config.shadowTiddlers[t]));
	}
	// then scan for matching text, tags, or field data
	for(var t=0; t<candidates.length; t++) {
		if (config.options.chkSearchText && candidates[t].text.search(searchRegExp)!=-1)
			results.pushUnique(candidates[t]);
		if (config.options.chkSearchTags && candidates[t].tags.join(" ").search(searchRegExp)!=-1)
			results.pushUnique(candidates[t]);
		if (config.options.chkSearchFields && store.forEachField!=undefined) // requires TW2.1 or above
			store.forEachField(candidates[t],
				function(tid,field,val) { if (val.search(searchRegExp)!=-1) results.pushUnique(candidates[t]); },
				true); // extended fields only
	}
	// then check for matching text in shadows
	if (config.options.chkSearchShadows)
		for (var t in config.shadowTiddlers)
			if ((config.shadowTiddlers[t].search(searchRegExp)!=-1) && !store.tiddlerExists(t))
				results.pushUnique((new Tiddler()).assign(t,config.shadowTiddlers[t]));

	// if not 'titles first', or sorting by modification date,  re-sort results to so titles, text, tag and field matches are mixed together
	if(!sortField) sortField = "title";
	var bySortField=function (a,b) {if(a[sortField] == b[sortField]) return(0); else return (a[sortField] < b[sortField]) ? -1 : +1; }
	if (!config.options.chkSearchTitlesFirst || config.options.chkSearchByDate) results.sort(bySortField);

	return results;
}
//}}}

// // ''REPORT GENERATOR''
//{{{
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
	var title=config.macros.search.reportTitle
	var q = config.options.chkRegExpSearch ? "/" : "'";
	var body="\n";

	// summary: nn tiddlers found matching '...', options used
	body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
	body+="^^//searched in:// ";
	body+=(config.options.chkSearchTitles?"''titles'' ":"");
	body+=(config.options.chkSearchText?"''text'' ":"");
	body+=(config.options.chkSearchTags?"''tags'' ":"");
	body+=(config.options.chkSearchFields?"''fields'' ":"");
	body+=(config.options.chkSearchShadows?"''shadows'' ":"");
	if (config.options.chkCaseSensitiveSearch||config.options.chkRegExpSearch) {
		body+=" //with options:// ";
		body+=(config.options.chkCaseSensitiveSearch?"''case sensitive'' ":"");
		body+=(config.options.chkRegExpSearch?"''text patterns'' ":"");
	}
	body+="^^";

	// numbered list of links to matching tiddlers
	body+="\n<<<";
	for(var t=0;t<matches.length;t++) {
		var date=config.options.chkSearchByDate?(matches[t].modified.formatString('YYYY.0MM.0DD 0hh:0mm')+" "):"";
		body+="\n# "+date+"[["+matches[t].title+"]]";
	}
	body+="\n<<<\n";

	// open all matches button
	body+="<html><input type=\"button\" href=\"javascript:;\" ";
	body+="onclick=\"story.displayTiddlers(null,["
	for(var t=0;t<matches.length;t++)
		body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
	body+="],1);\" ";
	body+="accesskey=\"O\" ";
	body+="value=\"open all matching tiddlers\"></html> ";

	// discard search results button
	body+="<html><input type=\"button\" href=\"javascript:;\" ";
	body+="onclick=\"story.closeTiddler('"+title+"'); store.deleteTiddler('"+title+"'); store.notify('"+title+"',true);\" ";
	body+="value=\"discard "+title+"\"></html>";

	// search again
	body+="\n\n----\n";
	body+="<<search \""+text+"\">>\n";
	body+="<<option chkSearchTitles>>titles ";
	body+="<<option chkSearchText>>text ";
	body+="<<option chkSearchTags>>tags";
	body+="<<option chkSearchFields>>fields";
	body+="<<option chkSearchShadows>>shadows";
	body+="<<option chkCaseSensitiveSearch>>case-sensitive ";
	body+="<<option chkRegExpSearch>>text patterns";
	body+="<<option chkSearchByDate>>sort by date";

	// create/update the tiddler
	var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();
	tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch");
	store.addTiddler(tiddler); story.closeTiddler(title);

	// use alternate "search again" label in <<search>> macro
	var oldprompt=config.macros.search.label;
	config.macros.search.label="search again";

	// render/refresh tiddler
	story.displayTiddler(null,title,1);
	store.notify(title,true);

	// restore standard search label
	config.macros.search.label=oldprompt;

}

if (!window.discardSearchResults) window.discardSearchResults=function()
{
	// remove the tiddler
	story.closeTiddler(config.macros.search.reportTitle);
	store.deleteTiddler(config.macros.search.reportTitle);
}
//}}}
''3 éléments répondent au critère '{{{newhere}}}'''
^^//searched in:// ''titles'' ''text'' ''tags'' ''fields'' ''shadows'' ^^
<<<
# [[NewHerePlugin]]
# [[NouveauIciPlugin]]
# [[ViewTemplate]]
<<<
<html><input type="button" href="javascript:;" onclick="story.displayTiddlers(null,['NewHerePlugin', 'NouveauIciPlugin', 'ViewTemplate'],1);" accesskey="O" value="open all matching tiddlers"></html> <html><input type="button" href="javascript:;" onclick="story.closeTiddler('SearchResults'); store.deleteTiddler('SearchResults'); store.notify('SearchResults',true);" value="discard SearchResults"></html>

----
<<search "newhere">>
<<option chkSearchTitles>>titles <<option chkSearchText>>text <<option chkSearchTags>>tags<<option chkSearchFields>>fields<<option chkSearchShadows>>shadows<<option chkCaseSensitiveSearch>>case-sensitive <<option chkRegExpSearch>>text patterns<<option chkSearchByDate>>sort by date
<<tiddler AutoRefresh on>><<tiddler Article>>
++++![Résumé]
Le texte concerne principalement le débat sur l'enseignement universitaire. A travers la défense de la tradition [[rationaliste|Rationalisme]] occidentale face à la cuture [[postmoderniste|PostModernité]], l'auteur y affirme une [[conception réaliste|Réalisme]] très claire (peut-être même //trop// claire) de la [[connaissance objective|Objectivité]]. Il y énonce six principes de la tradition rationaliste:
*La [[réalité|Réalité]] existe indépendamment de ses [[représentations|Représentation]] humaines.
*L’une au moins des fonctions du langage est de communiquer des [[significations|Signification]] de locuteurs à auditeurs, et parfois, ces significations permettent à la communication de se référer à des [[objets|Objet]] et à des états de choses dans le monde qui existent indépendamment du langage.
*La [[vérité|Vérité]] concerne la [[précision|Précision]] de la représentation.
*La [[connaissance|Connaissance]] est [[objective|Objectivité]].
*La [[logique|Logique]] et la [[rationalité|Rationalité]] sont formelles.
*Les [[standards intellectuels|Normes]] ne sont pas institués pour rien. Ce sont des critères de la création et de la qualité intellectuelles qui sont valides à la fois objectivement et [[intersubjectivement|Intersubjectivité]].
===
!!![[Lire l'article ici|../Searle, John - Rationalité et Réalisme - Qu'est ce qui est en jeu - 1993.html]]
<<tiddler RéférenceArticle>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere>>
----<data>{"nom":"Searle","prénom":"John","initiales":"J","titrearticle":"Rationalité et Réalisme: Qu`est-ce qui est en jeu?","datepublication":"1993","journal":"Daedalus","pagesarticle":"55-83","volumejournal":"(automne 93)"}</data>
{{floatleft{
[img(120px,auto)[John Searle, wikipedia|imagesWiki/john_searle.jpg][http://en.wikipedia.org/wiki/John_Searle]]
}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Searle","prénom":"John","initiales":"J","titrearticle":"Rationalité et Réalisme: Qu`est-ce qui est en jeu?","datepublication":"1993","journal":"Daedalus","pagesarticle":"55-83","volumejournal":"(automne)"}</data>
/***
|Name:|SelectThemePlugin|
|Description:|Lets you easily switch theme and palette|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#SelectThemePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
* Borrows largely from ThemeSwitcherPlugin by Martin Budden http://www.martinswiki.com/#ThemeSwitcherPlugin
* Theme is cookie based. But set a default by setting config.options.txtTheme in MptwConfigPlugin (for example)
* Palette is not cookie based. It actually overwrites your ColorPalette tiddler when you select a palette, so beware. 
!Usage
* {{{<<selectTheme>>}}} makes a dropdown selector
* {{{<<selectPalette>>}}} makes a dropdown selector
* {{{<<applyTheme>>}}} applies the current tiddler as a theme
* {{{<<applyPalette>>}}} applies the current tiddler as a palette
* {{{<<applyTheme TiddlerName>>}}} applies TiddlerName as a theme
* {{{<<applyPalette TiddlerName>>}}} applies TiddlerName as a palette
***/
//{{{

config.macros.selectTheme = {
	label: {
      		selectTheme:"select theme",
      		selectPalette:"select palette"
	},
	prompt: {
		selectTheme:"Select the current theme",
		selectPalette:"Select the current palette"
	},
	tags: {
		selectTheme:'systemTheme',
		selectPalette:'systemPalette'
	}
};

config.macros.selectTheme.handler = function(place,macroName)
{
	var btn = createTiddlyButton(place,this.label[macroName],this.prompt[macroName],this.onClick);
	// want to handle palettes and themes with same code. use mode attribute to distinguish
	btn.setAttribute('mode',macroName);
};

config.macros.selectTheme.onClick = function(ev)
{
	var e = ev ? ev : window.event;
	var popup = Popup.create(this);
	var mode = this.getAttribute('mode');
	var tiddlers = store.getTaggedTiddlers(config.macros.selectTheme.tags[mode]);
	// for default
	if (mode == "selectPalette") {
		var btn = createTiddlyButton(createTiddlyElement(popup,'li'),"(default)","default color palette",config.macros.selectTheme.onClickTheme);
		btn.setAttribute('theme',"(default)");
		btn.setAttribute('mode',mode);
	}
	for(var i=0; i<tiddlers.length; i++) {
		var t = tiddlers[i].title;
		var name = store.getTiddlerSlice(t,'Name');
		var desc = store.getTiddlerSlice(t,'Description');
		var btn = createTiddlyButton(createTiddlyElement(popup,'li'),name ? name : title,desc ? desc : config.macros.selectTheme.label['mode'],config.macros.selectTheme.onClickTheme);
		btn.setAttribute('theme',t);
		btn.setAttribute('mode',mode);
	}
	Popup.show();
	return stopEvent(e);
};

config.macros.selectTheme.onClickTheme = function(ev)
{
	var mode = this.getAttribute('mode');
	var theme = this.getAttribute('theme');
	if (mode == 'selectTheme')
		story.switchTheme(theme);
	else // selectPalette
		config.macros.selectTheme.updatePalette(theme);
	return false;
};

config.macros.selectTheme.updatePalette = function(title)
{
	if (title != "") {
		store.deleteTiddler("ColorPalette");
		if (title != "(default)")
			store.saveTiddler("ColorPalette","ColorPalette",store.getTiddlerText(title),
					config.options.txtUserName,undefined,"");
		refreshAll();
		if(config.options.chkAutoSave)
			saveChanges(true);
	}
};

config.macros.applyTheme = {
	label: "apply",
	prompt: "apply this theme or palette" // i'm lazy
};

config.macros.applyTheme.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var useTiddler = params[0] ? params[0] : tiddler.title;
	var btn = createTiddlyButton(place,this.label,this.prompt,config.macros.selectTheme.onClickTheme);
	btn.setAttribute('theme',useTiddler);
	btn.setAttribute('mode',macroName=="applyTheme"?"selectTheme":"selectPalette"); // a bit untidy here
}

config.macros.selectPalette = config.macros.selectTheme;
config.macros.applyPalette = config.macros.applyTheme;

config.macros.refreshAll = { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
	createTiddlyButton(place,"refresh","refresh layout and styles",function() { refreshAll(); });
}};

//}}}

<<tiddler Article>>

L'auteur cherche à expliquer/décrire l'évolution du naturalisme à son époque. Sans le définir, il l'oppose au supernaturalisme et le lie à la compréhension scientifique du monde qui nous entoure.

Il décrit la connaissance comme un processus d'adaptation au monde où les découvertes (théorie de la relativité, évolution biologique) qui paraissent surprenantes ou incompréhensibles à une génération d'hommes sont assimilées par la suivante.

Il décrit ensuite le naturalisme comme une idée ou une attitude ayant lentement émergé, depuis l'aube des temps.

"Naturalism is unthinkable apart from reflection. Its dawn demanded conditions which were late in arriving. [...] But it is surely obvious that naturalism implies the idea of nature as a realm of definite order and a rejection of the tendency to people the world with invisible agents like unto man. It involves an insight into events, a strong suspicion of the systematic and quasi-mechanical linkage of all changes, an appreciation of the conditions and nature of human behaviour. Such an outlook could arrive only gradually; and is scarcely thinkable apart from science." (p. 314)

Selon Sellars, les primitifs ne connaissaient ni naturalisme ni supernaturalisme, car ils vivaient dans l'ignorance et la stupidité (//primal stupidity//), qu'il associe aux rites, aux mythes et à la magie; car les hommes, pour qui le monde était une énigme, l'interprétaient en termes d'espoirs, peurs et créations imaginaires. Sellars voit l'évolution de l'homme à partir de cet état de 'stupidité primitive' à la lumière de la théorie de l'évolution. Avec les Grecs, l'intelligence et la réflection commencent à s'épanouir. Ils mettent de l'ordre dans les cieux et dans la cité, et ils commencent à chercher à comprendre la nature des choses. "The idea of nature as an orderly realm of events was born." (p. 316) Malheureusement, cet esprit de liberté intellectuelle ne dura pas.

Il associe ensuite le naturalisme à l'épicurisme, et s'interroge sur les raisons pour lesquelles il a disparu: parce que le monde n'était pas encore prêt pour le naturalisme.

Atomisme ancient: "the spirit of rational exploration was there and, with it, a daring in interpretation which must always awaken our admiration. / The soul was for Epicurus a complex of atoms which disintegrated at death when no longer held together by the fleshly wrapping of the body. [...] Man is part of nature. He comes to birth like the plants and like other animals, and after his little span of life disappears." (p. 321)

Il présente vraiment le naturalisme comme une conquête de l'esprit humain, à la poursuite de la vérité, sur la superstition et les mythes qui ont dominé la pensée de l'humanité durant une grande partie de son histoire. C'est une entreprise héroique.

"Only for a brief time, then, were social conditions and the state of men's minds favorable to free inquiry and to naturalistic humanism. The Greek intellect had its short period of bloom in the free city-state and proved what it could accomplish in the way of daring analysis." (p. 324)

Après le récit de la grande épopée de la raison, Sellars distingue deux types de naturalisme: subjectif et objectif.
* "In subjective naturalism we withness the attempt to assimilate man to nature, to demonstrate that there is nothing in his make-up that resists this assignment. [...] The method adopted was reduction. Psychology was to become physiology; physiology, chemistry; and chemistry, physics. By such a process of repeated translation the assimilation of man was to be accomplished. That nature itself contained natural levels so that assimilation by reduction could only be carried through by being untrue to nature was not grasped. Dead-level mechanicalism forced a Procrustean bed upon naturalism; gave it a false task and ideal. And its lack of success lowered its prestige." (p. 329)
* "In objective naturalism we find the rejection of any interference with nature from the outside. Nature was ever more clearly conceived as a closed system." (p. 329)

"In psychology, logic, and theory of knowledge, we find the alliance of subjective naturalism with empiricism. In modern thought this movement found its first important protagonists in British philosophy. Sensationalism and associationism were directed against rationalism. Sense-impressions are regarded as the standard. What is not reducible to them is in some fashion non-natural and fictitious. [...] Motivating this outlook was the protest against the traditional idea of reason as innate and distinct from sense. The result was too hasty empiricism which tended to reject reason rather than to naturalize it. [...] In these tendencies we have the more or less counscious attempt to assimilate man to nature without a remainder; to treat mind as an atomistic or mechanical system as atomism and mechanism were then conceived. In short, naturalism reflected the current, non-evolutionary view of nature." (p. 330)

Ces tentatives, fussent-elles erronées, sont des pas nécessaires vers la vérité, car les progrès de la pensée sont progressifs et cumulatifs.

"If with the history of science and the results of science before us we pass straight on to the construction of a philosophy, idealism has no chance. But, in truth, 'modern science' hardly needs to //construct// its philosophy; for, without any conscious labor on its part, the naturalistic view of the world seems to stand out clearly of itself." (James Ward, //Naturalism and Agnosticism//, Preface; cité par Sellars, p. 332)

"Objective naturalism opposed itself to supernaturalism.[...] Thus we have the deism of the seventeenth and eighteenth centuries, which held nature to be a self-sufficient system which God had created and set going, but with whose working he did not interfere. United with this outlook was the distaste for revelation and the confidence in human reason. [...] We must not forget that other forms of naturalism adopted a pantheistic approach which tried to identify God with nature. [...] Farther to the left in this movement came the stricter form called 'materialism.'". (p. 333)

L'apparition de la théorie de l'évolution au XIXe siècle a permis un pas supplémentaire dans la voie du naturalisme qui, avec le matérialisme, se trouvait dans une impasse: "And so we are brought to the frare-up of naturalism in the nineteenth century which accompanied the promulgation of a specific theory of biological evolution. [...] Soon psychology joined hands with biology and began to investigate more deeply the origin and structure of human nature. In this junction, the doom of the dualism between mind and body was prefigured." (p. 334)

"[...] the significant impact of evolution was along the line of objective naturalism rather than that of subjective naturalism. It removed the organism from its former isolation from the rest of nature; gave it attachments and conditions. Cartesian dualism was soon seen to be no longer possible. Man is a bit of this earth; at once a product and a denizen of nature." (p. 334)

"The situation which confronts the human mind today is dramatic to the highest degree. Science has gained an increasing momentum because it investigates the world from the vantage point of centuries of discovery and of improvement in technique. And this is as true of the biological sciences as of the basic chemical and physical sciences. The prestige which science has gained on both theoretical and practical counts renders it almost impregnable. But there can be no question that the recognized implications of science are naturalistic in the extreme. That the organism is in some sense a physicochemical system is almost an axiom of research." (p. 335)

L'auteur termine en associant le naturalisme à l'humanisme.

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom","")
   var prénom=DataTiddler.getData(titre,"prénom","")
   var initiales=DataTiddler.getData(titre,"initiales","")
   var titrearticle=DataTiddler.getData(titre,"titrearticle","")
   var datepublication=DataTiddler.getData(titre,"datepublication","")
   var journal=DataTiddler.getData(titre,"journal","")
   var volumejournal=DataTiddler.getData(titre,"volumejournal","")
   var numérojournal=DataTiddler.getData(titre,"numérojournal","")
   var pagesarticle=DataTiddler.getData(titre,"pagesarticle","")
   return "|bgcolor(#ffff99): "+nom+", "+initiales+" ("+datepublication+"): '"+titrearticle+"', //"+journal+"// ''"+volumejournal+"''("+numérojournal+"):"+pagesarticle+"|[img[Fichier attaché |iconesWiki/pdf.gif][file:../../Mis textos/Sellars, Roy Wood - The Emergence of Naturalism - 1924.pdf]]|";
</script>
----
+++[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var pagescitation=DataTiddler.getData(titre,"pagescitation")
   return nom+", "+initiales+" "+datepublication+":"+pagescitation;
</script>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
----
===<<newNoteHere>><data>{"titrearticle":"The Emergence of Naturalism","datepublication":"1924","journal":"International Journal of Ethics","volumejournal":"34","numérojournal":"4","pagesarticle":"309-338","nom":"Sellars","prénom":"Roy Wood","initiales":"RW"}</data>
{{floatleft{[img(120px,auto)[Roy Wood Sellars|./imagesWiki/roy-wood-sellars.jpg]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Sellars","prénom":"Roy Wood","initiales":"RW"}</data>
[[Catégories "naturelles" mais pas "réalistes"]]
[[Rosch, E (1973): "Natural Categories"]]
[[Catégorisation des couleurs et des formes: stimuli saillants et prototypes naturels]]
[[NouvelAuteur]]
[[ListesMémoire]]
[[ApprocheEtiologique]]
/%
|Name|ShowLocalDirectory|
|Source|http://www.TiddlyTools.com/#ShowLocalDirectory|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|view local filesystem directory listings|

usage: <<tiddler ShowLocalDirectory>> or <<tiddler ShowLocalDirectory with: localpath format>>

where:
	"localpath" is the desired directory to view, using system-specific file naming conventions,
	or keyword "here" to view the current document directory.
and
	"format" is a keyword that determines the type of output produced, and is one of:
		"plain"
			show fully-qualified path/filenames AS-IS, without any additional formatting.
		"list"
			show fully-qualified path/filenames using formatted "PrettyLinks", so that the
			local system-specific filename can be *displayed* while linking to a valid
			system-independent "file:" URL for browser navigation.
		"directory" (default when no parameter)
			show header followed by a formatted table, containing PrettyLinks for
			filenames, filesizes (in bytes), and modification dates, plus a summary
			footer reporting the total file and byte counts.

%/<script>

	// FILESYSTEM/FOLDER UTILITY FUNCTIONS

	window.getCurrentFolder=function() {
		var h=document.location.href;
		return getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
	}

	window.getParentFolder=function(cwd) {
		var lastchar=cwd.substr(cwd.length-1,1);
		if (lastchar=="/" || lastchar=="\\") cwd=cwd.substr(0,cwd.length-1);
		var pos=cwd.lastIndexOf("/"); if (pos==-1) pos=cwd.lastIndexOf("\\");
		return pos!=-1?cwd.substr(0,pos+1):null;
	}

	window.askForFolder=function(cwd) {
		if (config.browser.isIE) {
			try { // XPSP2 IE only --   // TBD: use "browserForFolder" instead of "select a file"
				var s = new ActiveXObject('UserAccounts.CommonDialog');
				s.InitialDir=cwd.replace(/\//g,"\\");
				s.FileName=''; s.Filter='All files|*.*|'; s.FilterIndex=1;
				var path=s.showOpen()?s.FileName.substr(0,s.FileName.lastIndexOf("\\")+1):null;
			}
			catch(e) { var path=prompt("Enter a directory path:",cwd.replace(/\//g,"\\"));	}
		} else { // FireFox
			// get security access
			if(!window.Components) return;
			try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
			catch(e) { alert(e.description?e.description:e.toString()); return; }
			// prompt to select a different folder
			var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
			var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
			picker.init(window, "Select a folder", nsIFilePicker.modeGetFolder);
			var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
			// if starting directory is not valid, use current document directory
			try { thispath.initWithPath(cwd.replace(/\\/g,"/")); }
			catch(e) { thispath.initWithPath(getLocalPath(decodeURIComponent(document.location.href.substr(0,document.location.href.lastIndexOf("/")+1)))); }
			picker.displayDirectory=thispath;
			picker.appendFilters(nsIFilePicker.filterAll); picker.defaultString=''; picker.defaultExtension=''; 
			var path=picker.show()!=nsIFilePicker.returnCancel?picker.file.persistentDescriptor:null;
		}
	}

	window.getFileList=function(cwd) { // return browser-independent array of file info (path,name,size,isFolder,url,modified)
		var files=[];
		if (config.browser.isIE) {
			cwd=cwd.replace(/\//g,"\\");
			// IE uses ActiveX to read filesystem info
			var fso = new ActiveXObject("Scripting.FileSystemObject");
			if(!fso.FolderExists(cwd)) return [];
			var dir=fso.GetFolder(cwd);
			for(var f=new Enumerator(dir.SubFolders); !f.atEnd(); f.moveNext())
				files.push({ path:f.item().path, name:f.item().name, size:f.item().size,
					url:"file:///"+f.item().path.replace(/\\/g,"/"), isFolder:fso.FolderExists(f.item().path),
					modified:new Date(f.item().DateLastModified).formatString("YYYY.0MM.0DD 0hh:0mm:0ss")});
			for(var f=new Enumerator(dir.Files); !f.atEnd(); f.moveNext())
				files.push({ path:f.item().path, name:f.item().name, size:f.item().size,
					url:"file:///"+f.item().path.replace(/\\/g,"/"), isFolder:fso.FolderExists(f.item().path),
					modified:new Date(f.item().DateLastModified).formatString("YYYY.0MM.0DD 0hh:0mm:0ss")});
		} else {
			// FireFox (mozilla) uses "components" to read filesystem info
			// get security access
			if(!window.Components) return;
			try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
			catch(e) { alert(e.description?e.description:e.toString()); return null; }
			// open/validate directory
			var file=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
			try { file.initWithPath(cwd); } catch(e) { return []; }
			if (!file.exists() || !file.isDirectory()) { return []; }
			var folder=file.directoryEntries;
			while (folder.hasMoreElements()) {
				var f=folder.getNext().QueryInterface(Components.interfaces.nsILocalFile);
				if (f instanceof Components.interfaces.nsILocalFile)
					files.push({path:f.path, name:f.leafName, size:f.fileSize,
						isFolder:f.isDirectory(), url:"file:///"+f.path.replace(/\\/g,"/"),
						modified:new Date(f.lastModifiedTime).formatString("YYYY.0MM.0DD 0hh:0mm:0ss")});
			}
		}
		return files;
	}

</script>{{hidden small{
<script label="select a folder...">
	var path=askForFolder(config.options.txtLocalDirectory);
	if (path) { // not cancelled by user...
		config.options.txtLocalDirectory=path;
		story.refreshTiddler(story.findContainingTiddler(place).getAttribute("tiddler"),null,true);
	}
	return false;
</script> | <script label="use document location...">
	config.options.txtLocalDirectory=getCurrentFolder();
	story.refreshTiddler(story.findContainingTiddler(place).getAttribute("tiddler"),null,true);
	return false;
</script> | <script label="refresh list...">
	story.refreshTiddler(story.findContainingTiddler(place).getAttribute("tiddler"),null,true);
	return false;
</script>
----
}}}<script>
	// default to current location if not already set
	if (config.options.txtLocalDirectory==undefined) config.options.txtLocalDirectory=getCurrentFolder();
	// get working directory from tiddler params (if specified)
	var cwd=config.options.txtLocalDirectory; // use current selected directory
	if ("$1"=="$"+"1") place.lastChild.style.display="block"; // show interactive 'select a folder' commands
	else if ("$1".toLowerCase()=="here") cwd=getCurrentFolder(); // "here" = use document directory
	else cwd="$1"; // use path param as specified
	// get file list
	var files=getFileList(cwd);
	if (!files.length) { // directory could not be read, maybe relative... try again...
		var fixup=getCurrentFolder()+cwd;
		var files=getFileList(fixup);
		if (!files.length) return "{{errorButton{error: can't open "+cwd+"}}}";
		else cwd=fixup;
	}
	// set output formats
	var header=""; var item=""; var folderitem=""; var folderscript=""; var footer="";
	switch ("$2") {
		case "plain": item=folderitem="<nowiki>%0</nowiki>\n"; break;
		case "list": item=folderitem="[[%1|file:///%0]]\n"; break;
		default:
			var header="Index of %0\n^^(as of %1)^^\n|filename&nbsp;&nbsp;| size&nbsp;&nbsp;|modified|h\n";
			var item="|[[%1|%2]]&nbsp;&nbsp;| %3&nbsp;&nbsp;|%4|\n";
			// script for opening another directory via embedded link
			var folderscript='<'+'script label="%1" title="open %1...">';
			folderscript+='		config.options.txtLocalDirectory="%0";';
			folderscript+='		story.refreshTiddler(story.findContainingTiddler(place).getAttribute("tiddler"),null,true);';
			folderscript+='		return false;';
			folderscript+='	</'+'script>';
			var folderitem='|'+folderscript+'&nbsp;&nbsp;| |%4|\n';
			var footer="|>|>|>| !Total of %0 bytes in %1 files |f\n|borderless sortable|k\n";
			var showDirectory=true;
			break;
	}
	// generate header (if any)
	var out=header.format([cwd,new Date().toLocaleString()]);
	// add "parent folder" (if any) - for directory listings
	if (showDirectory) { 
		var p=getParentFolder(cwd);
		if (p) files.unshift({path:p, name:"(parent folder)", size:0, isFolder:true, url:"file:///"+p.replace(/\\/g,"/"),
			modified:new Date().formatString("YYYY.0MM.0DD 0hh:0mm:0ss")});
	}
	// for each file, generate a line item (and add up total size)
	var total=0;
	for (var i=0; i<files.length; i++) {
		var line=(files[i].isFolder?folderitem:item).format([files[i].path,files[i].name,files[i].url,files[i].size,files[i].modified]);
		if (showDirectory) line=line.replace(/\\/g,"\\\\"); // fixup for PC-style file paths embedded in 'folderscript'
		if (!files[i].isFolder) total+=files[i].size;
		out+=line;
	}
	// generate the summary (if any)
	out+=footer.format([total,files.length]);
	return out;
</script>
<<search>>[[dossier local|ShowLocalDirectory]]<<slider chkSliderNuevoTiddler NouveauTiddler "nouveau tiddler »" "Créer un nouveau tiddler">><<closeAll>><<permaview>>[>img[tooltip|IconeEnregistrer]]<<saveChanges>><<tiddler TspotSidebar>><<slider chkSliderSessions SauvegarderSessions "sessions »" "Sauvegarder ou restaurer une session">><<slider chkSliderOptionsPanel OptionsPanel "options  »" "Modifie les options supplémentaires de ce bloc-notes TiddlyWiki">>
+++(listes)[. listes »]
<<tabs txtMainTab "Chrono" "Affichage chronologique" TabTimeline "Alpha" "Liste alphabétique des éléments" TabAll "Mot-clé" "Liste de tous les mot-clés" TabTags "Autres" "Autres listes" TabMore>>
===
<<tiddler Concepts>>
<<formTiddler SimpleFormTemplate>><data>{"userName":"AliceInWonder","pwd":"abcd"}</data>
<<formTiddler SimpleFormTemplate>><data>{"userName":"Bob","pwd":"1234"}</data>
<<formTiddler SimpleFormTemplate>><data>{"userName":"Cedric","pwd":"4321"}</data>
<html>
 <sub><b>Name:</b></sub><br/>
 <input name=userName type=text /><br/>
 <sub><b>Password:</b></sub><br/>
 <input name=pwd type=password /><br/>
</html>
[[Card 1|SimpleForm (Card 1)]] - [[Card 2|SimpleForm (Card 2)]] - [[Card 3|SimpleForm (Card 3)]]

~~(This is an example form, using the form template SimpleFormTemplate and the FormTiddlerPlugin.)~~
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.5|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.displayTiddler(), Story.prototype.displayTiddlers()|
|Options|##Configuration|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.06.12 [2.9.5] corrected 'scroll to top of page' logic in auto-scroll handling
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 [1.0.0] Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 5, date: new Date(2008,6,12)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
	config.options.chkSinglePageMode=eval(v);
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
	config.options.chkSinglePageMode=false;
if (config.options.chkSinglePagePermalink==undefined)
	config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
	config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
	config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
	config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
	config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
	config.options.chkSinglePageAutoScroll=true;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
		story.displayTiddler(null,tids[0]);
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
		story.closeAllTiddlers();
		story.displayTiddlers(null,tids);
	}
}

if (Story.prototype.SPM_coreDisplayTiddler==undefined)
	Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed
	var opt=config.options;
	var single=opt.chkSinglePageMode && !startingUp;
	var top=opt.chkTopOfPageMode && !startingUp;
	var bottom=opt.chkBottomOfPageMode && !startingUp;
	if (single) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
				return;
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				if (opt.chkSinglePageKeepEditedTiddlers) return;
				// if tiddler to be displayed is already shown, then leave active tiddler editor as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
			}
			story.closeTiddler(tid);
		});
	}
	else if (top)
		arguments[0]=null;
	else if (bottom)
		arguments[0]="bottom";
	if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (single || top))
			tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
		else if (bottom)
			tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=document.getElementById(story.idPrefix+title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		// scroll to top of page or top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
		// if animating, defer scroll until 200ms after animation completes
		var delay=opt.chkAnimate?config.animDuration+200:0;
		setTimeout("window.scrollTo(0,"+yPos+")",delay); 
	}
}

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
	Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
	this.SPM_coreDisplayTiddlers.apply(this,arguments);
	opt.chkBottomOfPageMode=saveBPM;
	opt.chkTopOfPageMode=saveTPM;
	opt.chkSinglePageMode=saveSPM;
}
//}}}
/***
|Name|SinglePageModePluginInfo|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.5|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for SinglePageModePlugin|
Normally, as you click on the links in TiddlyWiki, more and more tiddlers are displayed on the page. The order of this tiddler display depends upon when and where you have clicked. Some people like this non-linear method of reading the document, while others have reported that when many tiddlers have been opened, it can get somewhat confusing.  SinglePageModePlugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one item displayed at a time.
!!!!!Usage
<<<
When the plugin is enabled, only one tiddler will be displayed at a time and the browser window's titlebar is updated to include the current tiddler title.  The browser's location URL is also updated with a 'permalink' for the current tiddler so that it is easier to create a browser 'bookmark' for the current tiddler.  Alternatively, even when displaying multiple tiddlers //is// permitted, you can still reduce the potential for confusion by forcing  tiddlers to always open at the top (or bottom) of the page instead of being displayed following the tiddler containing the link that was clicked.
<<<
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* {{block{
The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}. You can also use {{{SPM:expression}}}, where 'expression' is any javascript statement that evaluates to true or false.  This allows you to create hard-coded links in other documents that can selectively enable/disable the use of this option based on various programmatic conditions, such as the current username. For example, using
&nbsp;&nbsp;&nbsp;{{{#SPM:config.options.txtUserName!="SomeName"}}}
enables 'one tiddler at a time' display for all users //other than// "~SomeName")}}}
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.06.12 [2.9.5] corrected 'scroll to top of page' logic in auto-scroll handling
2008.06.11 [2.9.4] added chkSinglePageKeepEditedTiddlers option
2008.06.05 [2.9.3] in displayTiddler(), bypass single/top/bottom mode handling if startingUp.  Allows multiple tiddlers to be displayed during startup processing (e.g., #story:DefaultTiddlers), even if single/top/bottom mode is enabled.
2008.04.18 [2.9.2] in displayTiddler() and checkLastURL(), handling for Unicode in tiddler titles (remove explicit conversion between Unicode and UTF, as this is apparently done automatically by encode/decodeURIComponent, resulting in double-encoding!
2008.04.08 [2.9.1] don't automatically add options to AdvancedOptions shadow tiddler
2008.04.02 [2.9.0] in displayTiddler(), when single-page mode is in use and a tiddler is being edited, ask for permission to save-and-close that tiddler, instead of just leaving it open.
2008.03.29 [2.8.3] in displayTiddler(), get title from tiddler object (if needed).  Fixes errors caused when calling function passes a tiddler *object* instead of a tiddler *title*
2008.03.14 [2.8.2] in displayTiddler(), if editing specified tiddler, just move it to top/bottom of story *without* re-rendering (prevents discard of partial edits).
2008.03.06 [2.8.1] in paramifier handler, start 'checkURL' timer if chkSinglePageMode is enabled
2008.03.06 [2.8.0] added option, {{{config.options.chkSinglePageKeepFoldedTiddlers}}}, so folded tiddlers won't be closed when using single-page mode.  Also, in checkURL(), if hash is a ''permaview'' (e.g., "#foo bar baz"), then display multiple tiddlers rather than attempting to display "foo bar baz" as a single tiddler
2008.03.05 [2.7.0] added support for "SPM:" URL paramifier
2008.03.01 [2.6.0] in hijack of displayTiddler(), added 'title' argument to closeAllTiddlers() so that target tiddler isn't closed-and-reopened if it was already displayed.  Also, added config.options.chkSinglePageAutoScrolloption to bypass automatic 'scroll into view' logic (note: core still does it's own ensureVisible() handling)
2007.12.22 [2.5.3] in checkLastURL(), use decodeURIComponent() instead of decodeURI so that tiddler titles with commas (and/or other punctuation) are correctly handled.
2007.10.26 [2.5.2] documentation cleanup
2007.10.08 [2.5.1] in displayTiddler(), when using single-page or top-of-page mode, scrollTo(0,0) to ensure that page header is in view.
2007.09.13 [2.5.0] for TPM/BPM modes, don't force tiddler to redisplay if already shown.  Allows transition between view/edit or collapsed/view templates, without repositioning displayed tiddler.
2007.09.12 [2.4.0] added option to disable automatic permalink feature.  Also, Safari is now excluded from permalinking action to avoid bug where tiddlers don't display after hash is updated.
2007.03.03 [2.3.1] fix typo when adding BPM option to AdvancedOptions (prevented checkbox from appearing)
2007.03.03 [2.3.0] added support for BottomOfPageMode (BPM) based on request from DaveGarbutt
2007.02.06 [2.2.3] in Story.prototype.displayTiddler(), use convertUnicodeToUTF8() for correct I18N string handling when creating URL hash string from tiddler title (based on bug report from BidiX)
2007.01.08 [2.2.2] use apply() to invoke hijacked core functions
2006.07.04 [2.2.1] in hijack for displayTiddlers(), suspend TPM as well as SPM so that DefaultTiddlers displays in the correct order.
2006.06.01 [2.2.0] added chkTopOfPageMode (TPM) handling
2006.02.04 [2.1.1] moved global variable declarations to config.* to avoid FireFox 1.5.0.1 crash bug when assigning to globals
2005.12.27 [2.1.0] hijack displayTiddlers() so that SPM can be suspended during startup while displaying the DefaultTiddlers (or #hash list).  Also, corrected initialization for undefined SPM flag to "false", so default behavior is to display multiple tiddlers
2005.12.27 [2.0.0] Update for TW2.0
2005.11.24 [1.1.2] When the back and forward buttons are used, the page now changes to match the URL.  Based on code added by Clint Checketts
2005.10.14 [1.1.1] permalink creation now calls encodeTiddlyLink() to handle tiddler titles with spaces in them
2005.10.14 [1.1.0] added automatic setting of window title and location bar ('auto-permalink').  feature suggestion by David Dickens.
2005.10.09 [1.0.1] combined documentation and code in a single tiddler
2005.08.15 [1.0.0] Initial Release
<<<
/***
| Name:|SiteMapMacro|
| Author:|Simon Baird|
| Location:|http://simonbaird.com/mptw/#SiteMapMacro|
| Version:|1.0.3, 15-Mar-06|

!!Examples
See SiteMap and SliderSiteMap for example usage.

!!Parameters
* Name of tiddler to start at
* Max depth (a number) 
* Format (eg, nested, see formats below)
* Don't show root flag (anything other than null turns it on)
* Tags - a string containing a bracketed list of tags that we are interested in

!!History
* 1.0.3 (15-Mar-06)
** added tag filtering
* 1.0.2 (15-Mar-06)
** Added json format and dontshowroot option
* 1.0.1 (9-Mar-06)
** Added selectable formats and fixed nested slider format
* 1.0.0 (8-Mar-06)
** first release

***/
//{{{

version.extensions.SiteMapMacro = {
	major: 1,
	minor: 0,
	revision: 3,
	date: new Date(2006,3,15),
	source: "http://simonbaird.com/mptw/#SiteMapMacro"
};

config.macros.siteMap = {

	formats: {
		bullets: {
			formatString: "%0[[%1]]\n%2",
			indentString: "*"
		},

		// put this in your StyleSheet to make it look good.
		// .sliderPanel { margin-left: 2em; }

		sliders: {
			formatString: "[[%1]]+++\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},

		openSliders: {
			formatString: "[[%1]]++++\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},

		popups: {
			formatString: "[[%1]]+++^\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},

		// these don't work too well
		openPopups: {
			formatString: "[[%1]]++++^\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},
		
		// this is a little nuts but it works
		json: {
			formatString: '\n%0{"%1":[%2\n%0]}',
			formatStringLeaf: '\n%0"%1"',
			indentString: "  ",
			separatorString: ","
		}


	},

	defaultFormat: "bullets",

	treeTraverse: function(title,depth,maxdepth,format,dontshowroot,tags,excludetags) {

		var tiddler = store.getTiddler(title);
		var tagging = store.getTaggedTiddlers(title);

		if (dontshowroot)
			depth = 0;

		var indent = "";
		if (this.formats[format].indentString)
			for (var j=0;j<depth;j++)
				indent += this.formats[format].indentString;

		var childOutput = "";
		if (!maxdepth || depth < parseInt(maxdepth)) 
			for (var i=0;i<tagging.length;i++)
				if (tagging[i].title != title) {
					if (this.formats[format].separatorString && i != 0)
						childOutput += this.formats[format].separatorString;
					childOutput += this.treeTraverse(tagging[i].title,depth+1,maxdepth,format,null,tags,excludetags);
				}

		if (childOutput == "" && (
				(tags && tags != "" && !tiddler.tags.containsAll(tags.readBracketedList())) ||
				(excludetags && excludetags != "" && tiddler.tags.containsAny(excludetags.readBracketedList()))
				)
			) {
			// so prune it cos it doesn't have the right tags and neither do any of it's children
			return "";
		}

		if (dontshowroot)
			return childOutput;

		if (this.formats[format].formatStringLeaf && childOutput == "") {
			// required for nestedSliders
			return this.formats[format].formatStringLeaf.format([indent,title,childOutput]);
		}

		return this.formats[format].formatString.format([indent,title,childOutput]);
	},

	handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		wikify(this.treeTraverse(
			params[0] && params[0] != '.' ? params[0] : tiddler.title, 1, 
			params[1] && params[1] != '.' ? params[1] : null, // maxdepth
			params[2] && params[2] != '.' ? params[2] : this.defaultFormat, // format
			params[3] && params[3] != '.' ? params[3] : null, // dontshowroot
			params[4] && params[4] != '.' ? params[4] : null, // tags
			params[5] && params[5] != '.' ? params[5] : null // excludetags
			),place);
	}

}

//}}}
mon petit wiki perso ! (~TiddlyWiki <<version>>)
[img[iconesWiki/Livres.ico][ListesMémoire]] //WikiPhilo//

/***
|''Name:''|SplashScreenPlugin|
|''Description:''|Provides a splash screen that consists of the rendered default tiddlers|
|''Author:''|Martin Budden|
|''~CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/plugins/SplashScreenPlugin.js |
|''Version:''|0.1.4|
|''Date:''|April 17, 2008|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]] |
|''~CoreVersion:''|2.4|

!!Description
Provides a splash screen that consists of the default tiddlers while TiddlyWiki is loading

!!Usage
!!TODO describe how to use the plugin - how a user should include it in their TiddlyWiki, parameters to the plugin etc

***/

//{{{
if(!version.extensions.SplashScreenPlugin) {
version.extensions.SplashScreenPlugin = {installed:true};

//config.macros.splashScreen = {};
//config.macros.splashScreen.init = function()
version.extensions.SplashScreenPlugin.setup = function()
{
	if(store.tiddlerExists("MarkupPostHead"))
		return;

	var text = "<!--{{{-->\n";
	text += "<style type=\"text/css\">\n";
	text += "#contentWrapper {display:none;}\n";
	text += "#splashScreen {display:block;}\n";

	var cp = "ColorPalette";
	var bg = store.getTiddlerSlice(cp,"Background");
	var fg = store.getTiddlerSlice(cp,"Foreground");
	var pp = store.getTiddlerSlice(cp,"PrimaryPale");
	var pl = store.getTiddlerSlice(cp,"PrimaryLight");
	var pm = store.getTiddlerSlice(cp,"PrimaryMid");
	var pd = store.getTiddlerSlice(cp,"PrimaryDark");
	var sp = store.getTiddlerSlice(cp,"SecondaryPale");
	var sl = store.getTiddlerSlice(cp,"SecondaryLight");
	var sm = store.getTiddlerSlice(cp,"SecondaryMid");
	var sd = store.getTiddlerSlice(cp,"SecondaryDark");
	var tp = store.getTiddlerSlice(cp,"TertiaryPale");
	var tl = store.getTiddlerSlice(cp,"TertiaryLight");
	var tm = store.getTiddlerSlice(cp,"TertiaryMid");
	var td = store.getTiddlerSlice(cp,"TertiaryDark");
	var er = store.getTiddlerSlice(cp,"Error");

	var sc = store.getTiddlerText("StyleSheetColors");
	sc += "\n" + store.getTiddlerText("StyleSheetLayout") + "\n";
	sc += "\n#splashScreen {display:block;}\n";

	sc += "\n" + store.getTiddlerText("StyleSheet") + "\n";
	sc = sc.replace(/#/mg,"#s_");
	sc = sc.replace("[[ColorPalette::Background]]",bg);
	sc = sc.replace("[[ColorPalette::Foreground]]",fg);
	sc = sc.replace("[[ColorPalette::PrimaryPale]]",pp);
	sc = sc.replace("[[ColorPalette::PrimaryLight]]",pl);
	sc = sc.replace("[[ColorPalette::PrimaryMid]]",pm);
	sc = sc.replace("[[ColorPalette::PrimaryDark]]",pd);
	sc = sc.replace("[[ColorPalette::SecondaryPale]]",sp);
	sc = sc.replace("[[ColorPalette::SecondaryLight]]",sl);
	sc = sc.replace("[[ColorPalette::SecondaryMid]]",sm);
	sc = sc.replace("[[ColorPalette::SecondaryDark]]",sd);
	sc = sc.replace("[[ColorPalette::TertiaryPale]]",tp);
	sc = sc.replace("[[ColorPalette::TertiaryLight]]",tl);
	sc = sc.replace("[[ColorPalette::TertiaryMid]]",tm);
	sc = sc.replace("[[ColorPalette::TertiaryDark]]",td);
	sc = sc.replace("[[ColorPalette::Error]]",er);
	
	text += sc;
	text += "#s_messageArea {display:none;}\n";
	text += "\n</style>\n";
	text += "<!--}}}-->\n";
	var tiddler = store.createTiddler("MarkupPostHead");
	tiddler.set(tiddler.title,text,config.options.txtUserName,null,"excludeLists excludeSearch");

	var sitetitle = store.getTiddlerText("SiteTitle");
	var sitesubtitle = store.getTiddlerText("SiteSubtitle");
	var pt = store.getTiddlerText("PageTemplate");
	pt = pt.replace(/<span class='siteTitle' refresh='content' tiddler='SiteTitle'><\/span>/mg,"<span class=\"siteTitle\">"+sitetitle+"</span>");
	pt = pt.replace(/<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'><\/span>/mg,"<span class=\"siteSubtitle\">"+sitesubtitle+"</span>");
	pt = pt.replace(/<!--\{\{\{-->/mg,"").replace(/<!--\}\}\}-->/mg,"");
	pt = pt.replace(/<div id='/mg,"<div id='s_");

	text = "";
	var filter = store.getTiddlerText("SplashTiddlers") || store.getTiddlerText("DefaultTiddlers");
	tiddlers = store.filterTiddlers(filter);
	for(i=0;i<tiddlers.length;i++) {
		tiddler = tiddlers[i];
		var title = tiddler.title;
		var tiddlerElem = createTiddlyElement(null,"div","tempId"+tiddler.title,"tiddler");
		tiddlerElem.style.display = "none";
		tiddlerElem.setAttribute("refresh","tiddler");
		var template = story.chooseTemplateForTiddler(title);
		var t = story.getTemplateForTiddler(title,template,tiddler);
		t = t.replace(/<div class=['"]toolbar[^<]*<\/div>/mg,"<div class=\"toolbar\"><br /></div>");
		t = t.replace(/<div class=['"]tagging['"][^>]*><\/div>\n/mg,"");
		t = t.replace(/<div class=['"]tagged['"][^>]*><\/div>\n/mg,"");
		tiddlerElem.innerHTML = t;
		applyHtmlMacros(tiddlerElem,tiddler);
		text += '<div id="splashId_' + tiddler.title + '" class="tiddler">\n';
		t = tiddlerElem.innerHTML;
		// remove all tiddler links
		t = t.replace(/<a tiddlylink=[^>]*>([^<]*)<\/a>/mg,"$1");
		t = t.replace(/<a tiddlyfields=[^>]*>([^<]*)<\/a>/mg,"$1");
		text += t + '\n</div>\n';
	}
	text = text.replace(/<!--\{\{\{-->/mg,"").replace(/<!--\}\}\}-->/mg,"");

	var splash = "<!--{{{-->\n\n";
	splash += "<div id=\"splashScreen\">\n";
	pt = pt.replace(/<div id='s_tiddlerDisplay'><\/div>/mg,"<div id=\"s_tiddlerDisplay\">"+text+"</div>");
	splash += pt;

	splash += "</div>\n";
	splash += "<!--}}}-->\n\n";
	splash += '<script type="text/javascript">\ndocument.getElementById("splashScreen").style.display="none";\n</script>\n';

	tiddler = store.createTiddler("MarkupPreBody");
	tiddler.set(tiddler.title,splash,config.options.txtUserName,null,"excludeLists excludeSearch");

	store.setDirty(true);
};

version.extensions.SplashScreenPlugin.saveChanges = saveChanges;
function saveChanges()
{
	version.extensions.SplashScreenPlugin.setup();
	version.extensions.SplashScreenPlugin.saveChanges();
}

} //# end of 'install only once'
//}}}
|vertical-align:bottom;<<tiddler ToggleRightSidebar>>|<<tiddler NavButtons>>|vertical-align:bottom;[[Open in a new window|http://plato.stanford.edu/entries/teleology-biology/]]&nbsp;&raquo;|
<html><div align="center"><iframe src ="http://plato.stanford.edu/" frameborder="0" width="100%" align="center" height="600"></iframe></div></html>
/***
|Name|StorySaverPlugin|
|Source|http://www.TiddlyTools.com/#StorySaverPlugin|
|Documentation|http://www.TiddlyTools.com/#StorySaverPluginInfo|
|Version|1.4.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|MarkupPostBody|
|Overrides|confirmExit(), getParameters()|
|Description|save/restore current tiddler view between browser sessions|
This plugin automatically saves a list of the currently viewed tiddlers (the "story") in a local cookie, {{{txtSavedStory}}} and then opens those tiddlers when the document is subsequently reloaded... the tiddlers you were viewing in the last browser session are automatically redisplayed in the next session, allowing you to quickly resume working with the document from the same place you left off!!

In addition to automatic cookie-based story tracking, the plugin also provides {{{<<saveStory>>}}} and {{{<<openStory>>}}} macros that allow you to quickly save the current story definition to a tiddler, and then re-display saved stories using simple, one-click command links or droplists.
!!!!!Documentation
>see [[StorySaverPluginInfo]]
!!!!!Revisions
<<<
2008.07.11 [1.4.2] in confirmExit(), corrected bracketing for titles containing spaces
2008.03.10 [*.*.*] plugin size reduction: documentation moved to [[StorySaverPluginInfo]]
|please see [[StorySaverPluginInfo]] for additional revision details|
2007.10.05 [1.0.0] initial release.   Moved [[SetDefaultTiddlers]] inline script and rewrote as a {{{<<saveStory>>}}} macro.
<<<
!!!!!Code
***/
//{{{
version.extensions.StorySaver= {major: 1, minor: 4, revision: 2, date: new Date(2008,7,11)};
//}}}
// // ''save or clear story cookie on exit:''
//{{{
if (config.options.chkSaveStory==undefined) config.options.chkSaveStory=false; 
if (window.coreTweaks_confirmExit==undefined) {
	window.coreTweaks_confirmExit=window.confirmExit;
	window.confirmExit=function() {
		if (config.options.chkSaveStory) { // save cookie
			var links=[];
			story.forEachTiddler(function(title,element){links.push('[['+title+']]');});
			document.cookie="txtSavedStory="+links.join(" ")+"; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";
		}
		else {
			var ex=new Date(); ex.setTime(ex.getTime()-1000);
			document.cookie="txtSavedStory=; path=/; expires="+ex.toGMTString(); // remove cookie
		}
		return window.coreTweaks_confirmExit.apply(this,arguments);
	}
}
//}}}
/***
''apply saved story on startup:'' //important note: the following code is actually located in [[MarkupPostBody]].  This is because it needs to supercede the core's getParameters() function, which is called BEFORE plugins are loaded, preventing the normal plugin-based hijack method from working, while code loaded into [[MarkupPostBody]] will be processed as soon as the document is read, even before the TW main() function is invoked.//
<<tiddler MarkupPostBody>>
***/
// // MACRO definitions
//{{{
config.macros.saveStory = {
	label: "set default tiddlers",
	defaultTiddler: "DefaultTiddlers",
	prompt: "store a list of currently displayed tiddlers in another tiddler",
	askMsg: "Enter the name of a tiddler in which to save the current story:",
	tag: "story",
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var tid=params[0]?params[0]:"DefaultTiddlers";
		var label=params[1]?params[1]:this.label;
		var tip=params[2]?params[2]:this.prompt;
		var btn=createTiddlyButton(place,label,tip,this.setTiddler,"button");
		btn.setAttribute("tid",tid);
	},
	setTiddler: function() {
		// get list of current open tiddlers
		var tids=[];
		story.forEachTiddler(function(title,element){tids.push("[["+title+"]]")}); // always put titles in brackets
		// get target tiddler
		var tid=this.getAttribute("tid");
		if (!tid || tid=="ask") {
			tid=prompt(config.macros.saveStory.askMsg,config.macros.saveStory.defaultTiddler);
			if (!tid || !tid.length) return; // cancelled by user
		}
		if(store.tiddlerExists(tid) && !confirm(config.messages.overwriteWarning.format([tid]))) return;
		tids=tids.join("\n"); // separate tiddler links by newlines for easier reading
		var t=store.getTiddler(tid); var tags=t?t.tags:[]; tags.push(config.macros.saveStory.tag);
		store.saveTiddler(tid,tid,tids,config.options.txtUserName,new Date(),tags,t?t.fields:null);
		story.displayTiddler(null,tid); story.refreshTiddler(tid,null,true);
		displayMessage(tid+" has been "+(t?"updated":"created"));
	}
}
//}}}

//{{{
if (config.options.chkStoryFold==undefined) config.options.chkStoryFold=true;
if (config.options.chkStoryClose==undefined) config.options.chkStoryClose=true;
config.macros.openStory = {
	label: "open story: %0",
	prompt: "open the set of tiddlers listed in: '%0'",
	popuplabel: "stories",
	popupprompt: "view a set of tiddlers",
	tag: "story",
	selectprompt: "select a story...",
	optionsprompt: "viewing options...",
	foldcmd: "[%0] fold story",
	foldprompt: "fold story tiddlers when opening a story",
	closecmd: "[%0] close others",
	closeprompt: "close other tiddlers when opening a story",
	addcmd: "add a story...",
	addprompt: "create a new story",
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		if (params[0].toLowerCase()=="list") return this.createList(place,params);
		else if (params[0].toLowerCase()=="popup") return this.createPopup(place,params);
		else this.createButton(place,params);
	},
	showStory: function(tid) {
		var tids=[];
		var tagged=store.getTaggedTiddlers(tid,"title");
		if (tagged.length) // if tiddler IS a tag, use tagged tiddlers as story
			for (var t=0; t<tagged.length; t++) tids.push(tagged[t].title);
		else { // get tiddler list from content
			var t=store.getTiddler(tid);
			if (t) { if (!t.linksUpdated) t.changed(); tids=t.links; }
		}
		// see [[CollapseTiddlersPlugin]] for more info, re: folding tiddlers
		var template=null;
		if (config.options.chkStoryFold) template="CollapsedTemplate";
		if (!store.tiddlerExists("CollapsedTemplate")) template=null;
		if (config.options.chkStoryClose) story.closeAllTiddlers();
		story.displayTiddlers(null,tids,template);
	},
	createButton: function(place,params) {
		var tid=params[0]?params[0]:"";
		var label=params[1]?params[1]:this.label; label=label.format([tid]);
		var tip=params[2]?params[2]:this.prompt; tip=tip.format([tid]);
		var fn=function(){config.macros.openStory.showStory(this.getAttribute("tid"))};
		var btn=createTiddlyButton(place,label,tip,fn,"button");
		btn.setAttribute("tid",tid);
	},
	createPopup: function(place,params) {
		var label=params[1]?params[1]:this.popuplabel;
		var tip=params[2]?params[2]:this.popupprompt;
		var btn=createTiddlyButton(place,label,tip,this.showPopup,"button");
	},
	showPopup: function(ev) { var e=ev||window.event;
		var indent="\xa0\xa0";
		var p=Popup.create(this); if (!p) return false;
		createTiddlyText(createTiddlyElement(p,"li"),config.macros.openStory.selectprompt);
		var stories=store.getTaggedTiddlers("story","title");
		for (var s=0; s<stories.length; s++) {
			var label=indent+stories[s].title;
			var tip=config.macros.openStory.prompt.format([stories[s].title]);
			var fn=function(){config.macros.openStory.showStory(this.getAttribute("tid"))};
			var btn=createTiddlyButton(createTiddlyElement(p,"li"),label,tip,fn,"button");
			btn.setAttribute("tid",stories[s].title);
		}
		createTiddlyText(createTiddlyElement(p,"li"),config.macros.openStory.optionsprompt);
		if (store.tiddlerExists("CollapsedTemplate")) {
			var label=indent+config.macros.openStory.foldcmd.format([config.options.chkStoryFold?"x":"\xa0\xa0"]);
			var tip=config.macros.openStory.foldprompt;
			var fn=function(){config.options.chkStoryFold=!config.options.chkStoryFold;saveOptionCookie('chkStoryFold')};
			var btn=createTiddlyButton(createTiddlyElement(p,"li"),label,tip,fn,"button");
		}
		var label=indent+config.macros.openStory.closecmd.format([config.options.chkStoryClose?"x":"\xa0\xa0"]);
		var tip=indent+config.macros.openStory.closeprompt;
		var fn=function(){config.options.chkStoryClose=!config.options.chkStoryClose;saveOptionCookie('chkStoryClose')};
		var btn=createTiddlyButton(createTiddlyElement(p,"li"),label,tip,fn,"button");
		if (!readOnly) {
			var label=config.macros.openStory.addcmd;
			var tip=config.macros.openStory.addprompt;
			var fn=config.macros.saveStory.setTiddler;
			createTiddlyElement(createTiddlyElement(p,"li"),"hr");
			var btn=createTiddlyButton(createTiddlyElement(p,"li"),label,tip,fn,"button");
		}
		Popup.show(p,false);
		e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();
		return false;
	},
	createList: function(place,params) {
		var s=createTiddlyElement(place,"select",null,"storyListbox");
		s.size=1;
		s.onchange=function() {
			if (this.value=="_fold") {
				config.options.chkStoryFold=!config.options.chkStoryFold; saveOptionCookie('chkStoryFold');
				config.macros.openStory.refreshList();
			} else if (this.value=="_close") {
				config.options.chkStoryClose=!config.options.chkStoryClose; saveOptionCookie('chkStoryClose');
				config.macros.openStory.refreshList();
			} else if (this.value=="_add")
				config.macros.saveStory.setTiddler.apply(this,arguments);
			else config.macros.openStory.showStory(this.value);
		}
		setStylesheet(".storyListbox { width:100%; }", "StorySaverStyles");
		store.addNotification(null,this.refreshList); this.refreshList();
		return;
	},
	refreshList: function() {
		var indent="\xa0\xa0\xa0\xa0";
		var lists=document.getElementsByTagName("select");
		for (var i=0; i<lists.length; i++) { if (lists[i].className!="storyListbox") continue;
			var here=lists[i];
			while (here.length) here.options[0]=null; // remove current list items
			here.options[here.length]=new Option(config.macros.openStory.selectprompt,"",true,true);
			var stories=store.getTaggedTiddlers("story","title");
			for (var s=0; s<stories.length; s++)
				here.options[here.length]=new Option(indent+stories[s].title,stories[s].title,false,false);
			if (!readOnly)
				here.options[here.length]=new Option(config.macros.openStory.addcmd,"_add",false,false);
			here.options[here.length]=new Option(config.macros.openStory.optionsprompt,"",false,false);
			if (store.tiddlerExists("CollapsedTemplate")) {
				var msg=config.macros.openStory.foldcmd.format([config.options.chkStoryFold?"x":"\xa0\xa0"]);
				here.options[here.length]=new Option(indent+msg,"_fold",false,false);
			}
			var msg=config.macros.openStory.closecmd.format([config.options.chkStoryClose?"x":"\xa0\xa0"]);
			here.options[here.length]=new Option(indent+msg,"_close",false,false);
		}
	}
}
//}}}
/***
|Name|StorySaverPlugin|
|Source|http://www.TiddlyTools.com/#StorySaverPlugin|
|Documentation|http://www.TiddlyTools.com/#StorySaverPluginInfo|
|Version|1.4.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires|MarkupPostBody|
|Overrides|confirmExit(), getParameters()|
|Description|documentation for StorySaverPlugin|
This plugin automatically saves a list of the currently viewed tiddlers (the "story") in a local cookie, {{{txtSavedStory}}} and then opens those tiddlers when the document is subsequently reloaded... the tiddlers you were viewing in the last browser session are automatically redisplayed in the next session, allowing you to quickly resume working with the document from the same place you left off!!

In addition to automatic cookie-based story tracking, the plugin also provides {{{<<saveStory>>}}} and {{{<<openStory>>}}} macros that allow you to quickly save the current story definition to a tiddler, and then re-display saved stories using simple, one-click command links or droplists.
!!!!!Usage
<<<
If a document URL does not contain a 'paramifier' (i.e., a "#..." suffix), then the saved story cookie (if any) will be used ''//as if//'' it had been entered as a 'permaview' (e.g., a "#tiddler tiddler tiddler..." suffix on the URL), bypassing the [[DefaultTiddlers]] definition.  This behavior is automatically applied whenever the plugin is installed in your document.  You can enable/disable the automatic cookie-based StorySaver feature by using the checkbox below:
>''<<option chkSaveStory>> enable StorySaverPlugin''
>//usage:// {{{<<option chkSaveStory>>}}}
You can also temporarily //bypass// the redisplay of a saved story ''without disabling the StorySaver cookie'' by including a trailing "#" at the end of the document URL.  This will cause your document to be loaded into the browser without displaying //any// initial tiddlers at all.  Alternatively, you can enter {{{#story:storyname}}} on the end of the URL (e.g., {{{#story:DefaultTiddlers}}}) to display any specific saved story, regardless of the value of the cookie-based saved story.

__''saveStory macro:''__
The {{{<<saveStory>>}}} macro lets you write the list of currently viewed tiddlers to a specified tiddler name (e.g., "DefaultTiddlers", "MyFavorites", etc.).  Tiddlers containing saved stories are automatically tagged with <<tag story>>, so that they can be recognized by the {{{<<storyViewer>>}}} macro (see [[StoryViewerPlugin]]).  The syntax for the {{{<<saveStory>>}}} macro is:
{{{
<<saveStory storyname label tooltip>>  or   <<saveStory ask label tooltip>>
}}}
where:
* ''storyname''<br>is the target tiddler in which to save the current story.  If you use the keyword, ''ask'', in place of the tiddlername, you will be prompted to enter a tiddler title when saving the story (default: DefaultTiddlers).
* ''label''<br>is the command link text (default: "set default tiddlers").
* ''tooltip''<br>is the command mouseover guide-text (default: "store a list of currently displayed tiddlers in another tiddler").

__''openStory macro:''__
To redisplay a saved story, the {{{<<openStory>>}}} macro can be used to embed either a droplist of all saved stories, or a link for a specified story.  Selecting from the droplist or clicking the link opens the corresponding set of tiddlers.  
{{{
<<openStory list>> OR <<openStory popup label tooltip>> OR <<openStory storyname label tooltip>>
}}}
where:
* ''list''<br>shows a droplist of all saved stories, plus additional commands/viewing options.  Selecting a story opens the corresponding tiddlers.
* ''popup''<br>shows a popup display containing a list of all saved stories, plus additional commands/viewing options.  Selecting a story opens the corresponding tiddlers.  ''label'' and ''tooltip'' are optional and provide alternative display text and 'mouseover' help text, respectively.
* ''storyname''<br>is a tiddler containing a saved story.  //Note: ''You can also use a tag value as a storyname.''  Instead of reading the tiddler list from the contents of the storyname tiddler, the story view will be composed of all tiddlers tagged with the specified tag value.//
* ''label''<br>is the command link text (default: "open story: %0", where %0 is replaced by the storyname).
* ''tooltip''<br>is the command mouseover guide-text (default: "open the set of tiddlers listed in: '%0'"),

__''PermaView command link enhancement:''__
In order to further aide in saving/restoring the list of tiddlers currently being viewed, the core {{{<<permaview>>}}} command has been enhanced, so its link value always includes the current story view tiddler list as a paramifier in the URL.  This let you quickly use the browser's right-click menu directly on the permalink command text to "bookmark this link...".  Depending upon your system, you may also be able to drag the 'permaview' link directly from the page and drop it onto your desktop to create an instant permaview-bearing URL shortcut icon.
<<<
!!!!!Examples
<<<
*{{{<<saveStory TestStory "save a test story">>}}}<br>{{smallform{<<saveStory TestStory "save a test story">>}}}
*{{{<<openStory TestStory>>}}}<br><<openStory TestStory>>
*{{{<<openStory list>>}}}<br>{{smallform{<<openStory list>>}}}
*{{{<<openStory popup label tooltip>>}}}<br>{{smallform{<<openStory popup>>}}}
<<<
!!!!!Revisions
<<<
2008.07.11 [1.4.2] in confirmExit(), corrected bracketing for titles containing spaces
2008.03.10 [*.*.*] plugin size reduction: documentation moved to [[StorySaverPluginInfo]]
2008.01.01 [1.4.1] sort list of stories alphabetically
2008.01.01 [1.4.0] added option to display a popup instead of a droplist control.  (Provides more compact presentation)
2007.12.31 [1.3.1] instead of readBracketedList(), use internal tiddler.links[] to retrieve story list from tiddler content. Allows more flexible formatting of story tiddler content: anything content that is not a tiddler link is automatically filtered out of the list.
2007.10.23 [1.3.0] split {{{<<storyViewer>>}}} macro definition into stand-alone [[StoryViewerPlugin]] to allow separate installation of story saving vs. story viewing features.
2007.10.21 [1.2.0] added {{{<<openStory>>}}} and {{{<<storyViewer>>}}} macros.
2007.10.20 [1.1.0] in setTiddler(), automatically add "story" tag to saved story tiddlers
2007.10.18 [1.0.1] added default initialization for chkSaveStory option value.  Also, in setTiddler(), call displayTiddler() after saving story to ensure that altered tiddler is shown to the user.
2007.10.05 [1.0.0] initial release.   Moved [[SetDefaultTiddlers]] inline script and rewrote as a {{{<<saveStory>>}}} macro.  Moved permaview "mouseover HREF" enhancement from [[CoreTweaks]].
<<<
{{floatleft{[img(120px,auto)[Peter Strawson, wikipedia|imagesWiki/strawson.jpg][http://en.wikipedia.org/wiki/P._F._Strawson]]}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Strawson","prénom":"Peter","initiales":"P"}</data>
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:8em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
<<tiddler Concepts>>
<<tiddler Concepts>>
<<tiddler Concept>>

<<allTags excludeLists>>
<<tabs txtMoreTab "Tags" "All Tags" TabAllTags "Miss" "Missing tiddlers" TabMoreMissing "Orph" "Orphaned tiddlers" TabMoreOrphans "Shad" "Shadowed tiddlers" TabMoreShadowed>>
<<allTags>>
|Standard Periodic Table (ref. Wikipedia)|c
|| !1 | !2 |!| !3 | !4 | !5 | !6 | !7 | !8 | !9 | !10 | !11 | !12 | !13 | !14 | !15 | !16 | !17 | !18 |
|!1|bgcolor(#a0ffa0): @@color(red):H@@ |>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>||bgcolor(#c0ffff): @@color(red):He@@ |
|!2|bgcolor(#ff6666): Li |bgcolor(#ffdead): Be |>|>|>|>|>|>|>|>|>|>||bgcolor(#cccc99): B |bgcolor(#a0ffa0): C |bgcolor(#a0ffa0): @@color(red):N@@ |bgcolor(#a0ffa0): @@color(red):O@@ |bgcolor(#ffff99): @@color(red):F@@ |bgcolor(#c0ffff): @@color(red):Ne@@ |
|!3|bgcolor(#ff6666): Na |bgcolor(#ffdead): Mg |>|>|>|>|>|>|>|>|>|>||bgcolor(#cccccc): Al |bgcolor(#cccc99): Si |bgcolor(#a0ffa0): P |bgcolor(#a0ffa0): S |bgcolor(#ffff99): @@color(red):Cl@@ |bgcolor(#c0ffff): @@color(red):Ar@@ |
|!4|bgcolor(#ff6666): K |bgcolor(#ffdead): Ca ||bgcolor(#ffc0c0): Sc |bgcolor(#ffc0c0): Ti |bgcolor(#ffc0c0): V |bgcolor(#ffc0c0): Cr |bgcolor(#ffc0c0): Mn |bgcolor(#ffc0c0): Fe |bgcolor(#ffc0c0): Co |bgcolor(#ffc0c0): Ni |bgcolor(#ffc0c0): Cu |bgcolor(#ffc0c0): Zn |bgcolor(#cccccc): Ga |bgcolor(#cccc99): Ge |bgcolor(#cccc99): As |bgcolor(#a0ffa0): Se |bgcolor(#ffff99): @@color(green):Br@@ |bgcolor(#c0ffff): @@color(red):Kr@@ |
|!5|bgcolor(#ff6666): Rb |bgcolor(#ffdead): Sr ||bgcolor(#ffc0c0): Y |bgcolor(#ffc0c0): Zr |bgcolor(#ffc0c0): Nb |bgcolor(#ffc0c0): Mo |bgcolor(#ffc0c0): Tc |bgcolor(#ffc0c0): Ru |bgcolor(#ffc0c0): Rh |bgcolor(#ffc0c0): Pd |bgcolor(#ffc0c0): Ag |bgcolor(#ffc0c0): Cd |bgcolor(#cccccc): In |bgcolor(#cccccc): Sn |bgcolor(#cccc99): Sb |bgcolor(#cccc99): Te |bgcolor(#ffff99): I |bgcolor(#c0ffff): @@color(red):Xe@@ |
|!6|bgcolor(#ff6666): Cs |bgcolor(#ffdead): Ba |bgcolor(#ffbfff):^^*1^^|bgcolor(#ffc0c0): Lu |bgcolor(#ffc0c0): Hf |bgcolor(#ffc0c0): Ta |bgcolor(#ffc0c0): W |bgcolor(#ffc0c0): Re |bgcolor(#ffc0c0): Os |bgcolor(#ffc0c0): Ir |bgcolor(#ffc0c0): Pt |bgcolor(#ffc0c0): Au |bgcolor(#ffc0c0): @@color(green):Hg@@ |bgcolor(#cccccc): Tl |bgcolor(#cccccc): Pb |bgcolor(#cccccc): Bi |bgcolor(#cccc99): Po |bgcolor(#ffff99): At |bgcolor(#c0ffff): @@color(red):Rn@@ |
|!7|bgcolor(#ff6666): Fr |bgcolor(#ffdead): Ra |bgcolor(#ff99cc):^^*2^^|bgcolor(#ffc0c0): Lr |bgcolor(#ffc0c0): Rf |bgcolor(#ffc0c0): Db |bgcolor(#ffc0c0): Sq |bgcolor(#ffc0c0): Bh |bgcolor(#ffc0c0): Hs |bgcolor(#ffc0c0): Mt |bgcolor(#ffc0c0): Ds |bgcolor(#ffc0c0): Rg |bgcolor(#ffc0c0): @@color(green):Uub@@ |bgcolor(#cccccc): Uut |bgcolor(#cccccc): Uuq |bgcolor(#cccccc): Uup |bgcolor(#cccccc): Uuh |bgcolor(#fcfecc): @@color(#cccccc):Uus@@ |bgcolor(#ecfefc): @@color(#cccccc):Uuo@@ |

| !Lanthanides^^*1^^|bgcolor(#ffbfff): La |bgcolor(#ffbfff): Ce |bgcolor(#ffbfff): Pr |bgcolor(#ffbfff): Nd |bgcolor(#ffbfff): Pm |bgcolor(#ffbfff): Sm |bgcolor(#ffbfff): Eu |bgcolor(#ffbfff): Gd |bgcolor(#ffbfff): Tb |bgcolor(#ffbfff): Dy |bgcolor(#ffbfff): Ho |bgcolor(#ffbfff): Er |bgcolor(#ffbfff): Tm |bgcolor(#ffbfff): Yb |
| !Actinides^^*2^^|bgcolor(#ff99cc): Ac |bgcolor(#ff99cc): Th |bgcolor(#ff99cc): Pa |bgcolor(#ff99cc): U |bgcolor(#ff99cc): Np |bgcolor(#ff99cc): Pu |bgcolor(#ff99cc): Am |bgcolor(#ff99cc): Cm |bgcolor(#ff99cc): Bk |bgcolor(#ff99cc): Cf |bgcolor(#ff99cc): Es |bgcolor(#ff99cc): Fm |bgcolor(#ff99cc): Md |bgcolor(#ff99cc): No |

*Chemical Series of the Periodic Table
**@@bgcolor(#ff6666): Alkali metals@@
**@@bgcolor(#ffdead): Alkaline earth metals@@
**@@bgcolor(#ffbfff): Lanthanides@@
**@@bgcolor(#ff99cc): Actinides@@
**@@bgcolor(#ffc0c0): Transition metals@@
**@@bgcolor(#cccccc): Poor metals@@
**@@bgcolor(#cccc99): Metalloids@@
**@@bgcolor(#a0ffa0): Nonmetals@@
**@@bgcolor(#ffff99): Halogens@@
**@@bgcolor(#c0ffff): Noble gases@@

*State at standard temperature and pressure
**those in @@color(red):red@@ are gases
**those in @@color(green):green@@ are liquids
**those in black are solids				
/***
''Plugin:'' Tag Cloud Macro
''Author:'' Clint Checketts
''Source URL:''

!Usage
{{{
<<tagCloud>>
}}}
<<tagCloud>>

!Code
***/
//{{{
version.extensions.tagCloud = {major: 1, minor: 0 , revision: 0, date: new Date(2006,2,04)};
//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman

config.macros.tagCloud = {
 noTags: "No tag cloud created because there are no tags.",
 tooltip: "%1 tiddlers tagged with '%0'"
};

config.macros.tagCloud.handler = function(place,macroName,params) {
 
var tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);

var tags = store.getTags();
for (var t=0; t<tags.length; t++) {
 for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) tags[t][0] = "";
}

 if(tags.length == 0) 
 createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);
 //Findout the maximum number of tags
 var mostTags = 0;
 for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
 if (tags[t][1] > mostTags) mostTags = tags[t][1];
 }
 //divide the mostTags into 4 segments for the 4 different tagCloud sizes
 var tagSegment = mostTags / 4;

 for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
 var tagCloudElement = createTiddlyElement(tagCloudWrapper,"span",null,null,null);
 tagCloudWrapper.appendChild(document.createTextNode(" "));
 var theTag = createTiddlyButton(tagCloudElement,tags[t][0],this.tooltip.format(tags[t]),onClickTag,"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));
 theTag.setAttribute("tag",tags[t][0]);
 }

};

setStylesheet(".tagCloud span{height: 1.8em;margin: 3px;}.tagCloud1{font-size: 0em;}.tagCloud2{font-size: 1em;}.tagCloud3{font-size: 2em;}.tagCloud4{font-size: 5em;}.tagCloud5{font-size: 5em;font-weight: bold;}","tagCloudsStyles");
//}}}
/***
|Name|TagCloudPlugin|
|Source|http://www.TiddlyTools.com/#TagCloudPlugin|
|Version|1.2.0|
|Author|Eric Shulman|
|Original Author|Clint Checketts|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|present a 'cloud' of tags using proportional font display|
!Usage
<<<
{{{<<tagCloud>>}}}
> show all tags in the document
{{{<<tagCloud tag tag tag...>>}}}
> show all tags except those listed as parameters
{{{<<tagCloud =tagvalue>>}}}
> show only tags that are themselves tagged with the indicated tag value (i.e., ~TagglyTagging usage)
<<<
!Examples
<<<
{{{<<tagCloud>>}}}
<<tagCloud>>
----
{{{<<tagCloud =package>>}}}
<<tagCloud =package>>
<<<
!Revisions
<<<
2008.09.05 [1.2.0] ELS: added '=tagname' parameter to include only tags that are themselves tagged with the specified value (i.e., ~TagglyTagging usage)
2008.07.03 [1.1.0] ELS: added 'segments' property to macro object.  Extensive code cleanup
<<<
!Code
***/
//{{{
version.extensions.tagCloud = {major: 1, minor: 2 , revision: 0, date: new Date(2008,9,5)};
//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman

config.shadowTiddlers.TagCloud="<<tagCloud>>";

setStylesheet("\
	.tagCloud span{height: 3.5em;margin: 3px;}\
	.tagCloud1{font-size: 80%;}\
	.tagCloud2{font-size: 100%;}\
	.tagCloud3{font-size: 120%;}\
	.tagCloud4{font-size: 150%;}\
	.tagCloud5{font-size: 180%;}\
	.tagCloud6{font-size: 200%;}\
	",
	"tagCloudsStyles");

config.macros.tagCloud = {
	noTags: "No tag cloud created because there are no tags.",
	tooltip: "%1 tiddlers tagged with '%0'",
	segments: 5,
	handler: function(place,macroName,params) {

		var tags=store.getTags();

		if (params.length) {
			if (params[0].substr(0,1)=="=") {
				// include only specifically tagged tags
				var tagged=store.getTaggedTiddlers(params[0].substr(1));
				for (var t=0; t<tagged.length; t++)
					tagged[t]=tagged[t].title;
				for (var t=0; t<tags.length; t++)
					if (!tagged.contains(tags[t][0])) tags[t][0]="";
			} else {
				// include all tags except those listed as params
				for (var t=0; t<tags.length; t++)
					if (params.contains(tags[t][0])) tags[t][0]="";
			}
		}

		// get maximum number of tags to calculate tagCloud segment sizes
		var mostTags=0;
		for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0)
			if (tags[t][1]>mostTags) mostTags=tags[t][1];
		var tagSegment=mostTags/config.macros.tagCloud.segments;

		// output
		var tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);
		if(!tags.length)
			createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);
		else for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
			tagCloudWrapper.appendChild(document.createTextNode(" "));
			var theTag = createTiddlyButton(tagCloudWrapper,
				tags[t][0],this.tooltip.format(tags[t]),onClickTag,
				"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));
			theTag.setAttribute("tag",tags[t][0]);
		}
	}
};
//}}}
<br>
----
+++[auteurs]
!!!!Auteurs
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var guion=store.getTiddlerText("GuiOn");
   return "<<forEachTiddler where 'tiddler.tags.contains("+guion+titre+guion+") && tiddler.tags.contains("+guion+"Auteurs"+guion+")' sortBy 'tiddler.title'>>";
</script>
===
+++[livres]
!!!!Livres
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var guion=store.getTiddlerText("GuiOn");
   return "<<forEachTiddler where 'tiddler.tags.contains("+guion+titre+guion+") && tiddler.tags.contains("+guion+"Livres"+guion+")' sortBy 'tiddler.title'>>";
</script>
===
+++[articles]
!!!!Articles
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var guion=store.getTiddlerText("GuiOn");
   return "<<forEachTiddler where 'tiddler.tags.contains("+guion+titre+guion+") && tiddler.tags.contains("+guion+"Articles"+guion+")' sortBy 'tiddler.title'>>";
</script>
===
+++[citations]
!!!!Citations
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var guion=store.getTiddlerText("GuiOn");
   return "<<forEachTiddler where 'tiddler.tags.contains("+guion+titre+guion+") && tiddler.tags.contains("+guion+"Citations"+guion+")' sortBy 'tiddler.title'>>";
</script>
===
+++[notes]
!!!!Notes
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var guion=store.getTiddlerText("GuiOn");
   return "<<forEachTiddler where 'tiddler.tags.contains("+guion+titre+guion+") && tiddler.tags.contains("+guion+"Notes"+guion+")' sortBy 'tiddler.title'>>";
</script>
===
+++[idées]
!!!!Idées
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var guion=store.getTiddlerText("GuiOn");
   return "<<forEachTiddler where 'tiddler.tags.contains("+guion+titre+guion+") && tiddler.tags.contains("+guion+"Idées"+guion+")' sortBy 'tiddler.title'>>";
</script>
===
+++[concepts]
!!!!Concepts
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var guion=store.getTiddlerText("GuiOn");
   return "<<forEachTiddler where 'tiddler.tags.contains("+guion+titre+guion+") && tiddler.tags.contains("+guion+"Concepts"+guion+")' sortBy 'tiddler.title'>>";
</script>
===
+++[problèmes]
!!!!Problèmes
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var guion=store.getTiddlerText("GuiOn");
   return "<<forEachTiddler where 'tiddler.tags.contains("+guion+titre+guion+") && tiddler.tags.contains("+guion+"Problèmes"+guion+")' sortBy 'tiddler.title'>>";
</script>
===
+++[théories]
!!!!Théories
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var guion=store.getTiddlerText("GuiOn");
   return "<<forEachTiddler where 'tiddler.tags.contains("+guion+titre+guion+") && tiddler.tags.contains("+guion+"Théories"+guion+")' sortBy 'tiddler.title'>>";
</script>
===
+++[TOUT]
!!!!Tout
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var guion=store.getTiddlerText("GuiOn");
   return "<<forEachTiddler where 'tiddler.tags.contains("+guion+titre+guion+")' sortBy 'tiddler.title'>>";
</script>
===
----
/***
|''Name:''|~TaggerPlugin|
|''Version:''|1.0.1 (2006-06-01)|
|''Source:''|http://tw.lewcid.org//#TaggerPlugin|
|''Author:''|SaqImtiaz|
|''Description:''|Provides a drop down listing current tiddler tags, and allowing toggling of tags.|
|''Documentation:''|[[TaggerPluginDocumentation]]|
|''Source Code:''|[[TaggerPluginSource]]|
|''~TiddlyWiki:''|Version 2.0.8 or better|

Requires [[DeprecatedFunctionsPlugin]]
***/
//{{{
config.tagger={defaults:{label:"Tags: ",tooltip:"Manage tiddler tags",taglist:"true",excludeTags:"",notags:"tiddler has no tags",aretags:"current tiddler tags:",toggletext:"add tags:"}};config.macros.tagger={};config.macros.tagger.arrow=(document.all?"▼":"▾");config.macros.tagger.handler=function(_1,_2,_3,_4,_5,_6){var _7=config.tagger.defaults;var _8=_5.parseParams("tagman",null,true);var _9=((_8[0].label)&&(_8[0].label[0])!=".")?_8[0].label[0]+this.arrow:_7.label+this.arrow;var _a=((_8[0].tooltip)&&(_8[0].tooltip[0])!=".")?_8[0].tooltip[0]:_7.tooltip;var _b=((_8[0].taglist)&&(_8[0].taglist[0])!=".")?_8[0].taglist[0]:_7.taglist;var _c=((_8[0].exclude)&&(_8[0].exclude[0])!=".")?(_8[0].exclude[0]).readBracketedList():_7.excludeTags.readBracketedList();if((_8[0].source)&&(_8[0].source[0])!="."){var _d=_8[0].source[0];}if(_d&&!store.getTiddler(_d)){return false;}var _e=function(e){if(!e){var e=window.event;}var _11=Popup.create(this);var _12=store.getTags();var _13=new Array();for(var i=0;i<_12.length;i++){_13.push(_12[i][0]);}if(_d){var _15=store.getTiddler(_d);_13=_15.tags.sort();}var _16=_6.tags.sort();var _17=function(_18,_19,_1a){var sp=createTiddlyElement(createTiddlyElement(_11,"li"),"span",null,"tagger");var _1c=createTiddlyButton(sp,_18,_1a+" '"+_19+"'",taggerOnToggle,"button","toggleButton");_1c.setAttribute("tiddler",_6.title);_1c.setAttribute("tag",_19);insertSpacer(sp);if(window.createTagButton_orig_mptw){createTagButton_orig_mptw(sp,_19)}else{createTagButton(sp,_19);}};createTiddlyElement(_11,"li",null,"listTitle",(_6.tags.length==0?_7.notags:_7.aretags));for(var t=0;t<_16.length;t++){_17("[x]",_16[t],"remove tag ");}createTiddlyElement(createTiddlyElement(_11,"li"),"hr");if(_b!="false"){createTiddlyElement(_11,"li",null,"listTitle",_7.toggletext);for(var i=0;i<_13.length;i++){if(!_6.tags.contains(_13[i])&&!_c.contains(_13[i])){_17("[ ]",_13[i],"add tag ");}}createTiddlyElement(createTiddlyElement(_11,"li"),"hr");}var _1f=createTiddlyButton(createTiddlyElement(_11,"li"),("Create new tag"),null,taggerOnToggle);_1f.setAttribute("tiddler",_6.title);if(_d){_1f.setAttribute("source",_d);}Popup.show(_11,false);e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}return (false);};createTiddlyButton(_1,_9,_a,_e,"button","taggerDrpBtn");};window.taggerOnToggle=function(e){var tag=this.getAttribute("tag");var _22=this.getAttribute("tiddler");var _23=store.getTiddler(_22);if(!tag){var _24=prompt("Enter new tag:","");if(_24!=""&&_24!=null){var tag=_24;if(this.getAttribute("source")){var _26=store.getTiddler(this.getAttribute("source"));_26.tags.pushUnique(_24);}}else{return false;}}if(!_23||!_23.tags){store.saveTiddler(_22,_22,"",config.options.txtUserName,new Date(),tag);}else{if(_23.tags.find(tag)==null){_23.tags.push(tag);}else{if(!_24){_23.tags.splice(_23.tags.find(tag),1);}}store.saveTiddler(_23.title,_23.title,_23.text,_23.modifier,_23.modified,_23.tags);}story.refreshTiddler(_22,null,true);if(config.options.chkAutoSave){saveChanges();}return false;};setStylesheet(".tagger a.button {font-weight: bold;display:inline; padding:0px;}\n"+".tagger #toggleButton {padding-left:2px; padding-right:2px; margin-right:1px; font-size:110%;}\n"+"#nestedtagger {background:#2E5ADF; border: 1px solid #0331BF;}\n"+".popup .listTitle {color:#000;}\n"+"","TaggerStyles");window.lewcidTiddlerSwapTag=function(_27,_28,_29){for(var i=0;i<_27.tags.length;i++){if(_27.tags[i]==_28){_27.tags[i]=_29;return true;}}return false;};window.lewcidRenameTag=function(e){var tag=this.getAttribute("tag");var _2d=prompt("Rename tag '"+tag+"' to:",tag);if((_2d==tag)||(_2d==null)){return false;}if(store.tiddlerExists(_2d)){if(confirm(config.messages.overwriteWarning.format([_2d.toString()]))){story.closeTiddler(_2d,false,false);}else{return null;}}tagged=store.getTaggedTiddlers(tag);if(tagged.length!=0){for(var j=0;j<tagged.length;j++){lewcidTiddlerSwapTag(tagged[j],tag,_2d);}}if(store.tiddlerExists(tag)){store.saveTiddler(tag,_2d);}if(document.getElementById("tiddler"+tag)){var _2f=document.getElementById(story.idPrefix+tag);var _30=story.positionTiddler(_2f);var _31=document.getElementById(story.container);story.closeTiddler(tag,false,false);story.createTiddler(_31,_30,_2d,null);story.saveTiddler(_2d);}if(config.options.chkAutoSave){saveChanges();}return false;};window.onClickTag=function(e){if(!e){var e=window.event;}var _34=resolveTarget(e);var _35=(!isNested(_34));if((Popup.stack.length>1)&&(_35==true)){Popup.removeFrom(1);}else{if(Popup.stack.length>0&&_35==false){Popup.removeFrom(0);}}var _36=(_35==false)?"popup":"nestedtagger";var _37=createTiddlyElement(document.body,"ol",_36,"popup",null);Popup.stack.push({root:this,popup:_37});var tag=this.getAttribute("tag");var _39=this.getAttribute("tiddler");if(_37&&tag){var _3a=store.getTaggedTiddlers(tag);var _3b=[];var li,r;for(r=0;r<_3a.length;r++){if(_3a[r].title!=_39){_3b.push(_3a[r].title);}}var _3d=config.views.wikified.tag;if(_3b.length>0){var _3e=createTiddlyButton(createTiddlyElement(_37,"li"),_3d.openAllText.format([tag]),_3d.openAllTooltip,onClickTagOpenAll);_3e.setAttribute("tag",tag);createTiddlyElement(createTiddlyElement(_37,"li"),"hr");for(r=0;r<_3b.length;r++){createTiddlyLink(createTiddlyElement(_37,"li"),_3b[r],true);}}else{createTiddlyText(createTiddlyElement(_37,"li",null,"disabled"),_3d.popupNone.format([tag]));}createTiddlyElement(createTiddlyElement(_37,"li"),"hr");var h=createTiddlyLink(createTiddlyElement(_37,"li"),tag,false);createTiddlyText(h,_3d.openTag.format([tag]));createTiddlyElement(createTiddlyElement(_37,"li"),"hr");var _40=createTiddlyButton(createTiddlyElement(_37,"li"),("Rename tag '"+tag+"'"),null,lewcidRenameTag);_40.setAttribute("tag",tag);}Popup.show(_37,false);e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}return (false);};if(!window.isNested){window.isNested=function(e){while(e!=null){var _42=document.getElementById("contentWrapper");if(_42==e){return true;}e=e.parentNode;}return false;};}config.shadowTiddlers.TaggerPluginDocumentation="The documentation is available [[here.|http://tw.lewcid.org/#TaggerPluginDocumentation]]";config.shadowTiddlers.TaggerPluginSource="The uncompressed source code is available [[here.|http://tw.lewcid.org/#TaggerPluginSource]]";
//}}}
''If you want this documentation available offline, copy this tiddler to your TW.''

!Description:
The tagger plugin is a result of combining key features from the dropTags and tagAdder macro's. However, since it departs somewhat from the interface tagAdder users will be familiar with, I'm making this available as a new plugin alongside tagAdder.

Tagger provides a dropdown list of the current tiddler tags, along with the ability to toggle them. Further it can optionally display a list of tags in the dropdown, which can be addded to the tiddler.

*Clicking on ''[x]'' and ''[ ]'' removes and adds the tag respectively.
*Clicking on the tag text displays the tag dropdown for that tag, listing tiddlers tagged with it.
*The ''Create new tag'' lets you quickly type in a new tag not in the list.
*Click on this button to see the dropdown: <<tagger>>

Further note that each tag dropdown has a ''Rename tag'' option. This can be used to quickly rename a tag in the entire TW, also rename it's tiddler if it exists.

//''tagAdder, dropTags and the future''
- tagAdder will no longer will be developed, but will remain available. I encourage all tagAdder users to upgrade to tagger.
- dropTags will still be developed for those users that dont want the 'tag editing' features.//

!Examples & Usage:
*At it's simplest, using tagger is as simple as {{{<<tagger>>}}} <<tagger>>
**This gives a dropdown with the current tiddler tags, followed by all the tags in the TW.
*You can also use a list of specified tags instead of all tags in the TW, by specifying a source tiddler.
**{{{<<tagger source:TagsDB>>}}} <<tagger source:TagDataBase>>
*You can also display ONLY the current tiddler tags
**{{{<<tagger taglist:false>>}}} <<tagger taglist:false>>

*To exclude tags from the list: {{{<<tagger exclude:"excludeLists Tag2 [[Tag with spaces]]">>}}} <<tagger exclude:"excludeLists Tag2 [[Tag with spaces]]">>

*For a custom button label: {{{<<tagger label:"custom label">>}}} <<tagger label:"custom label">>
*For a custom tooltip: {{{<<tagger tooltip:"custom tooltip">>}}} <<tagger tooltip:"custom tooltip">>

!CSS and Styling:
For those wishing to customize the popup appearance:
*the main popup has a class and id of popup has with all other popups.
*the nested tag popups have an id of nestedpopup

!Advanced Users:
You can change the global defaults for tagger, like the button label, the tags to exclude or whether to display the taglist or not, by editing the ''config.tagger.defaults'' section in the code.

!To Do:
*code optimization
*possibly a 'delete this tag' option.

!History
*version 1.0.1 (2006-06-01): fixed conflicts with QuickOpenTag (TagglyTagging) and AutoTagger.
/***
''Plugin:'' TagglyTag Cloud Macro
''Author:'' Clint Checketts
''Source URL:''

//Note the macro name was changed to stop it from clashing with the original TagCloud plugin//

!Usage
<<tagglyTagCloud>>

!Code
***/
//{{{
version.extensions.tagglyTagCloud = {major: 1, minor: 0 , revision: 0, date: new Date(2006,2,4)};
//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman

config.macros.tagglyTagCloud = {
 noTags: "No tag cloud created because there are no tags.",
 tooltip: "%1 tiddlers tagged with '%0'"
};

config.macros.tagglyTagCloud .handler = function(place,macroName,params) {
 
var tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);

var tags = store.getTags();
for (var t=0; t<tags.length; t++) {
 for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) tags[t][0] = "";
}

 if(tags.length == 0) 
 createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);
 //Findout the maximum number of tags
 var mostTags = 0;
 for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
 if (tags[t][1] > mostTags) mostTags = tags[t][1];
 }
 //divide the mostTags into 4 segments for the 4 different tagCloud sizes
 var tagSegment = mostTags / 4;

 for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
 var tagCloudElement = createTiddlyElement(tagCloudWrapper,"span",null,null,null);
 tagCloudWrapper.appendChild(document.createTextNode(" "));
 var theTag = createTiddlyLink(tagCloudElement,tags[t][0],true);
 theTag.className += " tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1);

// theTag.setAttribute("tag",tags[t][0]);
 }

};

setStylesheet(".tagCloud span{height: 1.8em;margin: 0px;}.tagCloud1{font-size: 1.2em;}.tagCloud2{font-size: 1.4em;}.tagCloud3{font-size: 1.6em;}.tagCloud4{font-size: 1.8em;}.tagCloud5{font-size: 1.8em;font-weight: bold;}","tagCloudsStyles");
//}}}
/***
|Name:|TagglyTaggingPlugin|
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
|Version:|3.3.1 ($Rev: 6100 $)|
|Date:|$Date: 2008-07-27 01:42:07 +1000 (Sun, 27 Jul 2008) $|
|Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{

merge(String.prototype,{

	parseTagExpr: function(debug) {

		if (this.trim() == "")
			return "(true)";

		var anyLogicOp = /(!|&&|\|\||\(|\))/g;
		var singleLogicOp = /^(!|&&|\|\||\(|\))$/;

		var spaced = this.
			// because square brackets in templates are no good
			// this means you can use [(With Spaces)] instead of [[With Spaces]]
			replace(/\[\(/g," [[").
			replace(/\)\]/g,"]] "). 
			// space things out so we can use readBracketedList. tricky eh?
			replace(anyLogicOp," $1 ");

		var expr = "";

		var tokens = spaced.readBracketedList(false); // false means don't uniq the list. nice one JR!

		for (var i=0;i<tokens.length;i++)
			if (tokens[i].match(singleLogicOp))
				expr += tokens[i];
			else
				expr += "tiddler.tags.contains('%0')".format([tokens[i].replace(/'/,"\\'")]); // fix single quote bug. still have round bracket bug i think

		if (debug)
			alert(expr);

		return '('+expr+')';
	}

});

merge(TiddlyWiki.prototype,{
	getTiddlersByTagExpr: function(tagExpr,sortField) {

		var result = [];

		var expr = tagExpr.parseTagExpr();

		store.forEachTiddler(function(title,tiddler) {
			if (eval(expr))
				result.push(tiddler);
		});

		if(!sortField)
			sortField = "title";

		result.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
		
		return result;
	}
});

config.taggly = {

	// for translations
	lingo: {
		labels: {
			asc:        "\u2191", // down arrow
			desc:       "\u2193", // up arrow
			title:      "title",
			modified:   "modified",
			created:    "created",
			show:       "+",
			hide:       "-",
			normal:     "normal",
			group:      "group",
			commas:     "commas",
			sitemap:    "sitemap",
			numCols:    "cols\u00b1", // plus minus sign
			label:      "Tagged as '%0':",
			exprLabel:  "Matching tag expression '%0':",
			excerpts:   "excerpts",
			descr:      "descr",
			slices:     "slices",
			contents:   "contents",
			sliders:    "sliders",
			noexcerpts: "title only",
			noneFound:  "(none)"
		},

		tooltips: {
			title:      "Click to sort by title",
			modified:   "Click to sort by modified date",
			created:    "Click to sort by created date",
			show:       "Click to show tagging list",
			hide:       "Click to hide tagging list",
			normal:     "Click to show a normal ungrouped list",
			group:      "Click to show list grouped by tag",
			sitemap:    "Click to show a sitemap style list",
			commas:     "Click to show a comma separated list",
			numCols:    "Click to change number of columns",
			excerpts:   "Click to show excerpts",
			descr:      "Click to show the description slice",
			slices:     "Click to show all slices",
			contents:   "Click to show entire tiddler contents",
			sliders:    "Click to show tiddler contents in sliders",
			noexcerpts: "Click to show entire title only"
		},

		tooDeepMessage: "* //sitemap too deep...//"
	},

	config: {
		showTaggingCounts: true,
		listOpts: {
			// the first one will be the default
			sortBy:     ["title","modified","created"],
			sortOrder:  ["asc","desc"],
			hideState:  ["show","hide"],
			listMode:   ["normal","group","sitemap","commas"],
			numCols:    ["1","2","3","4","5","6"],
			excerpts:   ["noexcerpts","excerpts","descr","slices","contents","sliders"]
		},
		valuePrefix: "taggly.",
		excludeTags: ["excludeLists","excludeTagging"],
		excerptSize: 50,
		excerptMarker: "/%"+"%/",
		siteMapDepthLimit: 25
	},

	getTagglyOpt: function(title,opt) {
		var val = store.getValue(title,this.config.valuePrefix+opt);
		return val ? val : this.config.listOpts[opt][0];
	},

	setTagglyOpt: function(title,opt,value) {
		if (!store.tiddlerExists(title))
			// create it silently
			store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),"");
		// if value is default then remove it to save space
		return store.setValue(title,
			this.config.valuePrefix+opt,
			value == this.config.listOpts[opt][0] ? null : value);
	},

	getNextValue: function(title,opt) {
		var current = this.getTagglyOpt(title,opt);
		var pos = this.config.listOpts[opt].indexOf(current);
		// a little usability enhancement. actually it doesn't work right for grouped or sitemap
		var limit = (opt == "numCols" ? store.getTiddlersByTagExpr(title).length : this.config.listOpts[opt].length);
		var newPos = (pos + 1) % limit;
		return this.config.listOpts[opt][newPos];
	},

	toggleTagglyOpt: function(title,opt) {
		var newVal = this.getNextValue(title,opt);
		this.setTagglyOpt(title,opt,newVal);
	}, 

	createListControl: function(place,title,type) {
		var lingo = config.taggly.lingo;
		var label;
		var tooltip;
		var onclick;

		if ((type == "title" || type == "modified" || type == "created")) {
			// "special" controls. a little tricky. derived from sortOrder and sortBy
			label = lingo.labels[type];
			tooltip = lingo.tooltips[type];

			if (this.getTagglyOpt(title,"sortBy") == type) {
				label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
				onclick = function() {
					config.taggly.toggleTagglyOpt(title,"sortOrder");
					return false;
				}
			}
			else {
				onclick = function() {
					config.taggly.setTagglyOpt(title,"sortBy",type);
					config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
					return false;
				}
			}
		}
		else {
			// "regular" controls, nice and simple
			label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
			tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
			onclick = function() {
				config.taggly.toggleTagglyOpt(title,type);
				return false;
			}
		}

		// hide button because commas don't have columns
		if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
			createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
	},

	makeColumns: function(orig,numCols) {
		var listSize = orig.length;
		var colSize = listSize/numCols;
		var remainder = listSize % numCols;

		var upperColsize = colSize;
		var lowerColsize = colSize;

		if (colSize != Math.floor(colSize)) {
			// it's not an exact fit so..
			upperColsize = Math.floor(colSize) + 1;
			lowerColsize = Math.floor(colSize);
		}

		var output = [];
		var c = 0;
		for (var j=0;j<numCols;j++) {
			var singleCol = [];
			var thisSize = j < remainder ? upperColsize : lowerColsize;
			for (var i=0;i<thisSize;i++) 
				singleCol.push(orig[c++]);
			output.push(singleCol);
		}

		return output;
	},

	drawTable: function(place,columns,theClass) {
		var newTable = createTiddlyElement(place,"table",null,theClass);
		var newTbody = createTiddlyElement(newTable,"tbody");
		var newTr = createTiddlyElement(newTbody,"tr");
		for (var j=0;j<columns.length;j++) {
			var colOutput = "";
			for (var i=0;i<columns[j].length;i++) 
				colOutput += columns[j][i];
			var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
			wikify(colOutput,newTd);
		}
		return newTable;
	},

	createTagglyList: function(place,title,isTagExpr) {
		switch(this.getTagglyOpt(title,"listMode")) {
			case "group":  return this.createTagglyListGrouped(place,title,isTagExpr); break;
			case "normal": return this.createTagglyListNormal(place,title,false,isTagExpr); break;
			case "commas": return this.createTagglyListNormal(place,title,true,isTagExpr); break;
			case "sitemap":return this.createTagglyListSiteMap(place,title,isTagExpr); break;
		}
	},

	getTaggingCount: function(title,isTagExpr) {
		// thanks to Doug Edmunds
		if (this.config.showTaggingCounts) {
			var tagCount = config.taggly.getTiddlers(title,'title',isTagExpr).length;
			if (tagCount > 0)
				return " ("+tagCount+")";
		}
		return "";
	},

	getTiddlers: function(titleOrExpr,sortBy,isTagExpr) {
		return isTagExpr ? store.getTiddlersByTagExpr(titleOrExpr,sortBy) : store.getTaggedTiddlers(titleOrExpr,sortBy);
	},

	getExcerpt: function(inTiddlerTitle,title,indent) {
		if (!indent)
			indent = 1;

		var displayMode = this.getTagglyOpt(inTiddlerTitle,"excerpts");
		var t = store.getTiddler(title);

		if (t && displayMode == "excerpts") {
			var text = t.text.replace(/\n/," ");
			var marker = text.indexOf(this.config.excerptMarker);
			if (marker != -1) {
				return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
			}
			else if (text.length < this.config.excerptSize) {
				return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
			}
			else {
				return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
			}
		}
		else if (t && displayMode == "contents") {
			return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
		}
		else if (t && displayMode == "sliders") {
			return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
		}
		else if (t && displayMode == "descr") {
			var descr = store.getTiddlerSlice(title,'Description');
			return descr ? " {{excerpt{" + descr  + "}}}" : "";
		}
		else if (t && displayMode == "slices") {
			var result = "";
			var slices = store.calcAllSlices(title);
			for (var s in slices)
				result += "|%0|<nowiki>%1</nowiki>|\n".format([s,slices[s]]);
			return result ? "\n{{excerpt excerptIndent{\n" + result  + "}}}" : "";
		}
		return "";
	},

	notHidden: function(t,inTiddler) {
		if (typeof t == "string") 
			t = store.getTiddler(t);
		return (!t || !t.tags.containsAny(this.config.excludeTags) ||
				(inTiddler && this.config.excludeTags.contains(inTiddler)));
	},

	// this is for normal and commas mode
	createTagglyListNormal: function(place,title,useCommas,isTagExpr) {

		var list = config.taggly.getTiddlers(title,this.getTagglyOpt(title,"sortBy"),isTagExpr);

		if (this.getTagglyOpt(title,"sortOrder") == "desc")
			list = list.reverse();

		var output = [];
		var first = true;
		for (var i=0;i<list.length;i++) {
			if (this.notHidden(list[i],title)) {
				var countString = this.getTaggingCount(list[i].title);
				var excerpt = this.getExcerpt(title,list[i].title);
				if (useCommas)
					output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
				else
					output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");

				first = false;
			}
		}

		return this.drawTable(place,
			this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
			useCommas ? "commas" : "normal");
	},

	// this is for the "grouped" mode
	createTagglyListGrouped: function(place,title,isTagExpr) {
		var sortBy = this.getTagglyOpt(title,"sortBy");
		var sortOrder = this.getTagglyOpt(title,"sortOrder");

		var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

		if (sortOrder == "desc")
			list = list.reverse();

		var leftOvers = []
		for (var i=0;i<list.length;i++)
			leftOvers.push(list[i].title);

		var allTagsHolder = {};
		for (var i=0;i<list.length;i++) {
			for (var j=0;j<list[i].tags.length;j++) {

				if (list[i].tags[j] != title) { // not this tiddler

					if (this.notHidden(list[i].tags[j],title)) {

						if (!allTagsHolder[list[i].tags[j]])
							allTagsHolder[list[i].tags[j]] = "";

						if (this.notHidden(list[i],title)) {
							allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
										+ this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";

							leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers

						}
					}
				}
			}
		}

		var allTags = [];
		for (var t in allTagsHolder)
			allTags.push(t);

		var sortHelper = function(a,b) {
			if (a == b) return 0;
			if (a < b) return -1;
			return 1;
		};

		allTags.sort(function(a,b) {
			var tidA = store.getTiddler(a);
			var tidB = store.getTiddler(b);
			if (sortBy == "title") return sortHelper(a,b);
			else if (!tidA && !tidB) return 0;
			else if (!tidA) return -1;
			else if (!tidB) return +1;
			else return sortHelper(tidA[sortBy],tidB[sortBy]);
		});

		var leftOverOutput = "";
		for (var i=0;i<leftOvers.length;i++)
			if (this.notHidden(leftOvers[i],title))
				leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";

		var output = [];

		if (sortOrder == "desc")
			allTags.reverse();
		else if (leftOverOutput != "")
			// leftovers first...
			output.push(leftOverOutput);

		for (var i=0;i<allTags.length;i++)
			if (allTagsHolder[allTags[i]] != "")
				output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);

		if (sortOrder == "desc" && leftOverOutput != "")
			// leftovers last...
			output.push(leftOverOutput);

		return this.drawTable(place,
				this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
				"grouped");

	},

	// used to build site map
	treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {

		var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

		if (sortOrder == "desc")
			list.reverse();

		var indent = "";
		for (var j=0;j<depth;j++)
			indent += "*"

		var childOutput = "";

		if (depth > this.config.siteMapDepthLimit)
			childOutput += indent + this.lingo.tooDeepMessage;
		else
			for (var i=0;i<list.length;i++)
				if (list[i].title != title)
					if (this.notHidden(list[i].title,this.config.inTiddler))
						childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder,false);

		if (depth == 0)
			return childOutput;
		else
			return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
	},

	// this if for the site map mode
	createTagglyListSiteMap: function(place,title,isTagExpr) {
		this.config.inTiddler = title; // nasty. should pass it in to traverse probably
		var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"),isTagExpr);
		return this.drawTable(place,
				this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
				"sitemap"
				);
	},

	macros: {
		tagglyTagging: {
			handler: function (place,macroName,params,wikifier,paramString,tiddler) {
				var parsedParams = paramString.parseParams("tag",null,true);
				var refreshContainer = createTiddlyElement(place,"div");

				// do some refresh magic to make it keep the list fresh - thanks Saq
				refreshContainer.setAttribute("refresh","macro");
				refreshContainer.setAttribute("macroName",macroName);

				var tag = getParam(parsedParams,"tag");
				var expr = getParam(parsedParams,"expr");

				if (expr) {
					refreshContainer.setAttribute("isTagExpr","true");
					refreshContainer.setAttribute("title",expr);
					refreshContainer.setAttribute("showEmpty","true");
				}
				else {
					refreshContainer.setAttribute("isTagExpr","false");
					if (tag) {
        				refreshContainer.setAttribute("title",tag);
						refreshContainer.setAttribute("showEmpty","true");
					}
					else {
        				refreshContainer.setAttribute("title",tiddler.title);
						refreshContainer.setAttribute("showEmpty","false");
					}
				}
				this.refresh(refreshContainer);
			},

			refresh: function(place) {
				var title = place.getAttribute("title");
				var isTagExpr = place.getAttribute("isTagExpr") == "true";
				var showEmpty = place.getAttribute("showEmpty") == "true";
				removeChildren(place);
				addClass(place,"tagglyTagging");
				var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
				if (countFound > 0 || showEmpty) {
					var lingo = config.taggly.lingo;
					config.taggly.createListControl(place,title,"hideState");
					if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
						createTiddlyElement(place,"span",null,"tagglyLabel",
								isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
						config.taggly.createListControl(place,title,"title");
						config.taggly.createListControl(place,title,"modified");
						config.taggly.createListControl(place,title,"created");
						config.taggly.createListControl(place,title,"listMode");
						config.taggly.createListControl(place,title,"excerpts");
						config.taggly.createListControl(place,title,"numCols");
						config.taggly.createTagglyList(place,title,isTagExpr);
						if (countFound == 0 && showEmpty)
							createTiddlyElement(place,"div",null,"tagglyNoneFound",lingo.labels.noneFound);
					}
				}
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
"	margin-top:0px; padding-top:0.5em; padding-left:2em;",
"	margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
"	color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
"	border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active  {",
"	border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
".excerptIndent { margin-left:4em; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
"  margin-bottom:0.5em; }",
".tagglyTagging .indent1  { margin-left:3em;  }",
".tagglyTagging .indent2  { margin-left:4em;  }",
".tagglyTagging .indent3  { margin-left:5em;  }",
".tagglyTagging .indent4  { margin-left:6em;  }",
".tagglyTagging .indent5  { margin-left:7em;  }",
".tagglyTagging .indent6  { margin-left:8em;  }",
".tagglyTagging .indent7  { margin-left:9em;  }",
".tagglyTagging .indent8  { margin-left:10em; }",
".tagglyTagging .indent9  { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
".tagglyNoneFound { margin-left:2em; color:[[ColorPalette::TertiaryMid]]; font-size:90%; font-style:italic; }",
"/*}}}*/",
		""].join("\n"),

	init: function() {
		merge(config.macros,this.macros);
		config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
		store.addNotification("TagglyTaggingStyles",refreshStyles);
	}
};

config.taggly.init();

//}}}

/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin

// syntax adjusted to not clash with NestedSlidersPlugin
// added + syntax to start open instead of closed

***/
//{{{
config.formatters.unshift( {
	name: "inlinesliders",
	// match: "\\+\\+\\+\\+|\\<slider",
	match: "\\<slider",
	// lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
	lookaheadRegExp: /(?:<slider)(\+?) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
	handler: function(w) {
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
			var btn = createTiddlyButton(w.output,lookaheadMatch[2] + " "+"\u00BB",lookaheadMatch[2],this.onClickSlider,"button sliderButton");
			var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
			panel.style.display = (lookaheadMatch[1] == '+' ? "block" : "none");
			wikify(lookaheadMatch[3],panel);
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
   },
   onClickSlider : function(e) {
		if(!e) var e = window.event;
		var n = this.nextSibling;
		n.style.display = (n.style.display=="none") ? "block" : "none";
		return false;
	}
});

//}}}


<<tagger>>
<<tagger>>
<<tagger>>
<<tagCloud =Sciences>>
<<tagger>>
{{floatleft{[img(120px,auto)[Pierre Teilhard de Chardin|imagesWiki/teilhard.jpg][http://fr.wikipedia.org/wiki/Teilhard]]}}}
''Teilhard de Chardin'' (1881 - 1955), jésuite, philosophe et paléontologue français. Il essaie dans son œuvre de concilier les connaissances scientifiques, et notamment l'évolution biologique, avec les dogmes de la foi chrétienne. Il développe ainsi une conception [[téléologique|Téléologie]], voire [[finaliste|Finalisme]], du monde et de la vie sur terre.

+++![Le phénomène humain]
Dans le //Phénomène humain//, il trace, parmi les premiers, une synthèse de l'Histoire de l'Univers selon l'état des connaissances de son époque et dans une optique à la fois évolutionniste et spiritualiste.
| [img(100%,auto)[Schéma du "Phénomène Humain" (interprétation de Jacques S. Abbatucci)|imagesWiki/Teilhard_phénomène_humain.gif][http://www.groupe-teilhard.org/index.htm]] |
| Schéma du "Phénomène Humain" (interprétation de Jacques S. Abbatucci) |c
===

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Teilhard de Chardin","prénom":"Pierre","initiales":"P"}</data>
+++[page web]
|vertical-align:bottom;<<tiddler ToggleRightSidebar>>|<<tiddler NavButtons>>|vertical-align:bottom;[[Open in a new window|http://plato.stanford.edu/entries/teleology-biology/]]&nbsp;&raquo;|
<html><div align="center"><iframe src ="http://plato.stanford.edu/entries/teleology-biology/" frameborder="0" width="100%" align="center" height="600"></iframe></div></html>
===
+++[texte]
Teleological Notions in Biology
First published Wed Mar 20, 1996; substantive revision Sun May 18, 2003

Teleological terms such as "function" and "design" appear frequently in the biological sciences. Examples of teleological claims include:

    * A (biological) function of stotting by antelopes is to communicate to predators that they have been detected.
    * Eagles' wings are (naturally) designed for soaring.

Teleological notions were commonly associated with the pre-Darwinian view that the biological realm provides evidence of conscious design by a supernatural creator. Even after creationist viewpoints were rejected by most biologists there remained various grounds for concern about the role of teleology in biology, including whether such terms are:

   1. vitalistic (positing some special "life-force");
   2. requiring backwards causation (because future outcomes explain present traits);
   3. incompatible with mechanistic explanation (because of 1 and 2);
   4. mentalistic (attributing the action of mind where there is none);
   5. empirically untestable (for all the above reasons).

Opinions divide over whether Darwin's theory of evolution provides a means of eliminating teleology from biology, or whether it provides a naturalistic account of the role of teleological notions in the science. Many contemporary biologists and philosophers of biology believe that teleological notions are a distinctive and ineliminable feature of biological explanations but that it is possible to provide a naturalistic account of their role that avoids the concerns above. Terminological issues sometimes serve to obscure some widely-accepted distinctions.

    * Teleomentalism
    * Teleonaturalism
    * Natural Selection Analyses of Function
    * Function and Design
    * Adaptation, Exaptation and Co-opted Use
    * Bibliography
    * Other Internet Resources
    * Related Entries

Teleomentalism

Teleomentalists regard the teleology of psychological intentions, goals, and purposes as the primary model for understanding teleology in biology. Aside from creationism, the most common form of teleomentalist view is that teleological claims in biology are mere metaphor — describing and explaining biological phenomena on the basis of more or less loose comparisons to psychological teleology. Those who hold teleology in biology to be metaphorical in nature typically regard it as eliminable; i.e., they believe that the science of biology would not be essentially altered if all references to teleology were eschewed.
Teleonaturalism

Those who reject teleomentalism typically seek naturalistic truth conditions for teleological claims in biology that do not refer to the intentions, goals, or purposes of psychological agents. Some teleonaturalists seek to reduce teleological language to forms of description and explanation that are found in other parts of science. One class of such views defines teleological notions cybernetically and maintains that teleology in biology is appropriate insofar as biological systems are cybernetic systems. Another, more widely-accepted approach treats functional claims in biology as part of the analysis of the capacities of a complex system into various component capacities.

Other forms of teleonaturalism regard the teleological aspects of biology as unique and ineliminable. One class of such views maintains that teleological claims in biology depend on natural values that apply to biological entities (such as what is good for an organism or species). A different approach, that avoids normative notions, is to define biological teleology explicitly in terms of natural selection and the theory of evolution.

Several theorists have argued for the pluralistic idea that biology may incorporate two notions of function, one to explain the presence of traits and the other to explain how those traits contribute to the complex capacities of organisms. Others have argued that these two apparently distinct notions of function can be unified by regarding the target of explanation as the biological fitness of a whole organism. Nonetheless, the mainstream view among philosophers of biology is that natural selection accounts best explain the majority of uses of teleological notions in biology.
Natural Selection Analyses of Function

Accounts of biological function which refer to natural selection typically have the form that a trait's function or functions causally explain the existence or maintenance of that trait in a given population via the mechanism of natural selection. Three components of this view can be usefully separated:

   1. Functional claims in biology are intended to explain the existence or maintenance of a trait in a given population;
   2. Biological functions are causally relevant to the existence or maintenance of traits via the mechanism of natural selection;
   3. Functional claims in biology are fully grounded in natural selection and are not derivative of psychological uses of notions such as design, intention, and purpose.

Variations on this account mostly center on the first two points.

   1. Some theorists maintain a distinction between the initial spread of a new phenotypic trait in a population from the maintenance of traits in populations.
   2. Some theorists adopt an etiological or backward-looking approach that analyzes the function of a trait only in terms of those effects of the trait which have in the past contributed to the selection of organisms with that trait. Others adopt a dispositional or forward-looking approach that analyzes function in terms of those effects it is disposed to produce that tend to contribute to the present or future maintenance of the trait in a population of organisms.

Function and Design

In the debate about biological teleology, relatively little attention has been paid to the notion of natural design. It is common for authors to slide between claims about function and design as if they accept this principle:

    A trait T is naturally designed for X if and only if X is a biological function of T.

Collapsing the notions of design and function in this manner has the advantage that if the notion of biological function is successfully naturalized then so is the notion of natural design.

The biological notion of design seems, however, to imply more than mere usefulness. Female turtles use their flippers to dig nests in sand, and doing so surely accounts for the maintenance of the trait in the population. So, on an etiological account, digging in sand is a function of the flippers. Yet it seems wrong to say that they are designed for that purpose. This suggests that function and design should be analyzed separately. One way to do this is as follows:

    Trait T is naturally designed to do X means that

       1. X is a biological function of T and
       2. T is the result of a process of change of (anatomical or behavioral) structure due to natural selection that has resulted in T being more optimal (or better adapted) for X than ancestral versions of T.

With respect to this analysis, to say that an eagle's wings are designed for soaring is to claim, first, that the ability to soar (as opposed to other kinds of flying) explains why some ancestral eagles had higher reproductive fitness than others and, second, that eagles' wings are better adapted for soaring than were ancestral versions of the wings. This second part is an historical claim that might be checked against the fossil record.
Adaptation, Exaptation and Co-opted Use

The notion of adaptation is controversial among biologists because it suggests the Panglossian belief that this is the best of all possible worlds. However comparative judgments about traits of organisms, e.g., that the traits of present organisms are better at producing some effect than the corresponding traits of ancestral organisms, do not require the Panglossian assumption. This is because the claim that A is more optimal or better adapted than B with respect to some function does not entail that A is optimal or even good with respect to that function.

Gould & Vrba (1982) would deny that sand-digging is a function of turtle flippers and prefer instead to label it an "exaptation". They recommend the use of "function" only when natural selection has "shaped" a trait for some use — i.e. the trait has undergone some modification in form that makes it more suited to the use. This recommendation, however, seeks to change ordinary biological usage rather than to elucidate it. Because it conflates the notions of design and function, it becomes necessary to mark the distinction between cases of selection with modification (function/design) and cases where a trait of an organism is coopted for a use for which it is not modified (exaptation). Even if the flippers of turtles are not specially modified for burying eggs in sand, the fact that they were so used helps to explain why turtles with flippers were selected over those without. Whether one prefers to call this a function or an exaptation is a terminological issue perhaps to be settled by one's taste for neologisms.
===
<<tiddler HideTiddlerTags>><<datadb>><data>{"db":[["Le coeur","bât","pour pomper le sang"],["Le coeur","bât","pour faire du bruit"],["La pluie","tombe","pour arroser les fleurs"],["La Lune","tourne autour de la Terre","pour provoquer des marées"],["La pomme","tombe","pour rejoindre le centre de la Terre"],["Les objets","se déplacent","pour rejoindre leur lieu naturel"],["Les oiseaux","ont des ailes","pour voler"],["La goutte d'huile","adopte une forme sphérique","pour minimiser la surface de contact avec l'eau"],["Le gaz","se dilate","pour occuper tout l'espace"],["La lumière","adopte telle trajectoire","pour minimiser la distance parcourue"],["Le coeur","bât","pour arroser les fleurs"],["La trotteuse d'une montre","tourne","pour indiquer le passage des secondes"]],"schema":[["S (le système)","","","y"],["fait A (action)","","","y"],["pour F (finalité)","","","y"]],"view":"query","zq":"","data":[["Le coeur","bât","pour pomper le sang"],["Le coeur","bât","pour faire du bruit"],["La pluie","tombe","pour arroser les fleurs"],["La Lune","tourne autour de la Terre","pour provoquer des marées"],["La pomme","tombe","pour rejoindre le centre de la Terre"],["Les objets","se déplacent","pour rejoindre leur lieu naturel"],["Les oiseaux","ont des ailes","pour voler"],["La goutte d'huile","adopte une forme sphérique","pour minimiser la surface de contact avec l'eau"],["Le gaz","se dilate","pour occuper tout l'espace"],["La lumière","adopte telle trajectoire","pour minimiser la distance parcourue"],["Le coeur","bât","pour arroser les fleurs"],["La trotteuse d'une montre","tourne","pour indiquer le passage des secondes"]]}</data>
<<tiddler Idées>>Est-ce que l'ApprocheEtiologique n'implique pas un temps cyclique/mythique?
!!!<<gradient horiz #fc3 #ffffff>>TextMarkup^^<<tiddler CloseThisOpen with: FormattingText  '« back'>>|<<toolbar editTiddler>>» ^^>>
{{tablecenter{
|bgcolor:#abf; <<gradient horiz #abf #fff #abf>>font-family:Verdana, Arial; @@color:#000; To Produce@@>> |bgcolor:#abf; <<gradient horiz #abf #fff #abf>>font-family: Verdana, Arial; @@color:#000;Markup@@>> |
|bgcolor:#ccc; ''Bold'' |bgcolor:#ccc; {{{''Bold''  (double single quotes)}}} |
|bgcolor:#eaeaea; ==Strikethrough== |bgcolor:#eaeaea; {{{==Depreciated==}}} |
|bgcolor:#ccc; --Strikethrough-- |bgcolor:#ccc; {{{--Strikethrough-- (double hyphen) }}} |
|bgcolor:#eaeaea; __Underline__ |bgcolor:#eaeaea; {{{__Underline__ (double shift-hyphen)}}}  |
|bgcolor:#ccc; //Italic// |bgcolor:#ccc; {{{//Italic// (double forward stroke)}}} |
|bgcolor:#eaeaea; Superscript: 12^^3^^=1728 |bgcolor:#eaeaea; {{{12^^3^^=1728 (double caret)}}} |
|bgcolor:#ccc; Subscript: C~~3~~H~~5~~N~~3~~O~~9~~ |bgcolor:#ccc; {{{C~~3~~H~~5~~N~~3~~O~~9~~ (double tilde)}}} |
}}}

+++![Tableaux]
|CssClass|k
|!heading column 1|!heading column 2|h
|row 1, column 1|row 1, column 2|
|row 2, column 1|row 2, column 2|
|>|COLSPAN|
|ROWSPAN| … |
|~| … |
|CssProperty:value;…| … |
|caption|c

Voir aussi le TableauPériodique
===

+++![Alignement du texte]
{{textright{
Aligné à droite?
}}}
{{textcenter{
__Souligné et centré__
}}}
{{textjustify{
//justifié ???// qlskdfj qlksdfj qmklsdfjq dmfkljqs dfmklqjsdflkqsj dfmlqjdf mqlksdfj mqklsdfj qsmldkfjq smkldfjqm kldfjqmlkdfj mqkldfj qmskldfj qmkldfj qmkdfjqmklsdfjskldjf slkjsdfmlkqjdf lskdjfkldjdfkjqfkl kldjf qdkfjq dflk df klj fqklfj klfdj kqfj lf qdklfj kl qklj qmsfqm mfklj qm lqml mqkl fjqmklf qlmfkj mqfklj fqlmkj l qfjklmqfj lqk fqflmkjqdfklm fklq jqfl qfmjl m mfqjfmq m fm fqmjklmqf jqflmk jfklm j fjlmqk qj Justifié Justifié Justifié Justifié Justifié Justifié Justifié Justifié Justifié Justifié Justifié Justifié Justifié Justifié 
}}}
===

+++![Formatages de texte]
{{fontsize18pt{This is a demo}}}
{{fontboldTimes{This is a demo}}}
{{smallcaps{This Is Small Caps}}}

!!Couleur
@@color:red;Rouge@@ @@color:orange;orange@@ @@color:yellow;jaune@@ @@color:green;vert@@ @@color:blue;bleu@@
{{{
@@color:red;Rouge@@ @@color:orange;orange@@ @@color:yellow;jaune@@ @@color:green;vert@@ @@color:blue;bleu@@
}}}

!!Alinéa
{{textindent1{
Voici un texte en alinéa. Voici un texte en alinéa. Voici un texte en alinéa. Voici un texte en alinéa. Voici un texte en alinéa. Voici un texte en alinéa. Voici un texte en alinéa. Voici un texte en alinéa. Voici un texte en alinéa. Voici un texte en alinéa. 
}}}

;autre genre d'alinéa
:ou bien encore

!!Lettrine
! Résumé
{{firstletter{
 @@color:#c06;C@@
 }}}eci est une lettrine.
===

+++![Listes et hiérarchies]
>''Eheu, litteras istas reperire non possum''^^[1]^^
>>''Estne tibi forte magna feles fulva et planissima''^^[2]^^
>>''Etiam capillus unus habet umbram''^^[3]^^
>>>^^[1]^^Unfortunately, I can't find those particular documents
>>>^^[2]^^Do you by chance happen to own a large, yellowish, very flat cat?
>>>^^[3]^^Even one hair has a shadow.
>>>level 3
>>level 2
>level 1

!!Liste ordonnée
#Premier niveau
##Deuxième niveau
###Troisième niveau
#Premier niveau
##Deuxième niveau
*sans numéro
**sans numéro
###ou avec

===

Voici une ligne horizontale:
----


+++![Sliders]
!!!<<gradient horiz #abf #fff>>&nbsp;[[Another type of slider]]^^<<tiddler CloseThisOpen with: SlidersOther  '« back'>>|<<toolbar editTiddler>>» ^^>>
''There is a very good slider plugin it's called the'' NestedSlidersPlugin that allows you to create many versatile sliders. You will see it used a lot in ~TWHelp.  

''This slider does not use tiddlers for the content.''  All the necessary information is located in the tiddler that contains the slider. They can be nested and you can create as many as you need in the same tiddler. They can be already open on load or closed as normal. They can be caused to open or close on 'mouseover' like this 
*@@position:relative;+++^45em^*[Put your cursor here]
<<<
*''See what I mean!!''
*You can mouseover to open or close.
*But you can still click if you want to
*Opinion: More irritating than useful but there could be the odd application.
<<<
===@@
!!!!!<<gradient horiz #aaa #fff>>&nbsp;Example 1>>
*+++[This Slider was closed on Loading (click to open)]
<<<
Its now been opened+++[click here to see the code.]
{{{
+++[This slider was Closed on loading]
You will see it used a lot in TWHelp.  
===
}}}
===
<<<
===

!!!!!<<gradient horiz #aaa #fff>>&nbsp;Example 2>>
*++++[This Slider was Opened on Loading (click to close)]
<<<
This slider is open+++[click here to see the code.]
{{{
++++[This slider was Opened on loading]
To have this slider default to being opened upon 
loading use 4 plus signs instead of three.
===
}}}
===
<<<
===

!!!!!<<gradient horiz #aaa #fff>>&nbsp;Example 3>>
@@position:relative;+++^45em^[A floating slider]
To have a slider float instead displacing the following text
use a caret (^) with the plus signs like this
{{{
+++^[slider label]
slider content
===
}}}

===  @@ 
!!!!Summary:
*~NestedSliderPlugin syntax allows you to wrap the "label" portion of
the definition in a """{{class wrapper{...}}}""", like this:
{{{
+++*{{someclass{[relevantInfo]}}}<<tiddler SideBarTabs>>=== 
}}}

*Using 3 plus signs {{{e.g. +++[Sliders - Nested]}}} causes the slider to remain closed on loading (i.e. click to slide open)
*Using 4 plus signs {{{e.g. ++++[Sliders - Nested]}}} causes the slider to be executed open on loading (i.e. click to close)
*Using a caret (^) with the plus signs {{{e.g. +++^[slider name etc.]}}} creates a slider that floats over text.
*For very detailed instructions see the actual plugin doumentation+++[slide it down here.]
!!!!The Nested Slider Plugin Documentation
<<tiddler NestedSlidersPlugin>>
===

*You can obtain the plugin at: http://www.TiddlyTools.com/#NestedSlidersPlugin
!!!The Lazy Slider
+++[The Lazy Slider]
<<tiddler LazySlider>>
===


!!!Tame wandering or stranded ~NestedSliders floating panel
+++[Slider position tweak]

Sometimes under certain conditions the floating slider panel can stray out of position.  By adding {{{@@position:relative;...@@}}} it resets the position of the floating panel so it stays beside its link.

{{{
@@position:relative;+++^35em^[What's In A Tiddler]
This is a tabbed list of some of the common things you can put into a tiddler.  They include text, images, CSS, HTML,  JavaScript, Plugins etc.
[[Go there...|WhatsInATiddler]]
===@@
}}}

@@position:relative;+++^35em^[What's In A Tiddler]
This is a tabbed list of some of the common things you can put into a tiddler.  They include text, images, CSS, HTML,  JavaScript, Plugins etc.
[[Go there...|WhatsInATiddler]]
===@@

===
!!!&nbsp; End
===

+++![Frames]
Pour ajouter une page web en frame (c'est à dire visible à l'intérieur d'un tiddler). Code:
{{{
<html><div align="center"><iframe src="http://www.tiddlywiki.org/" frameborder="0" width="100%" height="600"></iframe></div></html>
}}}
===

+++![Embed]
<html><div align="center"> <object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/L_aDpmfAzxI"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/L_aDpmfAzxI" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></div></html>
===



<<tiddler Concepts>>
<<tiddler Théories>>
<<tiddler Idées>>En fait, le gros problème qu'on a avec la vie et les fonctions, c'est qu'on ne sait pas les définir. On hésite entre analyse conceptuelle (qui rende compte des intuitions du langage) et définition théorique. Mais ce qu'on n'a pas, c'est une [[théorie]]. C'est-à-dire quelque chose qui puisse //expliquer// la vie et les fonctions, et pas seulement les décrire ou en donner les critères. En physique, pour expliquer le magnétisme, par exemple, on élabore une théorie de laquelle le magnétisme dérive. En biologie on n'a pas ça. L'usage des concepts de vie et de fonction ne s'appuie pas sur une théorie de la vie et des fonctions.

Voir aussi [[Millikan: Définition théorique sans théorie]].

<<tiddler [[ImageThéories]]>><<tagCloud =Théories>>
<<tiddler Théories>>
!Trois théories du vieillissement:
* ''Accumulation de mutations (Medawar, 1952):'' Les mutations délétères à effets tardifs ne sont pas contre-sélectionnées car elles se manifestent après la période reproductive, et donc ne rentrent pas dans le jeu de la sélection.
* ''Pléiotropie antagoniste (Williams, 1957):'' Certains gènes sélectionnés pour leurs effets positifs précoces on ensuite des effets délétères après la période reproductive. Par exemple le gène de fixation du calcium est bon en phase de croissance, mais peut provoquer de l'artériosclérose chez les individus agés.
* ''Soma jetable (Kirkwood, 1977):'' L'organisme doit allouer ses ressources aux divers parties et fonctions de l'organisme et arbitrer entre favoriser la reproduction ou la survie. La réparation des dégradations de l'organisme a un coût qui peut être en concurrence avec le coût de la reproduction.

Par ailleurs, on constate que le vieillissement est d'autant plus rapide que le taux de mort accidentelle est élevé.

La théorie de la pléiotropie antagoniste semble confirmée par le fait qu'on retrouve les mêmes gènes qui contrôlent le vieillissement chez de nombreuses espèces. Certains pensent qu'ils ont été sélectionnés pour leurs effets bénéfiques. Alors que s'il s'agissait seulement d'une accumulation de mutations délétères après la reproduction, c'est-à-dire si ces gènes n'avaient aucune signification biologique, s'ils n'avaient pas été sélectionnés, on n'aurait aucune raison de les retrouver d'une espèce à l'autre. Or, on retrouve de grandes fonctions communes de contrôle du vieillissement entre espèces: la levure, le nématode, la souris, la drosophile, etc.
Examples using the TiddlerListMacro:
!List Formatting
List all tiddlers tagged with "Plugin"
{{{<<tiddlerList tags:Plugin>>}}}
<<tiddlerList tags:Plugin>>
List top 1 plugins which are not templates:
{{{<<tiddlerList tags:"Plugin,-Template" top:1>>}}}
<<tiddlerList tags:"Plugin,-Template" top:1>>
List all tiddlers containing "Plugin" in their title and text (newest first):
{{{<<tiddlerList title:"Plugin" text:"Plugin" order:"-created">>}}}
<<tiddlerList title:"Plugin" text:"Plugin" order:"-created">>
List all tiddlers containing "Jack" in their title or text (oldest first):
{{{<<tiddlerList search:"Jack" order:"created">>}}}
<<tiddlerList search:"Jack" order:"created">>
List all tiddlers starting with "T":
{{{<<tiddlerList title:"^T">>}}}
<<tiddlerList title:"^T">>
List all tiddlers tagged with the current tiddler's title:
{{{<<tiddlerList tags:{{window.currentTiddler.title}}>>}}}
<<tiddlerList tags:{{window.currentTiddler.title}}>>
!Other Formats
Simple unnumbered list of tiddlers
{{{<<tiddlerList top:"3" format:"list">>}}}
<<tiddlerList top:"3" format:"list">>
Numbered list of tiddlers
{{{<<tiddlerList top:"3" format:"nlist">>}}}
<<tiddlerList top:"3" format:"nlist">>
Table with header and footer
{{{<<tiddlerList top:"3" format:"table" header:"Plugins" footer:"Tiddlers: %count">>}}}
<<tiddlerList top:"3" format:"table" header:"Plugins" footer:"Tiddlers: %count">>
Simple horizontal list:
{{{<<tiddlerList top:"3" format:"span">>}}}
<<tiddlerList top:"3" format:"span">>
Comma Separated list
{{{<<tiddlerList top:"3" format:"csv" header:"Plugins: [ " footer:" ]">>}}}
<<tiddlerList top:"3" format:"csv" header:"Plugins: [ " footer:" ]">>
Custom Separated list
{{{<<tiddlerList top:"10" separator:" - " format:"span">>}}}
<<tiddlerList top:"10" separator:" - " format:"span">>
!Grouping
Group tiddlers by first letter
{{{<<tiddlerList top:"7" group:"tiddler.title.substr(0,1)">>}}}
<<tiddlerList top:"7" group:"tiddler.title.substr(0,1)">>
!Custom Item Templates
List tiddlers in a custom format (title, date, abstract)
{{{<<tiddlerList tags:"News,-Template" itemTemplate:"* %link (%created)<<br>>%abstract\n" order:"-created">>}}}
<<tiddlerList tags:"News,-Template" filter:"tiddler.title!=currentTiddler.title" itemTemplate:"%link (%created)\n%abstract" order:"-created">>
!!!Beware of infinite recursion!!
!Advanced
Tiddlers created today
{{{<<tiddlerList format:table filter:"tiddler.created.formatString('YYYYMMDD')==(new Date()).formatString('YYYYMMDD')" header:{{'Tiddlers created on ' + (new Date()).formatString('DDD, DD MMM YYYY')}}>>}}}
<<tiddlerList format:table filter:"tiddler.created.formatString('YYYYMMDD')==(new Date()).formatString('YYYYMMDD')" header:{{'Tiddlers created on ' + (new Date()).formatString('DDD, DD MMM YYYY')}}>>
Fancy table with grouping on modified date
{{{<<tiddlerList top:"10" header:"|>|!Tiddlers|\n|bgcolor(#ddf):''Title''|bgcolor(#ddf):''Created''|" itemTemplate:"|%0|%4|\n" format:"table" group:"tiddler.created.formatString('DD MMM YYYY')" groupTemplate:"|>|bgcolor(#eef): ''Updated: %group'' |\n" dateFormat:"DDD, DD MM YYYY">>}}}
<<tiddlerList top:"10" header:"|>|!Tiddlers|\n|bgcolor(#ddf):''Title''|bgcolor(#ddf):''Created''|" itemTemplate:"|%0|%4|\n" format:"table" group:"tiddler.created.formatString('DD MMM YYYY')" groupTemplate:"|>|bgcolor(#eef): ''Updated: %group'' |\n" dateFormat:"DDD, DD MM YYYY">>
[[TiddlySnip - ConfigurationGuide|http://tiddlysnip.com/#ConfigurationGuide]]
Estas son las cosas que tengo que hacer:
/***

|Name|ToggleSideBarMacro|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#ToggleSideBarMacro|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Provides a button for toggling visibility of the SideBar. You can choose whether the SideBar should initially be hidden or displayed.

!Demo
<<toggleSideBar "Toggle Sidebar">>

!Usage:
{{{<<toggleSideBar>>}}} <<toggleSideBar>>
additional options:
{{{<<toggleSideBar label tooltip show/hide>>}}} where:
label = custom label for the button,
tooltip = custom tooltip for the button,
show/hide = use one or the other, determines whether the sidebar is shown at first or not.
(default is to show the sidebar)

You can add it to your tiddler toolbar, your MainMenu, or where you like really.
If you are using a horizontal MainMenu and want the button to be right aligned, put the following in your StyleSheet:
{{{ .HideSideBarButton {float:right;} }}}

!History
*23-07-06: version 1.0: completely rewritten, now works with custom stylesheets too, and easier to customize start behaviour. 
*20-07-06: version 0.11
*27-04-06: version 0.1: working.

!Code
***/
//{{{
config.macros.toggleSideBar={};

config.macros.toggleSideBar.settings={
         styleHide :  "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
         styleShow : " ",
         arrow1: "«",
         arrow2: "»"
};

config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
          var tooltip= params[1]||'toggle sidebar';
          var mode = (params[2] && params[2]=="hide")? "hide":"show";
          var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
          var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;
          var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
          if (mode == "hide")
             { 
             (document.getElementById("sidebar")).setAttribute("toggle","hide");
              setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
             }
};

config.macros.toggleSideBar.onToggleSideBar = function(){
          var sidebar = document.getElementById("sidebar");
          var settings = config.macros.toggleSideBar.settings;
          if (sidebar.getAttribute("toggle")=='hide')
             {
              setStylesheet(settings.styleShow,"ToggleSideBarStyles");
              sidebar.setAttribute("toggle","show");
              this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
              }
          else
              {    
               setStylesheet(settings.styleHide,"ToggleSideBarStyles");
               sidebar.setAttribute("toggle","hide");
               this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
              }

     return false;
}

setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");

//}}}
/***
|Name:|ToggleTagPlugin|
|Description:|Makes a checkbox which toggles a tag in a tiddler|
|Version:|3.1.0 ($Rev: 4907 $)|
|Date:|$Date: 2008-05-13 03:15:46 +1000 (Tue, 13 May 2008) $|
|Source:|http://mptw.tiddlyspot.com/#ToggleTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}
* TagName - the tag to be toggled, default value "checked"
* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler
* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'
(If a parameter is '.' then the default will be used)
* TouchMod flag - if non empty then touch the tiddlers mod date. Note, can set config.toggleTagAlwaysTouchModDate to always touch mod date
!!Examples
|Code|Description|Example|h
|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|
|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|
|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|
|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|
|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|
!!Notes
* If TiddlerName doesn't exist it will be silently created
* Set label to '-' to specify no label
* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2
!!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing
* Should convert to use named params
***/
//{{{

if (config.toggleTagAlwaysTouchModDate == undefined) config.toggleTagAlwaysTouchModDate = false;

merge(config.macros,{

	toggleTag: {

		createIfRequired: true,
		shortLabel: "[[%0]]",
		longLabel: "[[%0]] [[%1]]",

		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			var tiddlerTitle = tiddler ? tiddler.title : '';
			var tag   = (params[0] && params[0] != '.') ? params[0] : "checked";
			var title = (params[1] && params[1] != '.') ? params[1] : tiddlerTitle;
			var defaultLabel = (title == tiddlerTitle ? this.shortLabel : this.longLabel);
			var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
			var touchMod = (params[3] && params[3] != '.') ? params[3] : "";
			label = (label == '-' ? '' : label); // dash means no label
			var theTiddler = (title == tiddlerTitle ? tiddler : store.getTiddler(title));
			var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {
				if (!store.tiddlerExists(title)) {
					if (config.macros.toggleTag.createIfRequired) {
						var content = store.getTiddlerText(title); // just in case it's a shadow
						store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);
					}
					else 
						return false;
				}
				if ((touchMod != "" || config.toggleTagAlwaysTouchModDate) && theTiddler)
						theTiddler.modified = new Date();
				store.setTiddlerTag(title,this.checked,tag);
				return true;
			});
		}
	}
});

//}}}

[>img[tooltip|IconePoubelle][Trash]]<<emptyTrash>><<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title])>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->

<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>WikiPhilo</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>
/***
|''Name:''|TrashPlugin|
|''Version:''|1.1.0 (Dec 12, 2006) |
|''Source:''|http://ido-xp.tiddlyspot.com/#TrashPlugin|
|''Author:''|Ido Magal (idoXatXidomagalXdotXcom)|
|''Licence:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
|''Browser:''|??|

!Description
This plugin provides trash bin functionality.  Instead of being permanently removed, deleted tiddlers are tagged with "Trash."  Empty the trash by clicking on the <<emptyTrash>> button in the [[Trash]] tiddler. Holding down CTRL while clicking on "delete" will bypass the trash.

!Installation instructions
Create a new tiddler in your wiki and copy the contents of this tiddler into it.  Name it the same and tag it with "systemConfig".
Save and reload your wiki.

!Uninstallation instructions
1. Empty the [[Trash]] ( <<emptyTrash>> )
2. Delete this tiddler.

!Revision history
* V1.1.0 (Dec 12, 2006) 
** added movedMsg (feedback when tiddler is tagged as Trash)
** make sure tiddler actually exists before tagging it with "Trash"
** fetch correct tiddler before checking for "systemConfig" tag
* V1.0.3TT.1 (TiddlyTools variant) (Dec 11, 2006) 
** don't create Trash tiddler until needed
** remove Trash tiddler when no trash remains
** don't tag Trash tiddler with "TrashPlugin"
** moved all user-visible strings to variables so they can be translated by 'lingo' plugins
** use displayMessage() instead of alert()
* v1.0.3 (Dec 11, 2006)
** Fixed broken reference to core deleteTiddler.
** Now storing reference to core deleteTiddler in emptyTrash macro.
** Reduced deleteTiddler hijacking to only the handler.
* v1.0.2 (Dec 11, 2006)
** EmptyTrash now uses removeTiddler instead of deleteTiddler.
** Supports trashing systemConfig tiddlers (adds systemConfigDisable tag).
* v1.0.1 (Dec 10, 2006)
** Replaced TW version with proper Core reference.
** Now properly hijacking deleteTiddler command.
* v1.0.0 (Dec 10, 2006)
** First draft.

!To Do
* Make trash keep only n days worth of garbage.
* Add undo.
* rename deleted tiddlers?

!Code
***/
//{{{

config.macros.emptyTrash = 
{
	tag: "Trash",
	movedMsg: "'%0' has been tagged as '%1'",
	label: "vider la corbeille",
	tooltip: "Delete items tagged as %0 that are older than %1 days old",
	emptyMsg: "La corbeille est vide.",
	noneToDeleteMsg: "There are no items in the trash older than %0 days.",
	confirmMsg: "The following tiddlers will be deleted:\n\n'%0'\n\nIs it OK to proceed?",
	deletedMsg: "Deleted '%0'",

	handler: function ( place,macroName,params,wikifier,paramString,tiddler )
	{
		var namedParams = (paramString.parseParams(daysOld))[0];
		var daysOld = namedParams['daysOld'] ? namedParams['daysOld'][0] : 0; // default
		var buttonTitle = namedParams['title'] ? namedParams['title'][0] : this.label;
		createTiddlyButton ( place, buttonTitle, this.tooltip.format([ config.macros.emptyTrash.tag,daysOld ]),
		this.emptyTrash( daysOld ));
	},

	emptyTrash: function( daysOld )
	{
		return function()
		{
			var collected = [];
			var compareDate = new Date();
			compareDate.setDate( compareDate.getDate() - daysOld );
			store.forEachTiddler(function ( title,tiddler )
			{
				if ( tiddler.tags.contains( config.macros.emptyTrash.tag ) && tiddler.modified < compareDate )
					collected.push( title );
			});

			if ( collected.length == 0 )
			{
				if ( daysOld == 0 )
					displayMessage( config.macros.emptyTrash.emptyMsg );
				else
					displayMessage( config.macros.emptyTrash.emptyMsg.format( [daysOld] ) );
			}
			else {
				if (	confirm( config.macros.emptyTrash.confirmMsg.format( [collected.join( "', '" )] ) ) )
				{
					for ( var i=0;i<collected.length;i++ )
					{
						store.removeTiddler( collected[i] );
						displayMessage( config.macros.emptyTrash.deletedMsg.format( [collected[i]] ) );
					}
				}
			}
			// remove Trash tiddler if no trash remains
			if ( store.getTaggedTiddlers( config.macros.emptyTrash.tag ).length == 0 ) {
				story.closeTiddler( config.macros.emptyTrash.tag,true,false);
				store.removeTiddler( config.macros.emptyTrash.tag );
			}
			else
				story.refreshTiddler( config.macros.emptyTrash.tag,false,true );
			store.setDirty( true );
		}
	}
}

////////////////// hijack delete command

config.macros.emptyTrash.orig_deleteTiddler_handler = config.commands.deleteTiddler.handler;
config.commands.deleteTiddler.handler = function( event,src,title )
	{
		// if tiddler exists (i.e., not a NEW, unsaved tiddler in edit mode) and not bypassing Trash (holding CTRL key)
		if ( store.tiddlerExists( title ) && !event.ctrlKey )
		{
			// if Trash tiddler doesn't exist yet, create it now...
			if (!store.tiddlerExists( config.macros.emptyTrash.tag ))
				store.saveTiddler( config.macros.emptyTrash.tag,config.macros.emptyTrash.tag,
					"[>img[tooltip|IconePoubelle][Trash]]<<emptyTrash>><<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title])>>","TrashPlugin",new Date(),null );
			// set tags on tiddler
			store.setTiddlerTag( title,1,config.macros.emptyTrash.tag );
			store.setTiddlerTag( title,1,"excludeLists" );
			store.setTiddlerTag( title,1,"excludeMissing" );
			var tiddler=store.fetchTiddler(title);
			if (tiddler.tags.contains( "systemConfig" ))
				store.setTiddlerTag( title,1,"systemConfigDisable" );
			// close tiddler, autosave file (if set), and give user feedback
			story.closeTiddler( title,true,event.shiftKey || event.altKey );
			if( config.options.chkAutoSave )
				saveChanges();
			displayMessage(config.macros.emptyTrash.movedMsg.format( [ title,config.macros.emptyTrash.tag ] ));
		}
		else {
			config.macros.emptyTrash.orig_deleteTiddler_handler.apply( this, arguments );
		}
		story.refreshTiddler( config.macros.emptyTrash.tag,false,true );
		return false;
	};
//}}}
<<tiddler Citation>><<tiddler RéférenceLivre>>
!définitionBiologie
<part définitionBiologie> "Le sujet de nos recherches sera les diverses formes et manifestations de la vie, les lois et les conditions déterminant leur existence, ainsi que les mécanismes par lesquels celles-ci sont mises en œuvre. Nous désignerons la science qui traite de ces sujets du nom de biologie ou science de la vie." ([[Treviranus 1802:4]], cité par [[Mayr, E (1997): Qu`est-ce que la biologie?]], p. 123) </part>

<<tiddler AutoRefresh on>>[img[tooltip|IconeLivreOuvert]]

++++![Résumé]
L'une des premières mentions de la "biologie" en tant que discipline scientifique dont le domaine est le vivant.
===

+++![Chapitres]
<<newChapterHere>>
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
etc.
===

<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var titrelivre=DataTiddler.getData(titre,"titrelivre")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var villeédition=DataTiddler.getData(titre,"villeédition")
   var noméditeur=DataTiddler.getData(titre,"noméditeur")
   var dateédition=DataTiddler.getData(titre,"dateédition")
   return "|bgcolor(#ffff99): ''Référence:'' "+nom+", "+initiales+" ("+datepublication+"): //"+titrelivre+"//. "+villeédition+": "+noméditeur+", "+dateédition+"|";
</script>
----
+++^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var pagescitation=DataTiddler.getData(titre,"pagescitation")
   return nom+", "+initiales+" "+datepublication+":"+pagescitation;
</script>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere label:"nouvelle note">><<newChapterHere>>
{{floatleft{[img(120px,auto)[Gottfried Reinhold Treviranus, wikipedia|./imagesWiki/Treviranus.jpg][http://en.wikipedia.org/wiki/Gottfried_Reinhold_Treviranus]]}}}

''Gottfried Reinhold Treviranus'' (1776 - 1837), naturaliste allemand, est l'un des premiers à introduire, en 1802, le terme "[[biologie|Biologie]]" pour désigner cette nouvelle discipline scientifique dont l'objet sont les [[êtres vivants|Vie]] en tant que tels.

!Bibliographie
* 1802 : [[Biologie, oder Philosophie der lebenden Natur|Treviranus, GR (1802): Biologie]], vol. 1, Göttingen, J. R. Röwer.

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Treviranus","prénom":"Gottfried Reinhold","initiales":"GR"}</data>
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'wikiphilo';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}

// create some shadow tiddler content
merge(config.shadowTiddlers,{

'WelcomeToTiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),

'TspotControls':[
 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),

'TspotSidebar':[
 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].join("\n")

});
//}}}
<<tiddler Théories>>
!Définition
Voir l'article sur [[Stanford Encyclopedia of Philosophy|http://plato.stanford.edu/]]:
++++[Teleological Notions in Biology]
<<tiddler TeleologicalNotionsInBiology>>
===

<br>
!Attributions téléologiques
On peut distinguer trois cas paradigmatiques d'attributions téléologiques:
# ''Attribution fonctionnelle'' (//functional ascription//): "La fonction du coeur est de pomper le sang." +++[exemples] <<tiddler TeleologieExemples>> ===

# ''Attribution de buts'' (//goal-ascription//): "Le but du rat est d'atteindre la nourriture au fond du labyrinthe."
# ''Attribution intentionnelle'' (//intention-ascription//): "Jean travaille dur pour rentrer chez lui plus tôt."
(Ces exemples sont donnés par Morton Beckner, "Function and Teleology", 1969)

!![[Les quatre formes de la téléologie (selon Mayr)]]
<<tiddler [[Les quatre formes de la téléologie (selon Mayr)]]>>

|<<tiddler [[./troisTypesTéléologie]]>> |
<part troisTypesTéléologie hidden>
++++!![Trois types de téléologie]
On doit distinguer trois types de téléologie en fonction de ce à quoi on l'applique:
*''Comportements:'' Cela concerne principalement des individus entiers. Leur comportement peut être vu comme [[orienté vers un but|GoalDirected]]. On peut par exemple leur appliquer l'IntentionalStance de [[Dennett|Dennett, Daniel]]. On peut les considérer comme des agents rationnels et leur attribuer des croyances et des désirs qui expliquent leur comportement.
*''Processus:'' La régulation de la température corporelle ou de la pression sanguine sont des processus qu'on peut dire [[orientés vers un but|GoalDirected]], mais qu'on ne peut pas considérer comme les actions volontaires d'un agent. C'est je crois le sens auquel [[Ernst Mayr|Mayr, Ernst]] applique le concept de [[Téléonomie]].
*''Organisation:'' On peut également voir l'organisation des êtres vivants comme répondant à une [[finalité|Finalité]], comme s'ils étaient le fruit d'un [[dessein|Design]]. C'est aussi en ce sens qu'on emploie le langage [[fonctionnel|Fonction]]: les oiseaux ont des ailes //pour// voler; le coeur est fait //pour// pomper le sang.
===
</part>

++++!![Justification des explications téléologiques en biologie]
Je crois qu'il y a au moins --deux-- trois façons de justifier les explications téléologiques en biologie:
* ''[[Narration historique|Narrations causale et téléologique]]'' La première est liée à notre manière de raconter les choses pour les comprendre, et à notre position historique particulière: afin de décrire les phénomènes présents, nous devons raconter les événements qui ont dû se produire dans le passé //pour// que ces phénomènes aient lieu. La finalité en question n'est pas une cause future, mais la fin de l'histoire qu'on raconte pour expliquer le présent. C'est donc une espèce de biais épistémique. +++[suite]>
<<tiddler [[Narrations causale et téléologique]]>>
===

* ''[[Invariance et attracteurs|Téléologie et Invariance]]'' L'autre justification est davantage ontologique et consiste à dire que certains processus naturels ont un terme, une fin, plus facile à prédire que les mécanismes causals qui y ont conduit, notamment parce qu'il peut y avoir une multitude de processus qui débouchent sur le même résultat. La finalité, au sens d'état final, est ici explicative dans la mesure où elle permet de faire abstraction des détails causals (inconnus ou variables).+++[suite]>
<<tiddler [[Téléologie et Invariance]]>>
===

* ''[[Téléologie et Ordre Naturel]]'' On peut voir la téléologie, non comme une notion temporelle, mais comme une notion structurelle associée à l'explication d'un ordre naturel qu'on ne peut pas attribuer au hasard.+++[suite]>
<<tiddler [[Téléologie et Ordre Naturel]]>>
===

''Téléologie et probabilités: entre le hasard et la nécessité:''+++[voir ceci]>
<<tiddler [[Téléologie et principe anthropique]]>>
===
 Les --deux-- trois justifications précédentes sont d'une certaine manière liées à un problème de perception des probabilités.++++[suite]>
<<tiddler [[Téléologie et probabilités]]>>
===
<<tiddler Idées>> Lors de certains processus, l'état final est relativement indépendant de l'état initial. Le cas le plus simple est celui de la bille dans un bol: on sait qu'elle finira au fond du bol, quel que soient sa position et son mouvement initiaux (à l'intérieur de certaines limites). Autrement dit, on peut prédire l'état final indépendamment (ou presque) de l'état initial; ce qui veut dire que plusieurs états initiaux peuvent aboutir au même état final. De plus, on ne connaît pas toujours le mécanisme causal qui conduit d'un état initial donné à l'état final prévisible.

Le langage téléologique, dans ce cadre, permet de faire abstraction de détails superflus et/ou inconnus pour ne mentionner que l'invariant que constitue l'état final. Il permet donc de passer du particulier (le mécanisme causal concret) au général (l'état final invariant). A la question: "Pourquoi le verre s'est-il brisé?", on peut donner une explication causale et une explication téléologique. Cette dernière est: "Le verre s'est brisé //pour// augmenter l'entropie de l'univers". Cette réponse n'est pas fausse dans la mesure où il aurait tôt ou tard fini par se briser en vertu de la seconde loi de la thermodynamique, mais elle est incomplète, car on peut toujours demander: "Pourquoi s'est-il brisé //à ce moment-là//?" Pour répondre à cette seconde question il faut recourir à une explication causale: "Parce je l'ai fait tomber par terre... et parce que le verre a telles et telles propriétés physiques qui font que sa résistance aux chocs... etc."

Les propositions téléologiques sont par ailleurs sujettes à réfutation, dans la mesure où elles entraînent des prédictions. En physique, par exemple, dire qu'un système adopte telle configuration //pour// minimiser son énergie, signifie:
# que cette configuration permet effectivement de minimiser l'énergie du système (contrairement à d'autres configurations possibles), et
# que le fait de minimiser l'énergie du système est bien le facteur qui explique sa configuration.
On peut réfuter (1) en montrant que d'autres configurations minimisent davantage l'énergie, et (2) en trouvant un autre facteur plus pertinent.

Invoquer une finalité (un état final) n'explique pas en quoi cette finalité consiste. Et la réponse ne sera pas la même selon les phénomènes physiques impliqués, et encore moins lorsqu'il s'agit de phénomènes biologiques pour lesquels, dans de nombreux cas, la réponse est d'ordre génétique.

Invoquer une finalité est une manière de dire que le phénomène en question n'est pas aléatoire, contrairement à une explication causale. En effet, si tous les phénomènes ont une cause (laissons entre parenthèses les phénomènes quantiques), alors mêmes les phénomènes aléatoires peuvent recevoir une description causale.

Identifier une finalité, c'est identifier un invariant. La nature de cet invariant restant à déterminer. Cette finalité permet de comprendre les mécanismes causals qui sont à l'œuvre, dans la mesure où ils sont dirigés vers cet invariant. La téléologie a donc une fonction heuristique très importante, et une fonction explicative complémentaire des explications causales. Une explication causale ne peut pas être exhaustive car elle est limitée et ne peut pas forcément rendre compte de quelque chose qui est commun à de nombreuses séries causales différentes. Ce principe commun est justement ce que désigne la finalité. Par exemple, on peut montrer comment un mécanisme causal contribue à accroître l'entropie de l'univers, mais cela n'explique pas pourquoi //tous// les mécanismes y contribuent également.

----
En physique, je dis qu'une goutte d'eau se met en boule pour minimiser son énergie interne. Il y a certaines choses dont je peux parler téléologiquement, d'autres non. Quel est le critère&nbsp;?
En premier lieu, il semble que je dois être capable de prévoir l'état final, indépendamment du parcours causal. En fait, ma goutte d'eau, en fonction du contexte, va prendre n'importe quelle forme qui lui permette de minimiser son énergie. En fait, on peut penser aux surfaces de savon qu'on dispose dans différents trucs et qui vont prendre différentes formes qui ont toutes en commun d'être la forme qui donne la surface minimale. (Pareil qu'une goutte d'eau dans l'huile) C'est-à-dire que quelle que soit la forme qu'adopte la surface de savon (laquelle peut être difficile à prédire) je peux être pratiquement sûr que ce sera la surface minimale.
<<tiddler Idées>> La [[téléologie|Téléologie]] n'est pas forcément une notion temporelle. Elle pourrait plutôt faire référence à l'idée d'un ordre naturel où chaque chose est à sa place et joue le rôle qui lui correspond. Cet ordre peut avoir été pensé et imposé par un créateur divin, mais pas forcément. On peut envisager un ordre immanent à la nature.

D'un côté, cette conception "structurelle" et non temporelle de la téléologie permet de faire le lien entre la téléologie biologique et technique. Dans la nature comme dans une horloge, ce qui prime, c'est l'ordre, l'organisation, l'agencement des parties dans la totalité.

D'un autre côté, cette conception rejoint la conception "probabiliste" de la téléologie, c'est-à-dire la conception selon laquelle la téléologie sert à expliquer une contingence non aléatoire. Comment expliquer quelque chose qui est hautement improbable et qu'on ne peut pas attribuer au hasard? La chose en question, c'est justement l'ordre, l'organisation que manifestent les êtres vivants, ainsi que l'organisation de leurs relations.

Partant de là, on peut rejoindre également la [[Théorie algorithmique de l`information]] au sens où les structures ordonnées sont les plus improbables. (@@Voir cette histoire de mesure de Lévin dont je ne me souviens plus!@@)
<<tiddler Idées>>La question de la téléologie ne se pose pas uniquement dans le cadre de la biologie. On l'a vue réapparaître notamment en cosmologie à partir de l'idée que les constantes fondamentales sont ajustées à la perfection pour produire un univers où peut apparaître la vie et la conscience, toutes les autres combinaisons aboutissant à un univers stérile. C'est la question du principe anthropique. Les choses se présentent //comme si// les constantes fondamentales de l'univers étaient ajustées //pour// engendrer la vie. (Je ne sais pas si c'est Hubert Reeves qui disait que l'univers était 'gros' de la vie.)

Dans ce cas, qu'est-ce qui nous amène à penser que l'univers a été //conçu pour// que la vie et la conscience puissent apparaître? Si on peut répondre à cette question, alors peut-être qu'on pourra mieux comprendre ce qu'il y a de si attractif dans l'idée d'une téléologie biologique. S'agit-il du même mécanisme psychologique?

Quoi qu'il en soit, il est évident qu'il ne s'agit pas de valider d'aucune façon l'idée qu'il existe effectivement une finalité intrinsèque à l'univers ou aux êtres vivants. Au contraire, je fais le choix d'affirmer que cette finalité n'est pas indépendante mais au contraire propre à l'Homme, c'est-à-dire relative à la manière dont il appréhende et connaît le monde. La finalité n'est pas propre à l'univers, à la vie, ni à quelque autre entité naturelle ou surnaturelle; elle est propre à //nous//.

Donc, par quel méchanisme psychologique sommes-nous amenés à concevoir l'univers et les êtres vivants comme orientés vers ou conçus pour quelque chose? Je crois que c'est lié à la question de la contingence et de la complexité. On pourrait traduire la pensée qui nous pousse à reconnaître une finalité dans un système par la phrase: "Ce n'est pas un hasard si..." Et derrière ce //si// il y a l'extraordinaire ajustement des constantes fondamentales de l'univers. Ce n'est pas un hasard car la probabilité pour arriver à //ce résultat// par un tirage aléatoire est extêmement faible, infiniment plus faible que de gagner à la lotterie. Ce n'est pas un hasard car cette situation défie les lois du hasard, d'autant plus si l'on conçoit un tirage unique. Certes, il est toujours //possible// de gagner le gros lot avec un seul tirage, mais la probabilité est tellement faible que n'importe quelle autre explication en devient, par comparaison, vraissemblable. Notamment l'explication divine. Si Dieu existe (mais comment quantifier la probabilité de son existence? une chance sur deux? je me demande pas si Pascal a fait le calcul!) alors le fait qu'il ait ajusté les paramètres universels comme un horloger ajuster les ressorts de sa montre devient une explication toute naturelle.

Un de mes professeurs de collège me disait, pour justifier son scepticisme à propos du Big Bang, qu'il ne pouvait pas croire qu'une explosion puisse aboutir à une bibliothèque. Ici c'est l'apparition d'ordre à partir du désordre qui est incroyable. Evidemment, le second principe de la thermodynamique n'est pas violé si l'entropie totale de l'univers augmente. Autrement dit, il peut y avoir production locale d'ordre (diminution locale de l'entropie) à condition que cela soit compensé par une production de désordre plus importante. En on sait maintenant que ces mécanismes existent, notamment avec les sciences dites de la complexité. Nous serions donc seulement face à un biais cognitif qui fait que nous voyons l'ordre produit, mais pas le désordre compensatoire, et le faux déséquilibre entre les deux rend attractive l'idée d'une finalité, ou du moins fait douter de l'explication scientifique face à une histoire du monde où une grande explosion finit par donner lieu à de la vie intelligente.

A propos du second principe de la thermodynamique, on peut penser à la nouvelle (nom?) de Isaac Asimov qu'appréciait tant Prigogine (?). La question que pose cette nouvelle est la possibilité de renverser le second principe, contrecarrer la croissance de l'entropie qui aboutit nécessairement à la stérilisation de l'univers par l'équilibre thermodynamique. Une famille d'ordinateurs à l'intelligence illimitée cherche une réponse à cette question pendant tellement de temps que la mort thermodynamique finit par arriver. Et c'est à ce moment précis que le //fiat// est prononcé par cette 'intelligence' (on ne peut plus vraiment parler de machine, puisque la matière a entièrement disparu) et que tout recommence. Autrement dit, on ne peut pas renverser la vapeur, si ce n'est par la destruction totale de l'univers et la création d'un autre.

Ca me fait penser aussi au film //The Hitchhicker's Guide to the Galaxy// où un autre ordinateur à l'intelligence supérieure se voit poser la question de "L'univers, la vie, et tout le reste...", et la réponse que donne la machine, après une réflexion de plusieurs siècles ou millénaires, est: "42"! Immense déception. Mais à question absurde, réponse absurde.

Revenons à nos moutons. Qu'est-ce qui pourrait nous ôter l'envie de reconnaître dans l'ajustement des constantes universelles le signe d'une téléologie ou d'une Intelligence? Par exemple, si au lieu d'un unique tirage dans la lotterie universelle on en envisage un nombre illimité, c'est-à-dire si on envisage qu'il existe une multiplicité d'univers, alors il y en a nécessairement un où les constantes sont propices à l'apparition d'une vie intelligente qui s'interroge sur l'ajustement des constantes universelles. Or, cet univers là, c'est le nôtre. Autrement dit, il n'y a qu'un effet de perspective: celui qui gagne au loto peut bien se demander pourquoi il a gagné, mais la seule réponse c'est que si ce n'avait pas été lui, ça aurait été un autre qui se serait posé la même question. Quand le fait qu'il y ait un gagnant devient nécessaire, l'attrait du finalisme est moins grand. Mais on peut encore réduire l'attrait du finalisme si on pense que, étant donné un nombre de tirages infini (mais de quel ordre d'infini parle-t-on?), on pourrait toucher une infinité de fois le gros lot. En d'autres termes, on pourrait envisager une infinité d'univers habités par des êtres intelligents qui se posent la question du pourquoi de leur existence.

Curieusement, cette question de l'infinité des mondes possibles rejoint celle que se sont posés les théologiens après la condamnation par Tempier des thèses averroistes. Et c'est cette question qui, selon Blumenberg, aurait amené le développement moderne des mathématiques.
<<tiddler Idées>> Tous les phénomènes sont explicables en vertu de leur histoire causale, y compris les phénomènes hautement improbables (la goutte d'encre dans un verre d'eau qui se reconstitue après s'être diluée). Mais cette explication n'est pas toujours suffisante. Face à la goutte d'eau qui se reconstitue, on aurait beau savoir comment cela est possible, on continuerait à chercher une explication. En effet, dans la mesure où l'événement semble contingent (il aurait pu ne pas se produire), faire référence à l'histoire causale n'est pas suffisant, car il reste à expliquer pourquoi c'est //cette histoire là// s'est produite et pas une autre. Autrement dit, tous les événements ne sont pas équiprobables, et il peut sembler pour le moins étrange que celui qui se produit effectivement soit l'un des moins probables. A la question du comment (histoire causale) s'ajoute donc la question du pourquoi (la justification de l'occurence //cette// histoire causale). Une réponse possible est: le hasard. Mais le hasard n'est pas toujours la meilleure explication.

Par exemple, lorsque l'on pose la question, "Pourquoi l'ADN a-t-il remplacé l'ARN au cours de l'évolution?", la réponse est généralement: "Afin de permettre l'apparition de génomes de grande taille". En effet, l'ADN est plus stable que l'ARN, ce qui lui permet d'avoir une taille supérieure. La réponse est clairement téléologique. Elle consiste à dire: "Ce n'est pas un hasard". Autrement dit, si cet événement s'est produit (car il aurait pu ne pas se produire), c'est n'est pas par hasard. En effet, quand on observe les organismes postérieurs à cette évolution, on constate qu'ils sont plus complexes, ou mieux adaptés, ou quoi que ce soit d'autre qui justifie (de manière non causale) qu'il ne s'agit pas d'un simple hasard. De plus, on ignore quel a été le mécanisme effectif de cette transformation; ce qui veut dire que plusieurs histoires causales sont éventuellement possibles et que, par conséquent, le fait de décrire //une// histoire causale (mais s'il s'agit de celle qui s'est réellement produite) pourquoi l'évolution s'est orientée dans cette direction et pas une autre.

On pourrait dire que toutes les directions de l'évolution biologique ne sont pas équiprobables, et c'est ça que les explications téléologiques cherchent à expliquer. Cette explication ne se substitue pas à l'histoire causale, elle la complète. On retrouve la même chose avec l'évolution du temps physique, qui n'est pas symétrique. En physique, l'assymétrie se justifie à partir de la thermodynamique, par exemple. En biologie, le sens de l'évolution se justifie à partir de la sélection naturelle. Certaines voies évolutives sont privilégiées dans la mesure où elles confèrent aux organismes qui les empruntent un avantage sélectif. Ainsi, on va expliquer que le passage de l'ARN à l'ADN a fourni un avantage sélectif, et c'est //pour// cela que les organismes ont suivi cette voie.

On peut traduire ce genre d'explication téléologique en termes causals: l'ADN a remplacé l'ARN //parce que// ou "//à cause que//" les organismes à ADN ont un avantage sélectif. Ensuite on peut discuter sur la nature de cet avantage: par exemple, ils auraient eu un génome de taille supérieure. On peut la contester, proposer des explications alternatives```Le remplacement de l'ARN par de l'ADN n'aurait pas immédiatement produit des génomes de plus grande taille; l'avantage sélectif immédiat aurait été plutôt une résistance des virus à ADN envers les défenses cellulaires "anti-ARN". (Voir l'article de Patrick Forterre, "Des virus ont-ils inventé l'ADN?", //Pour la Science//, Dossier juillet-septembre 2008, p.29)```, etc. Quoi qu'il en soit, l'explication par la sélection naturelle n'est pas identique à une explication par l'histoire causale. Dire que les virus ont adopté l'ADN //pour// se protéger des défenses cellulaires anti-ARN, c'est une manière de dire "//parce que// cela leur apportait un avantage sélectif dans la mesure où...". A partir de là, plusieurs histoires causales sont possibles et compatibles avec le mécanisme de sélection naturelle.

<<tiddler Concepts>>
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 25/09/2008 11:21:51 | AlbertoMolina | [[wikiphilo.html|file:///media/TOTOMOBILE/Mis%20textos/WikiPhilo/wikiphilo.html]] | [[store.cgi|http://wikiphilo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wikiphilo.tiddlyspot.com/index.html]] | . | ok |
| 29/09/2008 15:41:32 | AlbertoMolina | [[WikiPhilo.html|file:///D:/Mis%20textos/WikiPhilo/WikiPhilo.html]] | [[store.php|file:///D:/Mis%20textos/WikiPhilo/store.php]] | . | [[WikiPhilo.html | file:///D:/Mis%20textos/WikiPhilo/WikiPhilo.html]] |  |
| 29/09/2008 15:43:04 | AlbertoMolina | [[WikiPhilo.html|file:///D:/Mis%20textos/WikiPhilo/WikiPhilo.html]] | [[store.php|file:///D:/Mis%20textos/WikiPhilo/store.php]] | . | [[WikiPhilo.html | file:///D:/Mis%20textos/WikiPhilo/WikiPhilo.html]] |  |
| 29/09/2008 15:43:25 | AlbertoMolina | [[WikiPhilo.html|file:///D:/Mis%20textos/WikiPhilo/WikiPhilo.html]] | [[store.php|file:///D:/Mis%20textos/WikiPhilo/store.php]] | . | [[WikiPhilo.html | file:///D:/Mis%20textos/WikiPhilo/WikiPhilo.html]] |  |
| 29/09/2008 15:44:31 | AlbertoMolina | [[WikiPhilo.html|file:///D:/Mis%20textos/WikiPhilo/WikiPhilo.html]] | [[store.cgi|file:///D:/Mis%20textos/WikiPhilo/store.cgi]] | . | [[WikiPhilo.html | file:///D:/Mis%20textos/WikiPhilo/WikiPhilo.html]] |  |
| 12/02/2009 22:31:11 | AlbertoMolina | [[wikiphilo.html|file:///media/THESIS/Mis%20textos/WikiPhilo/wikiphilo.html]] | [[store.cgi|http://wikiphilo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wikiphilo.tiddlyspot.com/index.html]] | . | failed |
| 13/02/2009 16:38:19 | AlbertoMolina | [[wikiphilo.html|file:///media/THESIS/Mis%20textos/WikiPhilo/wikiphilo.html]] | [[store.cgi|http://wikiphilo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wikiphilo.tiddlyspot.com/index.html]] | . | ok |
| 21/02/2009 15:53:57 | CristinaArroyoDeCastro | [[wikiphilo.html|file:///media/THESIS/Mis%20textos/WikiPhilo/wikiphilo.html]] | [[store.cgi|http://wikiphilo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wikiphilo.tiddlyspot.com/index.html]] | . | ok |
| 24/02/2009 16:03:49 | AlbertoMolina | [[wikiphilo.html|file:///H:/Mis%20textos/WikiPhilo/wikiphilo.html]] | [[store.php|file:///H:/Mis%20textos/WikiPhilo/store.php]] | . | [[wikiphilo.html | file:///H:/Mis%20textos/WikiPhilo/wikiphilo.html]] |  |
| 29/03/2009 18:09:27 | CristinaArroyo | [[wikiphilo.html|file:///media/TESIS/Mis%20textos/WikiPhilo/wikiphilo.html]] | [[store.cgi|http://wikiphilo.tiddlyspot.com/store.cgi]] | . | [[index.html | http://wikiphilo.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		wizard.createWizard(place,this.wizardTitle);
		wizard.addStep(this.step1Title,this.step1Html);
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		markList.parentNode.insertBefore(listWrapper,markList);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	options: [
		"txtUploadUserName",
		"pasUploadPassword",
		"txtUploadStoreUrl",
		"txtUploadDir",
		"txtUploadFilename",
		"txtUploadBackupDir",
		"chkUploadLog",
		"txtUploadLogMaxLine"		
	],
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opts.push();
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
				h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
};

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
		bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");


//}}}


<<tiddler AutoRefresh on>><<tiddler Livre>>
Version française:
|''Encyclopédie de la philosophie'', La Pochothèque, 2002.|


<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Vattimo","prénom":"Gianni","initiales":"G","titrelivre":"Enciclopedia Garzanti di filosofia","datepublication":"1981","noméditeur":"Garzanti","dateédition":"1995","pagescitation":"\"Objet\"","motscléscitation":"Objet"}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!Objectivité
<part Objectivité> "''Objectivité'' caractère de ce qui est objectif. La notion est corrélative de celle de subjectivité et lui est souvent opposée. Elle sert à caractériser en général tous les processus qui se déroulent indépendamment de l'intervention d'un sujet. Est objectif ce qui relève donc de l'expérience externe au sujet ou de l'expérimentation scientifique. On notera qu'on tend à présenter la science moderne comme un effort de connaissance objective de la réalité. On peut distinguer entre deux grandes conceptions de l'objectivité: l'une consiste à poser une indépendance absolue des phénomènes objectifs relativement au sujet qui les observe ou les conçoit, c'est en ce sens que le mathématicien et astronome Ampère peut déclarer que «&nbsp;les lois mathématiques du mouvement des astres réglaient leur mouvement depuis que le monde existe et bien avant que Kepler ne les ait démontrées&nbsp;». L'autre, qui en tenant compte du caractère construit de l'objectivité scientifique, considère que le sujet participe en quelque manière de la détermination de l'objet. Ainsi le phénomène, au sens kantien, est objectif en ce sens qu'il procède de l'application des formes pures de l'intuition sensible (espace, temps) et des catégories pures de l'entendement à la matière empirique. [...]" ([[Vattimo, G 1981:"Objectivité"]])</part>

<data>{"nom":"Vattimo","prénom":"Gianni","initiales":"G","titrelivre":"Enciclopedia Garzanti di filosofia","datepublication":"1981","noméditeur":"Garzanti","dateédition":"1995","pagescitation":"\"Objectivité\""}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!Objet  
<part Objet> "''Objet'' concept introduit dans la philosophie occidentale par les philosophes scolastiques afin de désigner le contenu caractéristique d'un acte intellectif ou perceptif. [...] Le recours au concept d'objet – qui n'a pas d'antécédent dans l'Antiquité classique – dérive probablement d'un usage terminologique de la latinité tardive, où //ob-jectum// (littéralement, si l'on décompose le mot, «&nbsp;ce qui est posé //contre// ou //devant//&nbsp;» signifiait aussi bien l'obstacle qui s'oppose au développement d'une activité que l'écran qui s'interpose entre le sujet, source de puissance, et le terme où elle s'accomplit, au même titre que la Terre s'interpose entre la lumière du Soleil et la Lune, ou la corporéité divine entre sa lumière divine et le monde. L'objet, ou plutôt l'//objectum//, qualifie donc la manière dont le réel est saisi dans un acte intellectif ou perceptif. On dira de quelque chose (par exemple des universaux) qu'il a de l'//être objectif// (en lat., //esse objective//) pour signifier qu'il //n//'est //pas// une chose réellement existante, mais le contenu d'une activité de l'âme correspondant à l'une de ses puissances ou facultés (Ockham, //Ordinario//, D. II, que. VIII). Au contraire, une chose réellement existante possède de l'être subjectif (//esse subjective//), dans la mesure où elle est un sujet (au sens aristotélicien de l'//hypokeimenon//) de prédicats possibles. L'usage actuel est donc inverse par rapport à l'usage médiéval, puisque nous aurions spontanément tendance, en français, à qualifier d'objectif ce qui n'est justement pas relatif à une activité psychique ou représentative, et, à l'inverse, de subjectif ce qui procède d'un acte du sujet ou de la conscience. Ce n'est que plus tard, au XVII° s., et plus encore au XVIII°, que l'on entendra par «&nbsp;objet&nbsp;» un être extérieur à l'âme, et qui est //représenté// par une idée dans l'âme. Dans la conception cartésienne, les idées sont des copies directes, plus ou moins adéquates, des choses mêmes : la suppression de tout intermédiaire entre l'idée et la chose conduit à identifier à la chose elle-même ce qui détermine le contenu d'un acte intellectif, c'est-à-dire ce qu'on appelait l'«&nbsp;objet&nbsp;». Hobbes aussi tient le terme d'«&nbsp;objet&nbsp;» pour synonyme de «&nbsp;corps extérieur&nbsp;», le corps extérieur étant la source des sensations, c'est-à-dire des contenus de pensée. Il faudra attendre la fin du XIX° s. pour que Franz Brentano propose à nouveau une analyse de l'esprit qui s'apparente à celle des philosophes de la scolastique médiévale. Dans son sillage, Alexius Meinong présentera sa théorie des objets comme science de ce qui est connu en tant que tel, pour distinguer les objets aussi bien des choses connues, considérées par exemple comme objets physiques, que des événements de l'esprit considérés comme objets psychiques. Il s'agira pour lui de la science des contenus des actes de l'entendement. D'une manière analogue, Edmund Husserl entendra par objet ce vers quoi est tourné un acte de l'entendement. Au contraire, le principal courant de l'épistémologie post-cartésienne continue à utiliser le mot «&nbsp;objet&nbsp;», pour se référer au terme extra-psychique de l'activité intellectuelle, et, en particulier – surtout avec Kant –, de l'activité de la connaissance. [...]" ([[Vattimo, G 1981:"Objet"]]) </part><data>{"nom":"Vattimo","prénom":"Gianni","initiales":"G","titrelivre":"Enciclopedia Garzanti di filosofia","datepublication":"1981","noméditeur":"Garzanti","dateédition":"1995","pagescitation":"\"Objet\"","motscléscitation":"Objet"}</data>
{{floatleft{[img(150px,auto)[Gianni Vattimo, wikipedia|./imagesWiki/vattimo.jpg][http://en.wikipedia.org/wiki/Gianni_Vattimo]]}}}
''Gianni Vattimo'' est un philosophe et homme politique italien, [[herméneute|Herméneutique]], [[post-moderne|Post-Modernité]].

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Vattimo","prénom":"Gianni","initiales":"G","titrelivre":"Enciclopedia Garzanti di filosofia","datepublication":"1981","noméditeur":"Garzanti","dateédition":"1995"}</data>




[<img[IconeNotes]] Plusieurs théories sont en compétition pour expliquer les origines de la vie. Les principales sont les suivantes:
# ''ADN + ARN'': l'idée selon laquelle la vie ait requis un mécanisme impliquant à la fois l'ADN et l'ARN semble aujourd'hui peu plausible
# ''ARN primordial'': L'idée est que les brins d'ARN pourraient s'autocatalyser, et qu'avant la vie telle que nous la connaissons, il y aurait eu un monde à ARN. Le problème est que l'ARN est constitué de nucléotides, qui sont des molécules complexes (un sucre, un phosphate, et una base azotée), et l'apparition spontanée d'un ARN autoréplicant est peu probable.
# ''Lipid view'': La vie serait apparue à partir de la croissance et division de liposomes (vésicules). Cela pourrait être une partie de la réponse.
# ''Collective autocatalysis'': L'idée est de [[Stuart Kauffman|Kauffman, Stuart]] et Freeman Dyson, selon laquelle plusieurs polymères se catalysent mutuellement. Ils forment un ensemble autocatalytique et atteignent la clôture catalytique.
# ''Metabolism first'': C'est l'idée de Morowitz selon laquelle le métabolisme peut former des cycles autocatalytiques de lui-même.

''Le rôle des minéraux:'' De nombreux chercheurs considèrent désormais que les minéraux ont joué un rôle actif dans la chimie prébiotique. Ils ont procuré des havres où des molécules simples se sont accumulées; dans ces compartiments, elles se sont assemblées et croisées; les surfaces cristallines de certains minéraux ont "sélectionné" des molécules; les ions métalliques d'autres minéraux ont permis de catalyser des réactions; et des minéraux dissous ont été incorporés aux molécules biologiques. Elles auraient également pu fournir de l'énergie, comme celle des réactions chimiques qui produisent la pyrite.

''Réplicateur //vs.// Métabolisme:'' On peut distinguer deux grandes familles de théories scientifiques relatives à l'origine de la vie: celle du ((réplicateur primordial(voir citation de Dawkins))) et celle du métabolisme primordial. La première favorise l'émergence d'une molécule autoréplicante, de type ARN, qui par sélection naturelle (mutations, sélection) aurait donné lieu à des molécules de plus en plus complexes jusqu'à l'apparition des cellules. L'autre théorie privilégie l'apparition de cycles de réactions chimiques, à l'intérieur de compartiments naturels (minéraux, par exemple), capables d'extraire et d'exploiter l'énergie de leur environnement (métabolisme), et capables de se complexifier, de croître et de se reproduire, jusqu'à l'invention des membranes cellulaires et d'un mécanisme d'hérédité.+++[suite]>
L'hypothèse du métabolisme primordial requiert plusieurs conditions: un compartiment, une source d'énergie externe (oxydoréduction d'un minéral, par exemple) et couplée à une réaction d'alimentation, un réseau chimique incluant cette réaction et un mécanisme simple de reproduction.
===
<<tiddler Théories>>




/***
|''Name:''|WikiBar|
|''Version:''|2.0.0 beta3|
|''Source:''|[[AiddlyWiki|http://aiddlywiki.sourceforge.net]]|
|''Author:''|[[Arphen Lin|mailto:arphenlin@gmail.com]]|
|''Type:''|toolbar macro command extension|
|''Required:''|TiddlyWiki 2.0.0 beta6|
!Description
WikiBar is a toolbar that gives access to most of TiddlyWiki's formatting features with a few clicks. It's a handy tool for people who are not familiar with TiddlyWiki syntax.
Besides, with WikiBar-addons, users can extend the power of WikiBar.
!Support browser
*Firefox 1.5
!Revision history
*v2.0.0 beta3 (2005/12/30)
** remove macros (replaced by TWMacro addon)
** add wikibar command in toolbar automatically
** rename DOIT to HANDLER
** rename TIP to TOOLTIP
*v2.0.0 beta2 (2005/12/21)
** re-design Wikibar addon framework
*v2.0.0 beta1 (2005/12/14)
** Note:
*** WikiBarPlugin is renamed to WikiBar
** New Features:
*** support TiddlyWiki 2.0.0 template mechanism
*** new wikibar data structure
*** new wikibar-addon framework for developers
**** support dynamic popup menu generator
*** support most new macros added in TiddlyWiki 2.0.0
*** multi-level popup menu
*** fix wikibar tab stop
*** remove paletteSelector
** Known Bugs:
*** popup-menu and color-picker can't be closed correctly
*** some macros can't be displayed correctly in previewer
*** text in previewer will be displayed italic
*v1.2.0 (2005/11/21)
**New Features:
***User defined color palettes supported
####Get color palettes from [[ColorZilla Palettes|http://www.iosart.com/firefox/colorzilla/palettes.html]].
####Save the palette file(*.gpl) as a new tiddler and tag it with 'ColorPalettes', then you can use it in WikiBar.
***WikiBar style sheet supported
***Click on document to close current colorPicker, paletteSelector or aboutWikibar
*v1.1.1 (2005/11/03)
**Bugs fixed:
***'Not enough parameters!' message is displayed when the parameter includes '%+number', ex: 'hello%20world!'
*v1.1.0 (2005/11/01)
**Bugs fixed:
***WikiBar overruns (reported by by GeoffS <gslocock@yahoo.co.uk>)
**New features:
***Insert a color code at the cursor. (Thanks to RunningUtes <RunningUtes@gmail.com>)
***Enable gradient macro. (Thanks to RunningUtes <RunningUtes@gmail.com>)
***Insert tiddler comment tags {{{/% ... %/}}}. (new feature supported by TiddlyWiki 1.2.37)
***Insert DateFormatString for {{{<<today>>}}} macro. (new feature supported by TiddlyWiki 1.2.37)
**Enhanced:
***Allow optional parameters in syntax.
**Bugs:
***'Not enough parameters!' message is displayed when the parameter includes '%+number', ex: 'hello%20world!'
*v1.0.0 (2005/10/30)
**Initial release
!Code
***/
//{{{
config.macros.wikibar = {major: 2, minor: 0, revision: 0, beta: 3, date: new Date(2005,12,30)};
config.macros.wikibar.handler = function(place,macroName,params,wikifier,paramString,tiddler){
  if(!(tiddler instanceof Tiddler))  {return;}
	story.setDirty(tiddler.title,true);
  place.id = 'wikibar'+tiddler.title;
  place.className = 'toolbar wikibar';
};
function wikibar_install(){
  config.commands.wikibar = {
  	text: 'wikibar',
  	tooltip: 'wikibar on/off',
  	handler: function(e,src,title) {
      if(!e){ e = window.event; }
      var theButton = resolveTarget(e);
      theButton.id = 'wikibarButton'+title;
      wikibarPopup.remove();
      wikibar_installAddons(theButton, title);
      wikibar_createWikibar(title);
      return(false);
    }
  };
  config.shadowTiddlers['EditTemplate'] = wikibar_addWikibarCommand(config.shadowTiddlers['EditTemplate']);
  var tiddler = store.getTiddler('EditTemplate');
  if(tiddler){
    tiddler.text = wikibar_addWikibarCommand(tiddler.text);
  }
}
function wikibar_installAddons(theButton, title){
 	var tiddlers = store.getTaggedTiddlers('wikibarAddons');
	if(!tiddlers)	  { return; }
	theButton.addons=[];
  for(var i=0; i<tiddlers.length; i++){
    try{
      eval(tiddlers[i].text);
      try{
        wikibar_addonInstall(title);
        wikibar_addonInstall = null;
        theButton.addons.push({ok:true, name:tiddlers[i].title});
      }catch(ex){
        theButton.addons.push({ok:false, name:tiddlers[i].title, error:ex});
      }
    }catch(ex){
      theButton.addons.push({ok:false, name:tiddlers[i].title, error:ex});
    }
  }
}
function wikibar_addWikibarCommand(tiddlerText){
  var div = document.createElement('div');
  div.style.display = 'none';
  div.innerHTML = tiddlerText;
  for(var i=0; i<div.childNodes.length; i++){
    var o=div.childNodes[i];
    if(o.tagName==='DIV'){
      if(o.className=='toolbar'){
        var macroText = o.getAttribute('macro').trim();
        if(macroText.search('wikibar')<=0){
          macroText += ' wikibar';
          o.setAttribute('macro', macroText);
        }
        break;
      }
    }
  }
  return div.innerHTML.replace(/\"/g, "\'");
}
function wikibar_processSyntaxParams(theSyntax, params){
  try{
    var pcr = 'AplWikibarPcr';
    var rx=null;
    var allParams=null;
    if(params){
      if(typeof(params)=='object'){
        for(var i=0; i<params.length; i++){
          if(params[i]){
            params[i] = params[i].replace(new RegExp('%','g'), pcr).trim();
            rx = '(\\[%'+(i+1)+'\\])' + '|' + '(%'+(i+1)+')';
            theSyntax = theSyntax.replace(new RegExp(rx,'g'), params[i] );
          }
        }
        allParams = params.join(' ').trim();
      }else{
        allParams = params.replace(new RegExp('%','g'), pcr).trim();
        rx = /(\[%1{1}\])|(%1{1})/g;
        theSyntax = theSyntax.replace(rx, allParams);
      }
    }
    if(allParams){
      theSyntax = theSyntax.replace(new RegExp('%N{1}','g'), allParams);
    }
    rx=/\[%(([1-9]{1,}[0-9]{0,})|(N{1}))\]/g;
    theSyntax = theSyntax.replace(rx, '');
    rx=/%(([1-9]{1,}[0-9]{0,})|(N{1}))/g;
    if( theSyntax.match(rx) ){
      throw 'Not enough parameters! ' + theSyntax;
    }
    theSyntax=theSyntax.replace(new RegExp(pcr,'g'), '%');
    return theSyntax;
  } catch(ex){
    return null;
  }
}
function wikibar_resolveEditItem(tiddlerWrapper, itemName){
  if(tiddlerWrapper.hasChildNodes()){
    var c=tiddlerWrapper.childNodes;
    for(var i=0; i<c.length; i++){
      var txt=wikibar_resolveEditItem(c[i], itemName);
      if(!txt){
        continue;
      }else{
        return txt;
      }
    }
  }
  return ((tiddlerWrapper.getAttribute && tiddlerWrapper.getAttribute('edit')==itemName)? tiddlerWrapper : null);
}
function wikibar_resolveEditItemValue(tiddlerWrapper, itemName){
  var o = wikibar_resolveEditItem(tiddlerWrapper, itemName);
  return (o? o.value.replace(/\r/mg,'') : null);
}
function wikibar_resolveTiddlerEditorWrapper(obj){
  if(obj.id=='tiddlerDisplay'){return null;}
  if((obj.getAttribute && obj.getAttribute('macro')=='edit text')){return obj;}
  return wikibar_resolveTiddlerEditorWrapper(obj.parentNode);
}
function wikibar_resolveTiddlerEditor(obj){
  if(obj.hasChildNodes()){
    var c = obj.childNodes;
    for(var i=0; i<c.length; i++){
      var o=wikibar_resolveTiddlerEditor(c[i]);
      if(o){ return o;}
    }
  }
  return ((obj.getAttribute && obj.getAttribute('edit')=='text')? obj : null);
}
function wikibar_resolveTargetButton(obj){
  if(obj.id && obj.id.substring(0,7)=='wikibar'){ return null; }
  if(obj.tiddlerTitle){
    return obj;
  }else{
    return wikibar_resolveTargetButton(obj.parentNode);
  }
}
function wikibar_isValidMenuItem(tool){
  if(!tool){  return false; }
  if(tool.TYPE=='MENU' || tool.TYPE=='MAIN_MENU'){
    for(var key in tool){
      if(key.substring(0,8)=='DYNAITEM'){ return true; }
      if(wikibar_isValidMenuItem(tool[key])){ return true; }
    }
    return false;
  }else{
    return (tool.HANDLER? true : false);
  }
}
function wikibar_editFormat(param){
  var editor = param.button.editor;
  var params = param.params;
  clearMessage();
  if(!editor){ return; }
  var repText = wikibar_processSyntaxParams(this.syntax, params);
  if(repText===null){ return; }
	var st = editor.scrollTop;
	var ss = editor.selectionStart;
	var se = editor.selectionEnd;
	var frontText= '';
	var endText  = '';
	var fullText = editor.value;
	if(se>ss && ss>=0){
	  frontText  = fullText.substring(0, ss);
	  endText    = fullText.substring(se, fullText.length);
	}
	else if(ss===0 && (se===0 || se == fullText.length) ){
    endText    = fullText;
	}
	else if(se==ss && ss>0){
    frontText  = fullText.substring(0, ss);
    endText    = fullText.substring(se, fullText.length);
	}
	if(repText.indexOf('user_text')>=0 && this.hint){
		repText = repText.replace('user_text', this.hint);
	}
	editor.value = frontText + repText + endText;
	editor.selectionStart = ss;
	editor.selectionEnd   = ss + repText.length;
	editor.scrollTop      = st;
	editor.focus();
}
function wikibar_editFormatByWord(param){
  var editor = param.button.editor;
  var params = param.params;
  clearMessage();
  if(!editor){return;}
  var repText = wikibar_processSyntaxParams(this.syntax, params);
  if(repText===null){ return; }
	var st = editor.scrollTop;
	var ss = editor.selectionStart;
	var se = editor.selectionEnd;
	var frontText= '';
	var selText  = '';
	var endText  = '';
	var fullText = editor.value;
	if(se>ss && ss>=0){
	  frontText  = fullText.substring(0, ss);
	  selText	   = fullText.substring(ss,se);
	  endText    = fullText.substring(se, fullText.length);
	}
	else if(ss===0 && (se===0 || se == fullText.length) ){
    endText    = fullText;
	}
	else if(se==ss && ss>0){
    frontText  = fullText.substring(0, ss);
    endText    = fullText.substring(se, fullText.length);
	  if(!( fullText.charAt(ss-1).match(/\W/gi) || fullText.charAt(ss).match(/\W/gi) )){
      var m = frontText.match(/\W/gi);
      if(m){
        ss = frontText.lastIndexOf(m[m.length-1])+1;
      }
      else{
        ss = 0;
      }
      m = endText.match(/\W/gi);
      if(m){
        se += endText.indexOf(m[0]);
      }
      else{
        se = fullText.length;
      }
      frontText = fullText.substring(0, ss);
  	  endText   = fullText.substring(se, fullText.length);
  	  selText   = fullText.substring(ss,se);
	  }
	}
	if(selText.length>0){
		repText = repText.replace('user_text', selText);
	}
	if(repText.indexOf('user_text')>=0 && this.hint){
		repText = repText.replace('user_text', this.hint);
	}
	editor.value = frontText + repText + endText;
	editor.selectionStart = ss;
	editor.selectionEnd   = ss + repText.length;
	editor.scrollTop      = st;
	editor.focus();
}
function wikibar_editFormatByCursor(param){
  var editor = param.button.editor;
  var params = param.params;
  clearMessage();
  if(!editor){ return; }
  var repText = wikibar_processSyntaxParams(this.syntax, params);
  if(repText===null){ return; }
	var st = editor.scrollTop;
	var ss = editor.selectionStart;
	var se = editor.selectionEnd;
	var frontText= '';
	var endText  = '';
	var fullText = editor.value;
	if(se>ss && ss>=0){
	  frontText  = fullText.substring(0, ss);
	  endText    = fullText.substring(se, fullText.length);
	}
	else if(ss===0 && (se===0 || se == fullText.length) ){
    endText    = fullText;
	}
	else if(se==ss && ss>0){
    frontText  = fullText.substring(0, ss);
    endText    = fullText.substring(se, fullText.length);
	}
	if(repText.indexOf('user_text')>=0 && this.hint){
		repText = repText.replace('user_text', this.hint);
	}
	editor.value = frontText + repText + endText;
	editor.selectionStart = ss;
	editor.selectionEnd   = ss + repText.length;
	editor.scrollTop      = st;
	editor.focus();
}
function wikibar_editFormatByLine(param){
  var editor = param.button.editor;
  var params = param.params;
  clearMessage();
  if(!editor){ return; }
  var repText = wikibar_processSyntaxParams(this.syntax, params);
  if(repText===null){ return; }
	var st = editor.scrollTop;
	var ss = editor.selectionStart;
	var se = editor.selectionEnd;
	var frontText= '';
	var selText  = '';
	var endText  = '';
	var fullText = editor.value;
	if(se>ss && ss>=0){
		if(this.byBlock){
	    frontText  = fullText.substring(0, ss);
	    selText		 = fullText.substring(ss,se);
	    endText    = fullText.substring(se, fullText.length);
		}
		else{
	  	se = ss;
		}
	}
  if(ss===0 && (se===0 || se == fullText.length) ){
    var m=fullText.match(/(\n|\r)/g);
    if(m){
      se = fullText.indexOf(m[0]);
    }else{
      se = fullText.length;
    }
    selText    = fullText.substring(0, se);
    endText    = fullText.substring(se, fullText.length);
	}
	else if(se==ss && ss>0){
    frontText  = fullText.substring(0, ss);
    endText    = fullText.substring(se, fullText.length);
    m = frontText.match(/(\n|\r)/g);
    if(m){
      ss = frontText.lastIndexOf(m[m.length-1])+1;
    }
    else{
      ss = 0;
    }
    m = endText.match(/(\n|\r)/g);
    if(m){
      se += endText.indexOf(m[0]);
    }
    else{
      se = fullText.length;
    }
    frontText = fullText.substring(0, ss);
	  selText   = fullText.substring(ss,se);
	  endText   = fullText.substring(se, fullText.length);
	}
	if(selText.length>0){
		repText = repText.replace('user_text', selText);
	}
	if(repText.indexOf('user_text')>=0 && this.hint){
		repText = repText.replace('user_text', this.hint);
	}
	if(this.byBlock){
    if( (frontText.charAt(frontText.length-1)!='\n') && ss>0 ){
    	repText = '\n' + repText;
    }
    if( (endText.charAt(0)!='\n') || se==fullText.length){
    	repText += '\n';
    }
	}
	editor.value = frontText + repText + endText;
	editor.selectionStart = ss;
	editor.selectionEnd   = ss + repText.length;
	editor.scrollTop      = st;
	editor.focus();
}
function wikibar_editFormatByTableCell(param){
  var editor = param.button.editor;
  var params = param.params;
  clearMessage();
  if(!editor){ return; }
  var repText = wikibar_processSyntaxParams(this.syntax, params);
  if(repText===null){ return; }
	var st = editor.scrollTop;
	var ss = editor.selectionStart;
	var se = editor.selectionEnd;
	var frontText= '';
	var selText  = '';
	var endText  = '';
	var fullText = editor.value;
	if(ss===0 || ss==fullText.length){
		throw 'not valid cell!';
	}
	se=ss;
  frontText  = fullText.substring(0, ss);
  endText    = fullText.substring(se, fullText.length);
  i=frontText.lastIndexOf('\n');
  j=frontText.lastIndexOf('|');
  if(i>j || j<0){
  	throw 'not valid cell!';
  }
	ss = j+1;
  i=endText.indexOf('\n');
  j=endText.indexOf('|');
  if(i<j || j<0){
  	throw 'not valid cell!';
  }
  se += j;
  frontText = fullText.substring(0, ss-1);
  selText   = fullText.substring(ss,se);
  endText   = fullText.substring(se+1, fullText.length);
	if(this.key.substring(0,5)=='align'){
		selText = selText.trim();
		if(	selText=='>' || selText=='~' ||	selText.substring(0,8)=='bgcolor(')	{return; }
	}
	if(selText.length>0){
		repText = repText.replace('user_text', selText);
	}
	if(repText.indexOf('user_text')>=0 && this.hint){
		repText = repText.replace('user_text', this.hint);
	}
	editor.value = frontText + repText + endText;
	editor.selectionStart = ss;
	editor.selectionEnd   = ss + repText.length - 2;
	editor.scrollTop      = st;
	editor.focus();
}
function wikibar_editSelectAll(param){
  var editor = param.button.editor;
	editor.selectionStart = 0;
	editor.selectionEnd   = editor.value.length;
	editor.scrollTop      = 0;
	editor.focus();
}
function wikibar_doPreview(param){
  var theButton = param.button;
  var editor = param.button.editor;
  var wikibar = theButton.parentNode;
  if(!wikibar)  { return; }
  title = theButton.tiddlerTitle;
  var editorWrapper = wikibar_resolveTiddlerEditorWrapper(editor);
  var tiddlerWrapper = editorWrapper.parentNode;
  var previewer = document.getElementById('previewer'+title);
  if(previewer){
    previewer.parentNode.removeChild(previewer);
    editorWrapper.style.display = 'block';
    visible=true;
  }else{
    previewer = document.createElement('div');
    previewer.id = 'previewer'+title;
    previewer.className = 'viewer previewer';
    previewer.style.height = (editor.offsetHeight) + 'px';
    wikify(editor.value, previewer);
    tiddlerWrapper.insertBefore(previewer, editorWrapper);
    editorWrapper.style.display = 'none';
    visible=false;
  }
  var pv=null;
  for(var i=0; i<wikibar.childNodes.length; i++){
    try{
      var btn = wikibar.childNodes[i];
      if(btn.toolItem.key == 'preview'){ pv=btn; }
      if(btn.toolItem.key != 'preview'){
        btn.style.display = visible ? '': 'none';
      }
    }catch(ex){}
  }
  if(!pv) { return; }
  if(visible){
    pv.innerHTML = '<font face=\"verdana\">&infin;</font>';
    pv.title = 'preview current tiddler';
  }
  else{
    pv.innerHTML = '<font face=\"verdana\">&larr;</font>';
    pv.title = 'back to editor';
  }
}
function wikibar_doListAddons(param){
  clearMessage();
  var title = param.button.tiddlerTitle;
  var wikibarButton = document.getElementById('wikibarButton'+title);
  var ok=0, fail=0;
  for(var i=0; i<wikibarButton.addons.length; i++){
    var addon=wikibarButton.addons[i];
    if(addon.ok){
      displayMessage('[ o ] '+addon.name);
      ok++;
    }
    else{
      displayMessage('[ x ] '+addon.name + ': ' + addon.error);
      fail++;
    }
  }
  displayMessage('---------------------------------');
  displayMessage(ok + ' ok ; ' + fail + ' failed');
}
function wikibar_getColorCode(param){
  var cbOnPickColor = function(colorCode, param){
    param.params = colorCode;
    param.button.toolItem.doMore(param);
  };
  wikibarColorTool.openColorPicker(param.button, cbOnPickColor, param);
}
function wikibar_getLinkUrl(param){
  var url= prompt('Please enter the link target', (this.param? this.param : ''));
  if (url && url.trim().length>0){
    param.params = url;
    this.doMore(param);
  }
}
function wikibar_getTableRowCol(param){
  var rc= prompt('Please enter (rows x cols) of the table', '2 x 3');
  if (!rc || (rc.trim()).length<=0){ return; }
  var arr = rc.toUpperCase().split('X');
  if(arr.length != 2)   { return; }
  for(var i=0; i<arr.length; i++){
    if(isNaN(arr[i].trim()))  { return; }
  }
  var rows = parseInt(arr[0].trim(), 10);
  var cols = parseInt(arr[1].trim(), 10);
  var txtTable='';
  for(var r=0; r<rows; r++){
    for(var c=0; c<=cols; c++){
      if(c===0){
        txtTable += '|';
      }else{
        txtTable += ' |';
      }
    }
    txtTable += '\n';
  }
  if(txtTable.trim().length>0){
    param.params = txtTable.trim();
    this.doMore(param);
  }
}
function wikibar_getMacroParam(param){
  var p = prompt('Please enter the parameters of macro \"' + this.key + '\":' +
                 '\nSyntax: ' + this.syntax +
                 '\n\nNote: '+
                 '\n%1,%2,... - parameter needed'+
                 '\n[%1] - optional parameter'+
                 '\n%N   - more than one parameter(1~n)'+
                 '\n[%N] - any number of parameters(0~n)'+
                 '\n\nPS:'+
                 '\n1. Parameters should be seperated with space character'+
                 '\n2. Use \" to wrap the parameter that includes space character, ex: \"hello world\"'+
                 '\n3. Input the word(null) for the optional parameter ignored',
                 (this.param? this.param : '') );
  if(!p)  { return; }
  p=p.readMacroParams();
  for(var i=0; i<p.length; i++){
    var s=p[i].trim();
    if(s.indexOf(' ')>0){ p[i]="'"+s+"'"; }
    if(s.toLowerCase()=='null'){ p[i]=null; }
  }
  param.params = p;
  this.doMore(param);
}
function wikibar_getMorePalette(unused){
  clearMessage();
  displayMessage('Get more color palettes(*.gpl) from ColorZilla Palettes site', 'http:\/\/www.iosart.com/firefox/colorzilla/palettes.html');
  displayMessage('Save it as a new tiddler with \"ColorPalettes\" tag');
}
function wikibar_createWikibar(title){
  var theWikibar = document.getElementById('wikibar' + title);
  if(theWikibar){
    if(theWikibar.hasChildNodes()){
      theWikibar.style.display = (theWikibar.style.display=='block'? 'none':'block');
      return;
    }
  }
  var tiddlerWrapper = document.getElementById('tiddler'+title);
  var theTextarea = wikibar_resolveTiddlerEditor(tiddlerWrapper);
  if(!theTextarea){
    clearMessage();
    displayMessage('WikiBar only works in tiddler edit mode now');
    return;
  }else{
    if(!theTextarea.id){ theTextarea.id = 'editor'+title; }
    if(!theTextarea.parentNode.id){ theTextarea.parentNode.id='editorWrapper'+title;  }
  }
  if(theWikibar){
    theWikibar = document.getElementById('wikibar'+title);
  }else{
    var editorWrapper = wikibar_resolveTiddlerEditorWrapper(theTextarea);
    theWikibar = createTiddlyElement(tiddlerWrapper, 'div', 'wikibar'+title, 'toolbar');
    addClass(theWikibar, 'wikibar');
    var previewer = document.getElementById('previewer'+title);
    if(previewer){
      tiddlerWrapper.insertBefore(theWikibar, previewer);
    }else{
      tiddlerWrapper.insertBefore(theWikibar, editorWrapper);
    }
  }
  wikibar_createMenu(theWikibar,wikibarStore,title,theTextarea);
  if(config.options['chkWikibarSetEditorHeight'] && config.options['txtWikibarEditorRows']){
    theTextarea.rows = config.options['txtWikibarEditorRows'];
  }
  setStylesheet(
    '.wikibar{text-align:left;visibility:visible;margin:2px;padding:1px;}.previewer{overflow:auto;display:block;border:1px solid;}#colorPicker{position:absolute;display:none;z-index:10;margin:0px;padding:0px;}#colorPicker table{margin:0px;padding:0px;border:2px solid #000;border-spacing:0px;border-collapse:collapse;}#colorPicker td{margin:0px;padding:0px;border:1px solid;font-size:11px;text-align:center;cursor:auto;}#colorPicker .header{background-color:#fff;}#colorPicker .button{background-color:#fff;cursor:pointer;cursor:hand;}#colorPicker .button:hover{padding-top:3px;padding-bottom:3px;color:#fff;background-color:#136;}#colorPicker .cell{padding:4px;font-size:7px;cursor:crosshair;}#colorPicker .cell:hover{padding:10px;}.wikibarPopup{position:absolute;z-index:10;border:1px solid #014;color:#014;background-color:#cef;}.wikibarPopup table{margin:0;padding:0;border:0;border-spacing:0;border-collapse:collapse;}.wikibarPopup .button:hover{color:#eee;background-color:#014;}.wikibarPopup .disabled{color:#888;}.wikibarPopup .disabled:hover{color:#888;background-color:#cef;}.wikibarPopup tr .seperator hr{margin:0;padding:0;background-color:#cef;width:100%;border:0;border-top:1px dashed #014;}.wikibarPopup tr .icon{font-family:verdana;font-weight:bolder;}.wikibarPopup tr .marker{font-family:verdana;font-weight:bolder;}.wikibarPopup td{font-size:0.9em;padding:2px;}.wikibarPopup input{border:0;border-bottom:1px solid #014;margin:0;padding:0;font-family:arial;font-size:100%;background-color:#fff;}',
  	'WikiBarStyleSheet');
}
function wikibar_createMenu(place,toolset,title,editor){
  if(!wikibar_isValidMenuItem(toolset)){return;}
  if(!(toolset.TYPE=='MAIN_MENU' || toolset.TYPE=='MENU')){ return; }
    for(var key in toolset){
      if(key.substring(0,9)=='SEPERATOR'){
        wikibar_createMenuSeperator(place);
        continue;
      }
      if(key.substring(0,8)=='DYNAITEM'){
        var dynaTools = toolset[key](title,editor);
        if(dynaTools.TYPE && dynaTools.TYPE=='MENU'){
          wikibar_createMenuItem(place,dynaTools,null,editor,title);
        }else{
          dynaTools.TYPE = 'MENU';
          wikibar_createMenu(place, dynaTools, title, editor);
        }
        continue;
      }
      if((toolset[key].TYPE!='MENU' && toolset[key].TYPE!='MAIN_MENU') && !toolset[key].HANDLER){continue;}
      wikibar_createMenuItem(place,toolset,key,editor,title);
    }
}
function wikibar_createMenuItem(place,toolset,key,editor,title){
  if(!key){
    var tool = toolset;
  }else{
    tool = toolset[key];
    tool.key = key;
  }
  if(!wikibar_isValidMenuItem(tool)){return;}
  var toolIsOnMainMenu = (toolset.TYPE=='MAIN_MENU');
  var toolIsMenu = (tool.TYPE=='MENU');
  var theButton;
  if(toolIsOnMainMenu){
    theButton = createTiddlyButton(
                  place,
                  '',
                  (tool.TOOLTIP? tool.TOOLTIP : ''),
                  (toolIsMenu? wikibar_onClickMenuItem : wikibar_onClickItem),
                  'button');
    theButton.innerHTML = (tool.CAPTION? tool.CAPTION : key);
    theButton.isOnMainMenu = true;
    addClass(theButton, (toolIsMenu? 'menu' : 'item'));
  	place.appendChild( document.createTextNode('\n') );
    if(!toolIsMenu){
      if(config.options['chkWikibarPopmenuOnMouseOver']){
        theButton.onmouseover = function(e){ wikibarPopup.remove(); };
      }
    }
  }else{
    theButton=createTiddlyElement(place, 'tr',key,'button');
    theButton.title = (tool.TOOLTIP? tool.TOOLTIP : '');
    theButton.onclick = (toolIsMenu? wikibar_onClickMenuItem : wikibar_onClickItem);
    var tdL = createTiddlyElement(theButton, 'td','','marker');
    var td = createTiddlyElement(theButton, 'td');
    var tdR = createTiddlyElement(theButton, 'td','','marker');
    td.innerHTML = (tool.CAPTION? tool.CAPTION : key);
    if(toolIsMenu){
      tdR.innerHTML='&nbsp;&nbsp;&rsaquo;';
    }
    if(tool.SELECTED){
      tdL.innerHTML = '&radic; ';
      addClass(theButton, 'selected');
    }
    if(tool.DISABLED){
      addClass(theButton, 'disabled');
    }
  }
  theButton.tiddlerTitle = title;
  theButton.toolItem = tool;
  theButton.editor = editor;
  theButton.tabIndex = 999;
  if(toolIsMenu){
    if(config.options['chkWikibarPopmenuOnMouseOver']){
      theButton.onmouseover = wikibar_onClickMenuItem;
    }
  }
}
function wikibar_createMenuSeperator(place){
  if(place.id.substring(0,7)=='wikibar')  { return; }
  var onclickSeperator=function(e){
  	if(!e){ e = window.event; }
  	e.cancelBubble = true;
    if (e.stopPropagation){ e.stopPropagation();  }
  	return(false);
  };
  var theButton=createTiddlyElement(place,'tr','','seperator');
  var td = createTiddlyElement(theButton, 'td','','seperator');
  td.colSpan=3;
  theButton.onclick=onclickSeperator;
	td.innerHTML = '<hr>';
}
function wikibar_genWikibarAbout(){
  var toolset={};
  toolset.version = {
    CAPTION: '<center>WikiBar ' +
              config.macros.wikibar.major + '.' +
              config.macros.wikibar.minor + '.' +
              config.macros.wikibar.revision +
              (config.macros.wikibar.beta? ' beta '+config.macros.wikibar.beta : '') +
              '</center>',
    HANDLER: function(){}
  };
  toolset.SEPERATOR = {};
  toolset.author = {
    CAPTION: '<center>Arphen Lin<br>arphenlin@gmail.com</center>',
    TOOLTIP: 'send mail to the author',
    HANDLER: function(){ window.open('mailto:arphenlin@gmail.com'); }
  };
  toolset.website = {
    CAPTION: '<center>aiddlywiki.sourceforge.net</center>',
    TOOLTIP: 'go to the web site of WikiBar',
    HANDLER: function(){ window.open('http:\/\/aiddlywiki.sourceforge.net/'); }
  };
  return toolset;
}
function wikibar_genWikibarOptions(title, editor){
  var toolset={};
  toolset.popOnMouseOver = {
    CAPTION:'popup menu on mouse over',
    SELECTED: config.options['chkWikibarPopmenuOnMouseOver'],
    HANDLER: function(param){
      config.options['chkWikibarPopmenuOnMouseOver'] = !config.options['chkWikibarPopmenuOnMouseOver'];
      saveOptionCookie('chkWikibarPopmenuOnMouseOver');
      var title = param.button.tiddlerTitle;
      var wikibar = document.getElementById('wikibar'+title);
      if(wikibar){ wikibar.parentNode.removeChild(wikibar); }
      wikibar_createWikibar(title);
    }
  };
  toolset.setEditorSize = {
    CAPTION:'set editor height: <input id=\"txtWikibarEditorRows\" type=text size=1 MAXLENGTH=3 value=\"' +
            (config.options['txtWikibarEditorRows']? config.options['txtWikibarEditorRows']:editor.rows) + '\"> ok',
    HANDLER: function(param){
      var input = document.getElementById('txtWikibarEditorRows');
      if(input){
        var rows = parseInt(input.value, 10);
        if(!isNaN(rows)){
          var editor = param.button.editor;
          editor.rows = rows;
        }else{
          rows=config.maxEditRows;
        }
        config.options['txtWikibarEditorRows'] = rows;
        saveOptionCookie('txtWikibarEditorRows');
        config.maxEditRows = rows;
      }
    }
  };
  toolset.setEditorSizeOnLoadingWikibar = {
    CAPTION:'set editor height on loading wikibar',
    SELECTED: config.options['chkWikibarSetEditorHeight'],
    HANDLER: function(param){
      config.options['chkWikibarSetEditorHeight'] = !config.options['chkWikibarSetEditorHeight'];
      saveOptionCookie('chkWikibarSetEditorHeight');
      if(config.options['chkWikibarSetEditorHeight']){
        var rows = config.options['txtWikibarEditorRows'];
        if(!isNaN(rows)){ rows = 15; }
        var editor = param.button.editor;
        editor.rows = rows;
        config.options['txtWikibarEditorRows'] = rows;
        saveOptionCookie('txtWikibarEditorRows');
      }
    }
  };
  toolset.SEPERATOR = {};
  toolset.update = {
    CAPTION: 'check for updates',
    DISABLED: true,
    HANDLER: function(){}
  };
  return toolset;
}
function wikibar_genPaletteSelector(){
  try{
  	var cpTiddlers = store.getTaggedTiddlers('ColorPalettes');
  	if(!cpTiddlers) { return; }
  	var palettes=[];
  	palettes.push(wikibarColorTool.defaultPaletteName);
  	for(var i=0; i<cpTiddlers.length; i++){
  		palettes.push(cpTiddlers[i].title.trim());
  	}
    var toolset={};
    for(i=0; i<palettes.length; i++){
      toolset[palettes[i]] = {
        TOOLTIP: palettes[i],
        SELECTED: (palettes[i]==wikibarColorTool.paletteName),
        HANDLER: wikibar_doSelectPalette
      };
    }
    return toolset;
  }catch(ex){ return null; }
}
function wikibar_onClickItem(e){
	if(!e){ e = window.event; }
	var theTarget = resolveTarget(e);
	if(theTarget.tagName=='INPUT'){
    e.cancelBubble = true;
    if (e.stopPropagation){ e.stopPropagation(); }
    return;
	}
	var theButton = wikibar_resolveTargetButton(theTarget);
	if(!theButton){ return(false);  }
  	var o = theButton.toolItem;
    if(!o) { return; }
    var param = {
      event: e,
      button: theButton
    };
    if(o.HANDLER){ o.HANDLER(param);  }
  if(o.DISABLED){
    e.cancelBubble = true;
    if (e.stopPropagation){ e.stopPropagation(); }
  }
	return(false);
}
function wikibar_onClickMenuItem(e){
	if(!e){ e = window.event; }
	var theButton = wikibar_resolveTargetButton(resolveTarget(e));
	if(!theButton){ return(false);  }
	e.cancelBubble = true;
	if (e.stopPropagation){ e.stopPropagation(); }
    var title = theButton.tiddlerTitle;
    var editor = theButton.editor;
    var tool = theButton.toolItem;
    if(!tool) { return; }
    var popup = wikibarPopup.create(this);
  	if(popup){
      wikibar_createMenu(popup,tool,title,editor);
      if(!popup.hasChildNodes()){
        wikibarPopup.remove();
      }else{
        wikibarPopup.show(popup, false);
      }
    }
	return(false);
}
var wikibarColorTool = {
  defaultPaletteName : 'default',
  defaultColumns : 16,
  defaultPalette : [
    '#FFF','#DDD','#CCC','#BBB','#AAA','#999','#666','#333','#111','#000','#FC0','#F90','#F60','#F30','#C30','#C03',
    '#9C0','#9D0','#9E0','#E90','#D90','#C90','#FC3','#FC6','#F96','#F63','#600','#900','#C00','#F00','#F36','#F03',
    '#CF0','#CF3','#330','#660','#990','#CC0','#FF0','#C93','#C63','#300','#933','#C33','#F33','#C36','#F69','#F06',
    '#9F0','#CF6','#9C3','#663','#993','#CC3','#FF3','#960','#930','#633','#C66','#F66','#903','#C39','#F6C','#F09',
    '#6F0','#9F6','#6C3','#690','#996','#CC6','#FF6','#963','#630','#966','#F99','#F39','#C06','#906','#F3C','#F0C',
    '#3F0','#6F3','#390','#6C0','#9F3','#CC9','#FF9','#C96','#C60','#C99','#F9C','#C69','#936','#603','#C09','#303',
    '#0C0','#3C0','#360','#693','#9C6','#CF9','#FFC','#FC9','#F93','#FCC','#C9C','#969','#939','#909','#636','#606',
    '#060','#3C3','#6C6','#0F0','#3F3','#6F6','#9F9','#CFC','#9CF','#FCF','#F9F','#F6F','#F3F','#F0F','#C6C','#C3C',
    '#030','#363','#090','#393','#696','#9C9','#CFF','#39F','#69C','#CCF','#C9F','#96C','#639','#306','#90C','#C0C',
    '#0F3','#0C3','#063','#396','#6C9','#9FC','#9CC','#06C','#369','#99F','#99C','#93F','#60C','#609','#C3F','#C0F',
    '#0F6','#3F6','#093','#0C6','#3F9','#9FF','#699','#036','#039','#66F','#66C','#669','#309','#93C','#C6F','#90F',
    '#0F9','#6F9','#3C6','#096','#6FF','#6CC','#366','#069','#36C','#33F','#33C','#339','#336','#63C','#96F','#60F',
    '#0FC','#6FC','#3C9','#3FF','#3CC','#399','#033','#39C','#69F','#00F','#00C','#009','#006','#003','#63F','#30F',
    '#0C9','#3FC','#0FF','#0CC','#099','#066','#3CF','#6CF','#09C','#36F','#0CF','#09F','#06F','#03F','#03C','#30C'
  ],
	colorPicker : null,
  pickColorHandler: null,
  userData: null
};
wikibarColorTool.paletteName = wikibarColorTool.defaultPaletteName;
wikibarColorTool.columns = wikibarColorTool.defaultColumns;
wikibarColorTool.palette = wikibarColorTool.defaultPalette;
wikibarColorTool.onPickColor = function(e){
	if (!e){ e = window.event; }
	var theCell = resolveTarget(e);
	if(!theCell){ return(false); }
    color = theCell.bgColor.toLowerCase();
    if(!color)  { return; }
    wikibarColorTool.displayColorPicker(false);
    if(wikibarColorTool.pickColorHandler){
      wikibarColorTool.pickColorHandler(color, wikibarColorTool.userData);
    }
	return(false);
};
wikibarColorTool.onMouseOver = function(e){
	if (!e){ e = window.event; }
	var theButton = resolveTarget(e);
	if(!theButton){ return(false);  }
  	if(!wikibarColorTool)  { return; }
    color = theButton.bgColor.toUpperCase();
    if(!color)  { return; }
    td=document.getElementById('colorPickerInfo');
  	if(!td) { return; }
  	td.bgColor = color;
  	td.innerHTML = '<span style=\"color:#000;\">'+color+'</span>&nbsp;&nbsp;&nbsp;' +
  	               '<span style=\"color:#fff;\">'+color+'</span>';
	e.cancelBubble = true;
	if (e.stopPropagation){ e.stopPropagation(); }
	return(false);
};
wikibarColorTool.openColorPicker = function(theTarget, pickColorHandler, userData){
  wikibarColorTool.skipClickDocumentEvent = true;
  wikibarColorTool.pickColorHandler = pickColorHandler;
  wikibarColorTool.userData = userData;
  wikibarColorTool.moveColorPicker(theTarget);
};
wikibarColorTool.convert3to6HexColor = function(c){
  c=c.trim();
  var rx=/^\#(\d|[a-f])(\d|[a-f])(\d|[a-f])$/gi;
  return (rx.test(c)? c.replace(rx, '#$1$1$2$2$3$3') : c);
};
wikibarColorTool.numToHexColor = function (n){
  if(typeof(n)=='number' && (n>=0 && n<=255)) {
  		s = n.toString(16).toLowerCase();
  		return ((s.length==1)? '0'+s : s);
  }else{
	 return null;
	}
};
wikibarColorTool.renderColorPalette = function(){
	if(wikibarColorTool.paletteName==wikibarColorTool.defaultPaletteName){
		wikibarColorTool.palette=wikibarColorTool.defaultPalette;
		wikibarColorTool.columns=wikibarColorTool.defaultColumns;
		return;
	}
	tiddlerText = (store.getTiddlerText(wikibarColorTool.paletteName, '')).trim();
	if(tiddlerText.length<=0) { return; }
	var cpContents = tiddlerText.split('\n');
	var colors=[];
	columns = wikibarColorTool.defaultColumns;
	var tmpArray=null;
	errCount=0;
	for(var i=0; i<cpContents.length; i++){
		cpLine=cpContents[i].trim();
    if( (!cpLine) || (cpLine.length<=0) || (cpLine.charAt(0) == '#') ){ continue; }
		if(cpLine.substring(0,8).toLowerCase()=='columns:'){
			tmpArray = cpLine.split(':');
			try{
				columns = parseInt(tmpArray[1],10);
			}catch(ex){
				columns = wikibarColorTool.defaultColumns;
			}
		}else{
			tmpArray = cpLine.replace('\t', ' ').split(/[ ]{1,}/);
			try{
				color='';
				for(var j=0; j<3; j++){
          c=parseInt(tmpArray[j].trim(), 10);
          if(isNaN(c)){
						break;
          }else{
						c=wikibarColorTool.numToHexColor(c);
						if(!c) {break;}
            color+=c;
					}
				}
				if(color.length==6){
					colors.push('#'+color);
				}	else {
					throw 'error';
				}
			}catch(ex){
			}
		}
	}
	if(colors.length>0){
		wikibarColorTool.palette = colors;
		wikibarColorTool.columns = columns;
	}else{
		throw 'renderColorPalette(): No color defined in the palette.';
	}
};
wikibarColorTool.displayColorPicker = function(visible){
  if(wikibarColorTool.colorPicker){
    wikibarColorTool.colorPicker.style.display = (visible? 'block' : 'none');
  }
};
wikibarColorTool.moveColorPicker = function(theTarget){
  if(!wikibarColorTool.colorPicker){
  	wikibarColorTool.createColorPicker();
  }
	var cp = wikibarColorTool.colorPicker;
	var rootLeft = findPosX(theTarget);
  var rootTop = findPosY(theTarget);
  var popupLeft = rootLeft;
  var popupTop = rootTop;
  var popupWidth = cp.offsetWidth;
  var winWidth = findWindowWidth();
  if(popupLeft + popupWidth > winWidth){
	  popupLeft = winWidth - popupWidth;
	}
  cp.style.left = popupLeft + 'px';
  cp.style.top = popupTop + 'px';
  wikibarColorTool.displayColorPicker(true);
};
wikibarColorTool.createColorPicker = function(unused, palette){
  if(palette){	wikibarColorTool.paletteName=palette; }
	wikibarColorTool.renderColorPalette();
	wikibarColorTool.colorPicker = document.createElement('div');
	wikibarColorTool.colorPicker.id = 'colorPicker';
	document.body.appendChild(wikibarColorTool.colorPicker);
  var theTable = document.createElement('table');
  wikibarColorTool.colorPicker.appendChild(theTable);
  var theTR = document.createElement('tr');
	theTable.appendChild(theTR);
	var theTD = document.createElement('td');
	theTD.className = 'header';
	theTD.colSpan = wikibarColorTool.columns;
	theTD.innerHTML = wikibarColorTool.paletteName;
  theTR.appendChild(theTD);
  for(var i=0; i<wikibarColorTool.palette.length; i++){
    if((i%wikibarColorTool.columns)===0){
      theTR = document.createElement('tr');
      theTable.appendChild(theTR);
    }
    theTD = document.createElement('td');
    theTD.className = 'cell';
    theTD.bgColor = wikibarColorTool.convert3to6HexColor(wikibarColorTool.palette[i]);
    theTD.onclick = wikibarColorTool.onPickColor;
    theTD.onmouseover = wikibarColorTool.onMouseOver;
    theTR.appendChild(theTD);
  }
  rest = wikibarColorTool.palette.length % wikibarColorTool.columns;
  if(rest>0){
    theTD = document.createElement('td');
		theTD.colSpan = wikibarColorTool.columns-rest;
    theTD.bgColor = '#000000';
    theTR.appendChild(theTD);
  }
  theTR = document.createElement('tr');
	theTable.appendChild(theTR);
	theTD = document.createElement('td');
	theTD.colSpan = wikibarColorTool.columns;
	theTD.id = 'colorPickerInfo';
  theTR.appendChild(theTD);
};
wikibarColorTool.onDocumentClick = function(e){
	if (!e){ e = window.event; }
	if(wikibarColorTool.skipClickDocumentEvent) {
	  wikibarColorTool.skipClickDocumentEvent = false;
    return true;
	}
	if((!e.eventPhase) || e.eventPhase == Event.BUBBLING_PHASE || e.eventPhase == Event.AT_TARGET){
    wikibarColorTool.displayColorPicker(false);
  }
	return true;
};
function wikibar_doSelectPalette(param){
	clearMessage();
	var theButton = param.button;
	if(!theButton.toolItem.key)  { return; }
	var palette = theButton.toolItem.key;
	var oldPaletteName = wikibarColorTool.paletteName;
	if(oldPaletteName != palette){
		try{
			wikibarColorTool.createColorPicker(theButton, palette);
			displayMessage('Palette \"'+palette+'\" ('+ wikibarColorTool.palette.length +' colors) is selected');
		}catch(ex){
			errMsg = ex;
			if(errMsg.substring(0,18)=='renderColorPalette'){
				displayMessage('Invalid palette \"' + palette + '\", please check it out!');
				wikibarColorTool.createColorPicker(theButton, oldPaletteName);
			}
		}
	}
}
var wikibarPopup = {
  skipClickDocumentEvent: false,
	stack: []
};
wikibarPopup.resolveRootPopup = function(o){
  if(o.isOnMainMenu){  return null; }
  if(o.className.substring(0,12)=='wikibarPopup'){  return o;}
  return wikibarPopup.resolveRootPopup(o.parentNode);
};
wikibarPopup.create = function(root){
  for(var i=0; i<wikibarPopup.stack.length; i++){
    var p=wikibarPopup.stack[i];
    if(p.root==root){
      wikibarPopup.removeFrom(i+1);
      return null;
    }
  }
  var rootPopup = wikibarPopup.resolveRootPopup(root);
  if(!rootPopup){
    wikibarPopup.remove();
  }else{
    wikibarPopup.removeFromRootPopup(rootPopup);
  }
	var popup = createTiddlyElement(document.body,'div','wikibarPopup'+root.toolItem.key,'wikibarPopup');
	var pop = createTiddlyElement(popup,'table','','');
	wikibarPopup.stack.push({rootPopup: rootPopup, root: root, popup: popup});
	return pop;
};
wikibarPopup.show = function(unused,slowly){
	var curr = wikibarPopup.stack[wikibarPopup.stack.length-1];
	var overlayWidth = 1;
  var rootLeft, rootTop, rootWidth, rootHeight, popupLeft, popupTop, popupWidth;
  if(curr.rootPopup){
  	rootLeft = findPosX(curr.rootPopup);
  	rootTop = findPosY(curr.root);
  	rootWidth = curr.rootPopup.offsetWidth;
  	popupLeft = rootLeft + rootWidth - overlayWidth;
  	popupTop = rootTop;
  }else{
  	rootLeft = findPosX(curr.root);
  	rootTop = findPosY(curr.root);
  	rootHeight = curr.root.offsetHeight;
  	popupLeft = rootLeft;
  	popupTop = rootTop + rootHeight;
  }
	var winWidth = findWindowWidth();
	popupWidth = curr.popup.offsetWidth;
	if(popupLeft + popupWidth > winWidth){
		popupLeft = rootLeft - popupWidth + overlayWidth;
	}
	curr.popup.style.left = popupLeft + 'px';
	curr.popup.style.top = popupTop + 'px';
	curr.popup.style.display = 'block';
	addClass(curr.root, 'highlight');
	if(config.options.chkAnimate){
		anim.startAnimating(new Scroller(curr.popup,slowly));
	}else{
		window.scrollTo(0,ensureVisible(curr.popup));
	}
};
wikibarPopup.remove = function(){
	if(wikibarPopup.stack.length > 0){
		wikibarPopup.removeFrom(0);
  }
};
wikibarPopup.removeFrom = function(from){
	for(var t=wikibarPopup.stack.length-1; t>=from; t--){
		var p = wikibarPopup.stack[t];
		removeClass(p.root,'highlight');
		p.popup.parentNode.removeChild(p.popup);
  }
	wikibarPopup.stack = wikibarPopup.stack.slice(0,from);
};
wikibarPopup.removeFromRootPopup = function(from){
  for(var t=0; t<wikibarPopup.stack.length; t++){
    var p = wikibarPopup.stack[t];
    if(p.rootPopup==from){
      wikibarPopup.removeFrom(t);
      break;
    }
  }
};
wikibarPopup.onDocumentClick = function(e){
	if (!e){ e = window.event; }
	if(wikibarPopup.skipClickDocumentEvent){
	 wikibarPopup.skipClickDocumentEvent=false;
	 return true;
	}
	if((!e.eventPhase) || e.eventPhase == Event.BUBBLING_PHASE || e.eventPhase == Event.AT_TARGET){
		wikibarPopup.remove();
	}
	return true;
};
var wikibarStore = {
  TYPE: 'MAIN_MENU',
  help:{
    TYPE:'MENU',
    CAPTION: '<font face=\"verdana\">?</font>',
    TOOLTIP:     'about WikiBar',
    options:{
      TYPE:'MENU',
      DYNAITEM: wikibar_genWikibarOptions
    },
    about:{
      TYPE:'MENU',
      DYNAITEM: wikibar_genWikibarAbout
    }
  },
  preview:{
    TOOLTIP:     'preview this tiddler',
    CAPTION: '<font face=\"verdana\">&infin;</font>',
    HANDLER: wikibar_doPreview
  },
	line:{
		TOOLTIP:    'horizontal line',
		CAPTION: '<font face=\"verdana\">&mdash;</font>',
		syntax: '\n----\n',
		HANDLER: wikibar_editFormatByCursor
	},
	crlf:{
		TOOLTIP:    'new line',
		CAPTION: '<font face=\"verdana\">&para;</font>',
		syntax: '\n',
		HANDLER: wikibar_editFormatByCursor
	},
	selectAll:{
		TOOLTIP:    'select all',
		CAPTION: '<font face=\"verdana\">&sect;</font>',
		HANDLER: wikibar_editSelectAll
	},
	deleteSelected:{
		TOOLTIP:    'delete selected',
		CAPTION: '<font face=\"verdana\">&times;</font>',
		syntax: '',
		HANDLER: wikibar_editFormat
	},
  textFormat:{
    TYPE: 'MENU',
    CAPTION: 'text',
    TOOLTIP: 'text formatters',
    ignore:{
			TOOLTIP:     'ignore wiki word',
			CAPTION: 'ignore wikiWord',
			syntax:  '~user_text',
			hint:    'wiki_word',
			HANDLER:    wikibar_editFormatByWord
		},
		bolder:{
			TOOLTIP:     'bolder text',
			CAPTION: '<strong>bolder</strong>',
			syntax:  "''user_text''",
			hint:		 'bold_text',
			HANDLER:    wikibar_editFormatByWord
		},
		italic:{
			TOOLTIP:    'italic text',
			CAPTION: '<em>italic</em>',
			syntax: '\/\/user_text\/\/',
			hint:		'italic_text',
			HANDLER: wikibar_editFormatByWord
		},
		underline:{
			TOOLTIP:    'underline text',
			CAPTION: '<u>underline</u>',
			syntax: '__user_text__',
			hint:		'underline_text',
			HANDLER: wikibar_editFormatByWord
		},
		strikethrough:{
			TOOLTIP:    'strikethrough text',
			CAPTION: '<strike>strikethrough</strike>',
			syntax: '==user_text==',
			hint:		'strikethrough_text',
			HANDLER: wikibar_editFormatByWord
		},
		superscript:{
			TOOLTIP:    'superscript text',
			CAPTION: 'X<sup>superscript</sup>',
			syntax: '^^user_text^^',
			hint:		'superscript_text',
			HANDLER: wikibar_editFormatByWord
		},
		subscript:{
			TOOLTIP:    'subscript text',
			CAPTION: 'X<sub>subscript</sub>',
			syntax: '~~user_text~~',
			hint:		'subscript_text',
			HANDLER: wikibar_editFormatByWord
		},
		comment:{
			TOOLTIP:    'comment text',
			CAPTION: 'comment text',
			syntax: '/%user_text%/',
			hint:		'comment_text',
			HANDLER: wikibar_editFormatByWord
		},
		monospaced:{
			TOOLTIP:    'monospaced text',
			CAPTION: '<code>monospaced</code>',
			syntax: '{{{user_text}}}',
			hint:		'monospaced_text',
			HANDLER: wikibar_editFormatByWord
		}
  },
  paragraph:{
    TYPE: 'MENU',
    TOOLTIP: 'paragarph formatters',
    list:{
      TYPE: 'MENU',
      TOOLTIP: 'list tools',
      bullet:{
  			TOOLTIP:    'bullet point',
  			syntax: '*user_text',
  			hint:		'bullet_text',
  			HANDLER: wikibar_editFormatByLine
  		},
  		numbered:{
  			TOOLTIP:    'numbered list',
  			syntax: '#user_text',
  			hint:		'numbered_text',
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    heading:{
      TYPE: 'MENU',
      heading1:{
  		  CAPTION:'<h1>Heading 1</h1>',
  			TOOLTIP:    'Heading 1',
  			syntax: '!user_text',
  			hint:		'heading_1',
  			HANDLER: wikibar_editFormatByLine
  		},
  		heading2:{
  		  CAPTION:'<h2>Heading 2<h2>',
  			TOOLTIP:    'Heading 2',
  			syntax: '!!user_text',
  			hint:		'heading_2',
  			HANDLER: wikibar_editFormatByLine
  		},
  		heading3:{
  		  CAPTION:'<h3>Heading 3</h3>',
  			TOOLTIP:    'Heading 3',
  			syntax: '!!!user_text',
  			hint:		'heading_3',
  			HANDLER: wikibar_editFormatByLine
  		},
  		heading4:{
  		  CAPTION:'<h4>Heading 4</h4>',
  			TOOLTIP:    'Heading 4',
  			syntax: '!!!!user_text',
  			hint:		'heading_4',
  			HANDLER: wikibar_editFormatByLine
  		},
  		heading5:{
  		  CAPTION:'<h5>Heading 5</h5>',
  			TOOLTIP:    'Heading 5',
  			syntax: '!!!!!user_text',
  			hint:		'heading_5',
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    comment:{
      TYPE: 'MENU',
      commentByLine:{
  			CAPTION:'comment by line',
  			TOOLTIP:    'line comment',
  			syntax: '/%user_text%/',
  			hint:		'comment_text',
  			HANDLER: wikibar_editFormatByLine
  		},
  		commentByBlock:{
  			CAPTION:'comment by block',
  			TOOLTIP:    'block comment',
  			syntax: '/%\nuser_text\n%/',
  			hint:		'comment_text',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    monospaced:{
      TYPE: 'MENU',
  		monosByLine:{
  			CAPTION: 	'monospaced by line',
  			TOOLTIP:    'line monospaced',
  			syntax: '{{{\nuser_text\n}}}',
  			hint:		'monospaced_text',
  			HANDLER: wikibar_editFormatByLine
  		},
  		monosByBlock:{
  			CAPTION: 	'monospaced by block',
  			TOOLTIP:    'block monospaced',
  			syntax: '{{{\nuser_text\n}}}',
  			hint:		'monospaced_text',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    quote:{
      TYPE: 'MENU',
  		quoteByLine:{
  			CAPTION: 	'quote by line',
  			TOOLTIP:    'line quote',
  			syntax: '>user_text',
  			hint:		'quote_text',
  			HANDLER: wikibar_editFormatByLine
  		},
  		quoteByBlcok:{
  			CAPTION: 	'quote by block',
  			TOOLTIP:    'block quote',
  			syntax: '<<<\nuser_text\n<<<',
  			hint:		'quote_text',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    plugin:{
      TYPE: 'MENU',
      code:{
  			CAPTION: 	'code area',
  			TOOLTIP:    'block monospaced for plugin',
  			syntax: '\n\/\/{{{\nuser_text\n\/\/}}}\n',
  			hint:		'monospaced_plugin_code',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		},
  		commentByLine:{
  			CAPTION: 	'comment by line',
  			TOOLTIP:    'line comment',
  			syntax: '\/\/user_text',
  			hint:		'plugin_comment',
  			HANDLER: wikibar_editFormatByLine
  		},
  		commentByBlock:{
  			CAPTION: 	'comment by block',
  			TOOLTIP:    'block comment',
  			syntax: '\/\***\nuser_text\n***\/',
  			hint:		'plugin_comment',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    css:{
      TYPE: 'MENU',
      code:{
  			CAPTION: 	'code area',
  			TOOLTIP:    'block monospaced for css',
  			syntax: '\n\nuser_text\n\n',
  			hint:		'monospaced_css_code',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		},
  		commentByLine:{
  			CAPTION: 	'comment by line',
  			TOOLTIP:    'line comment',
  			syntax: '',
  			hint:		'css_comment',
  			HANDLER: wikibar_editFormatByLine
  		},
  		commentByBlock:{
  			CAPTION: 	'comment by block',
  			TOOLTIP:    'block comment',
  			syntax: '',
  			hint:		'css_comment',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    }
  },
  color:{
    TYPE: 'MENU',
    TOOLTIP: 'color tools',
    highlight:{
		  CAPTION:'highlight text',
			TOOLTIP:    'highlight text',
			syntax: '@@user_text@@',
			hint:		'highlight_text',
			HANDLER: wikibar_editFormatByWord
		},
		color:{
		  CAPTION:'text color',
			TOOLTIP:    'text color',
			hint:		'your_text',
			syntax: '@@color(%1):user_text@@',
			HANDLER:   wikibar_getColorCode,
			doMore: wikibar_editFormatByWord
		},
		bgcolor:{
		  CAPTION:'background color',
			TOOLTIP:    'background color',
			hint:		'your_text',
			syntax: '@@bgcolor(%1):user_text@@',
			HANDLER: wikibar_getColorCode,
			doMore: wikibar_editFormatByWord
		},
		colorcode:{
      CAPTION:'color code',
      TOOLTIP:    'insert color code',
      syntax: '%1',
      HANDLER: wikibar_getColorCode,
      doMore: wikibar_editFormatByCursor
    },
    'color palette':{
      TYPE:'MENU',
      DYNAITEM: wikibar_genPaletteSelector,
  		SEPERATOR:{},
  		morePalette:{
  		  CAPTION:'more palettes',
  		  TOOLTIP:'get more palettes',
  		  HANDLER: wikibar_getMorePalette
  		}
    }
  },
  link:{
    TYPE: 'MENU',
    TOOLTIP: 'insert link',
    wiki:{
		  CAPTION:'wiki link',
			TOOLTIP:    'wiki link',
			syntax: '[[user_text]]',
			hint:		'wiki_word',
			HANDLER: wikibar_editFormatByWord
		},
		pretty:{
			CAPTION: 	'pretty link',
			TOOLTIP:    'pretty link',
			syntax: '[[user_text|%1]]',
			hint:		'pretty_word',
			param:	'PrettyLink Target',
			HANDLER:   wikibar_getLinkUrl,
			doMore: wikibar_editFormatByWord
		},
		url:{
			TOOLTIP:    'url link',
			syntax: '[[user_text|%1]]',
			hint:		'your_text',
			param:	'http:\/\/...',
			HANDLER:   wikibar_getLinkUrl,
			doMore: wikibar_editFormatByWord
		},
		image:{
			TOOLTIP:    'image link',
			syntax: '[img[user_text|%1]]',
			hint:		'alt_text',
			param:	'image/icon.jpg',
			HANDLER:   wikibar_getLinkUrl,
			doMore: wikibar_editFormatByWord
		}
  },
  macro:{},
  more:{
    TYPE: 'MENU',
    TOOLTIP: 'more tools',
    table:{
      TYPE: 'MENU',
      TOOLTIP: 'table',
      table:{
  		  CAPTION:'create table',
  			TOOLTIP:    'create a new table',
  			syntax: '\n%1\n',
  			HANDLER: wikibar_getTableRowCol,
  			doMore: wikibar_editFormatByWord
  		},
  		header:{
  			TOOLTIP:    'table header text',
  			syntax: '|user_text|c',
  			hint:		'table_header',
  			HANDLER: wikibar_editFormatByWord
  		},
  		cell:{
  			TOOLTIP:    'create a tabel cell',
  			syntax: '|user_text|',
  			hint:		'your_text',
  			HANDLER: wikibar_editFormatByWord
  		},
  		columnHeader:{
  		  CAPTION:'column header',
  			TOOLTIP:    'create a column header cell',
  			syntax: '|!user_text|',
  			hint:		'column_header',
  			HANDLER: wikibar_editFormatByWord
  		},
  	  cell:{
  	    TYPE: 'MENU',
        CAPTION: 'cell options',
    		bgcolor:{
    			CAPTION: 	'background color',
    			TOOLTIP:    'cell bgcolor',
    			syntax: '|bgcolor(%1):user_text|',
    			hint:		'your_text',
    			HANDLER: wikibar_getColorCode,
    			doMore: wikibar_editFormatByTableCell
    		},
    		alignLeft:{
    			CAPTION: 	'align left',
    			TOOLTIP:    'left align cell text',
    			syntax: '|user_text|',
    			hint:		'your_text',
    			HANDLER: wikibar_editFormatByTableCell
    		},
    		alignCenter:{
    			CAPTION: 	'align center',
    			TOOLTIP:    'center align cell text',
    			syntax: '| user_text |',
    			hint:		'your_text',
    			HANDLER: wikibar_editFormatByTableCell
    		},
    		alignRight:{
    			CAPTION: 	'align right',
    			TOOLTIP:    'right align cell text',
    			syntax: '| user_text|',
    			hint:		'your_text',
    			HANDLER: wikibar_editFormatByTableCell
    		}
    	}
    },
    html:{
      TYPE: 'MENU',
      html:{
  			CAPTION: 	'&lt;html&gt;',
  			TOOLTIP:    'html tag',
  			syntax: '<html>\nuser_text\n</html>',
  			hint:		'html_content',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    }
  },
  addon:{
    TYPE: 'MENU',
    TOOLTIP:'3rd party tools',
    'about addons':{
      TOOLTIP: 'list loaded addons',
      HANDLER: wikibar_doListAddons
    },
    SEPERATOR:{}
  }
};
addEvent(document, 'click', wikibarColorTool.onDocumentClick);
addEvent(document, 'click', wikibarPopup.onDocumentClick);
wikibar_install();
//}}}
<<tiddler AutoRefresh on>><<tiddler HideTiddlerTags>>{{floatleft{[img[Vasili Kandinsky, composition VIII (1923)|imagesWiki/kandinsky.comp-8.jpg]]}}}
| <<tiddler [[./champs]]>> |



| !Philosophie |
| <<tiddler [[./philosophie]]>> |
| !Philosophie de la biologie |
| <<tiddler [[./philoBio]]>> |
| !Sciences |
| <<tiddler [[./sciences]]>> |
| !Biologie |
| <<tiddler [[./biologie]]>> |

| !Concepts |
| <<tiddler [[./concepts]]>> |
| !Théories |
| <<tiddler [[./théories]]>> |

| !Auteurs |
| <<tiddler [[./auteurs]]>> |
<part champs hidden>
{{textcenter{


 <<tag Philosophie>> - <<tag Sciences>> - <<tag Littérature>> - <<tag Religion>>

<<tag Auteurs>> - <<tag Livres>> - <<tag Articles>>

<<tag Concepts>> - <<tag Théories>>

<<tag [[Mots clefs|MotsClefs]]>>

<<tag Idées>>

}}}
</part>
<part philosophie hidden>
{{floatleft{[img(250px,auto)[Philosophie|./imagesWiki/platon_aristote.gif][Philosophie]]}}}
{{textcenter{
[[Philosophie de la connaissance|Epistémologie]] – [[Philosophie des sciences|PhiloSciences]] – [[Philosophie de la biologie|PhiloBio]] – [[Philosophie du langage|PhiloLangage]] – [[Philosophie de la logique|PhiloLogique]] – [[Philosophie de l'histoire|PhiloHistoire]] – [[Philosophie de l'action|PhiloAction]] – [[Herméneutique]] – [[Esthétique]]

----

<<tagCloud =Philosophie>>}}}
</part>
<part philoBio hidden>
{{floatright{[img(150px,auto)[Philosophie de la biologie|./imagesWiki/canard_mécanique.gif][PhiloBio]]}}}
{{textcenter{
[[Fonction]] – [[Téléologie]] – [[Vie minimale|VieMinimale]] – [[Définition de la vie|VieDéfinition]] – [[Darwinisme]]

----

<<tagCloud =PhiloBio>>
}}}
</part>
<part sciences hidden>
{{floatleft{[img(100px, auto)[Sciences|./imagesWiki/Atome.JPG][Sciences]]}}}
{{textcenter{
[[Biologie]] – [[Physique]] – [[Mécanique quantique|MécaniqueQuantique]]
}}}
----

<<tagCloud =Sciences>>
</part>
<part biologie hidden>
{{floatright{[img(150px, auto)[Biologie (Deinococcus radiodurans)|./imagesWiki/Deinococcus_radiodurans.jpg][Biologie]]}}}
{{textcenter{
[[Darwinisme]] – [[Biologie synthétique|BiologieSynthétique]] – BioSémiotique – [[Organicisme]] – [[Vitalisme]]
}}}
----

<<tagCloud =Biologie>>
</part>
<part concepts hidden>
{{floatleft{[img[Concepts|IconeConcept][Concepts]]}}}
{{textcenter{
[[Objectivité]] – [[Fonction]] – [[Téléologie]] – [[Normativité]] – [[Explication]] – [[Signification]]
}}}
----

<<tagCloud =Concepts>>
</part>
<part théories hidden>
{{floatright{[img(100px,auto)[Théories|./imagesWiki/MaxPlanckInstitute.png][Théories]]}}}
{{textcenter{
[[Naturalisme]] – [[Darwinisme]] – [[Intentional stance|IntentionalStance]]
}}}
----

<<tagCloud =Théories>>
</part>
<part auteurs hidden>
{{floatleft{[img(150px,auto)[Auteurs|./imagesWiki/Borges.jpg][Auteurs]]}}}
{{textcenter{
[[Mark Bedau|Bedau, Mark]] – [[Daniel Dennett|Dennett, Daniel]] – [[Ernst Mayr|Mayr, Ernst]] – [[R.G. Millikan|Millikan, Ruth Garrett]] – [[Ernest Nagel|Nagel, Ernest]]
}}}
----

<<tagCloud =Auteurs>>
</part>
----
{{floatleft{
[img(120px,auto)[Ludwig Wittgenstein, wikipedia|imagesWiki/Wittgenstein.jpg][http://en.wikipedia.org/wiki/Ludwig_Wittgenstein]]
}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Wittgenstein","prénom":"Ludwig","initiales":"L"}</data>
<<tiddler Auteur>>

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Wolfe","prénom":"Charles T"}</data>

<<tiddler AutoRefresh on>><<tiddler Livre>>++++![Résumé]
L'auteur défend une conception dite "[[mentaliste|TéléoMentalisme]]" de la [[téléologie|Téléologie]], dans la mesure où, sur la base d'une analyse du langage téléologique, il conclut que les comportements dirigés vers un but ont pour modèle le comportement intentionnel humain et ne s'appliquent //stricto sensu// qu'aux êtres dotés d'un esprit. Le paradigme de ce type de comportement est l'être humain, et son attribution à certains animaux et à certaines machines relève de l'analogie ou de la métaphore. Selon cette conception, en effet, la caractéristique essentielle des membres de plein droit de la classe des //goal-directed systems// est leur capacité à avoir et à agir en fonction de désirs et de croyances, c'est-à-dire, d'après Woodfield, en vertu d'un certain état interne ([[p.201|Woodfield, A 1976:201]]).+++[suite]
.
L'approche de Woodfield, comme celle des naturalistes, semble au premier abord être causale. Selon lui, la cause d'un comportement B (//behavior//) dirigé vers un but G (//goal//) n'est pas un événement futur (le but visé&nbsp;: G) mais un état interne du système S que l'on peut traduire en termes de désirs et de croyances&nbsp;: avoir un but G, c'est désirer G et croire que B conduit à G (B&nbsp;=>&nbsp;G).

<<tiddler [[Woodfield, A 1976:206/tableAnalyses]]>>
===
===

+++![Chapitres]
<<newChapterHere>>
<<tiddler [[nomAuteur (date) - ch.01]]>>
<<tiddler [[nomAuteur (date) - ch.02]]>>
<<tiddler [[nomAuteur (date) - ch.03]]>>
etc.
===

<<tiddler RéférenceLivre>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
===
+++(chapitre)^[nouveau chapitre]
<<formTiddler NouveauChapitreModèle>>
<<RefreshTiddler "Rafraîchir>><<newChapterHere>>
===<<newNoteHere label:"nouvelle note">>
----
<data>{"nom":"Woodfield","prénom":"Andrew","initiales":"A","titrelivre":"Teleology","datepublication":"1976","villeédition":"New York","noméditeur":"Cambridge University Press","dateédition":"1976","pagescitation":"206","motscléscitation":"tableAnalyses"}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!internalState
<part internalState> "In order to analyse our present notion of goal-directed behaviour it was found necessary to postulate a mentalistic core-concept, and to hypothesise that our present concept, which applies to machines as well as to animals, was derived from it by an analogical extension. It had been discovered earlier that no behaviour of a system could be goal-directed unless it was the result of the system's being in a certain kind of internal state. It followed from this that only certain kinds of systems were capable of goal-directed behaviour, namely, those capable of being in the relevant internal state." ([[Woodfield, A 1976:201]]) </part><data>{"nom":"Woodfield","prénom":"Andrew","initiales":"A","titrelivre":"Teleology","datepublication":"1976","villeédition":"New York","noméditeur":"Cambridge University Press","dateédition":"1976","pagescitation":"201","motscléscitation":"internalState"}</data>
<<tiddler Citation>><<tiddler RéférenceLivre>>
!tableAnalyses  
<part tableAnalyses>
|''Table of analyses''|c
|>|!ANALYSANDUM|!ANALYSANS|>|>|>|>|
|bgcolor(#ffdead): ''Explanandum'' |bgcolor(#ffff99): ''Explanans '' |bgcolor(#ffdead): '' Explanandum'' |bgcolor(#ffff99): ''Explanans'' |>|>|>|
|~|~|~|bgcolor(#ffff99):|bgcolor(#a0ffa0): //''intensional''// |bgcolor(#a0ffa0): //''causal''// |bgcolor(#a0ffa0): //''evaluative''// |
|bgcolor(#ffdead)://S// does //B//|bgcolor(#ffff99): in order to do //G//. |bgcolor(#ffdead): //S// does //B//|bgcolor(#ffff99):because|bgcolor(#ffff99)://S// believes|bgcolor(#ffff99):(//B// => //G//|bgcolor(#ffff99):& //G// is good).|
|bgcolor(#ffdead)://S// does //B//|bgcolor(#ffff99): in order to do //F//. |bgcolor(#ffdead): //S// does //B//|bgcolor(#ffff99):because|bgcolor(#ffff99): -- |bgcolor(#ffff99)://B// => //F//|bgcolor(#ffff99):& //F// is good.|
|bgcolor(#ffdead)://X// does/has //A//|bgcolor(#ffff99): in order to do //G//. |bgcolor(#ffdead): //X// does/has //A//|bgcolor(#ffff99):because|bgcolor(#ffff99)://S// believes|bgcolor(#ffff99):(//A// => //G//|bgcolor(#ffff99):& //G// is good.)|
|bgcolor(#ffdead)://X// does/has //A//|bgcolor(#ffff99): in order to do //F//. |bgcolor(#ffdead): //X// does/has //A//|bgcolor(#ffff99):because|bgcolor(#ffff99): -- |bgcolor(#ffff99)://A// => //F//|bgcolor(#ffff99):& //F// is good.|
{{indent{
''S:'' System ; ''B:'' Behavior ; ''G:'' Goal ; ''F:'' Function ; ''X:'' Part of a system ; ''A:'' Activity.
}}}
{{textcenter{([[Woodfield, A 1976:206]])}}}
</part><data>{"nom":"Woodfield","prénom":"Andrew","initiales":"A","titrelivre":"Teleology","datepublication":"1976","villeédition":"New York","noméditeur":"Cambridge University Press","dateédition":"1976","pagescitation":"206","motscléscitation":"tableAnalyses"}</data>
<<tiddler Auteur>>

++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===
----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Woodfield","prénom":"Andrew","initiales":"A","titrelivre":"Teleology","datepublication":"1976","villeédition":"New York","noméditeur":"Cambridge University Press","dateédition":"1976"}</data>
<<tiddler AutoRefresh on>><<tiddler Article>>

++++![Résumé]
L'auteur présente une conception étiologique du concept de fonction, applicable aussi bien aux artefacts qu'aux organismes biologiques. Sa définition repose sur l'idée que l'attribution d'une fonction à un item est une explication de sa présence. La fonction est la raison d'être de la chose; c'est aussi l'une de ses conséquences.

|<<tiddler [[./définition]]>>|
<part définition hidden>''La fonction de X est F signifie:''
# X existe (est présent) parce qu'il réalise F
# F est une conséquence (ou résulte) de l’existence de X</part>


===

<<tiddler RéférenceArticle>>
----
+++(citation)^[nouvelle citation]
<<formTiddler NouvelleCitationModèle>>
<<RefreshTiddler "Rafraîchir">><<newCitationHere>>
=== <<newNoteHere>>
----<data>{"nom":"Wright","prénom":"Larry","initiales":"L","isArticleRevue":true,"titrearticle":"Functions","datepublication":"1973","journal":"Philosophical Review","volumejournal":"82","pagesarticle":"139-168"}</data>
<<tiddler Auteur>>{{floatleft{
[img(120px,auto)[ ]]
}}}
++++![Publications]
<<forEachTiddler where 'tiddler.tags.contains([context.inTiddler.title]) && tiddler.tags.containsAny(["Livres","Articles"]) && tiddler.data("nom")==DataTiddler.getData(context.inTiddler.title,"nom")'>>
===

----
+++(livre)^[Nouveau livre]
<<formTiddler NouveauLivreModèle>>
<<RefreshTiddler "Rafraîchir">><<newBookHere>>
===
+++(article)^[Nouvel article]
<<formTiddler NouvelArticleModèle>>
<<RefreshTiddler "Rafraîchir">><<newArticleHere>>
===
----
<data>{"nom":"Wright","prénom":"Larry","initiales":"L","isArticleRevue":true,"titrearticle":"Functions","datepublication":"1973","journal":"Philosophical Review","volumejournal":"82","pagesarticle":"139-168"}</data>
/***
|''Name:''|YourSearchPlugin|
|''Version:''|2.1.3 (2008-04-16)|
|''Source:''|http://tiddlywiki.abego-software.de/#YourSearchPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2008 [[abego Software|http://www.abego-software.de]]|
|''~CoreVersion:''|2.1.0|
|''Community:''|[[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23YourSearchPlugin]]|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; ~InternetExplorer 6.0|
!About YourSearch
YourSearch gives you a bunch of new features to simplify and speed up your daily searches in TiddlyWiki. It seamlessly integrates into the standard TiddlyWiki search: just start typing into the 'search' field and explore!

For more information see [[Help|YourSearch Help]].
!Compatibility
This plugin requires TiddlyWiki 2.1. 
Check the [[archive|http://tiddlywiki.abego-software.de/archive]] for ~YourSearchPlugins supporting older versions of TiddlyWiki.
!Source Code
***/
/***
This plugin's source code is compressed (and hidden). Use this [[link|http://tiddlywiki.abego-software.de/archive/YourSearchPlugin/Plugin-YourSearch-src.2.1.3.js]] to get the readable source code.
***/
///%
if(!version.extensions.YourSearchPlugin){version.extensions.YourSearchPlugin={major:2,minor:1,revision:3,source:"http://tiddlywiki.abego-software.de/#YourSearchPlugin",licence:"[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",copyright:"Copyright (c) abego Software GmbH, 2005-2008 (www.abego-software.de)"};if(!window.abego){window.abego={};}
if(!Array.forEach){Array.forEach=function(_1,_2,_3){for(var i=0,len=_1.length;i<len;i++){_2.call(_3,_1[i],i,_1);}};Array.prototype.forEach=function(_5,_6){for(var i=0,len=this.length;i<len;i++){_5.call(_6,this[i],i,this);}};}
abego.toInt=function(s,_9){if(!s){return _9;}
var n=parseInt(s);return(n==NaN)?_9:n;};abego.createEllipsis=function(_b){var e=createTiddlyElement(_b,"span");e.innerHTML="&hellip;";};abego.shallowCopy=function(_d){if(!_d){return _d;}
var _e={};for(var n in _d){_e[n]=_d[n];}
return _e;};abego.copyOptions=function(_10){return!_10?{}:abego.shallowCopy(_10);};abego.countStrings=function(_11,s){if(!s){return 0;}
var len=s.length;var n=0;var _15=0;while(1){var i=_11.indexOf(s,_15);if(i<0){return n;}
n++;_15=i+len;}
return n;};abego.getBracedText=function(_17,_18,_19){if(!_18){_18=0;}
var re=/\{([^\}]*)\}/gm;re.lastIndex=_18;var m=re.exec(_17);if(m){var s=m[1];var _1d=abego.countStrings(s,"{");if(!_1d){if(_19){_19.lastIndex=re.lastIndex;}
return s;}
var len=_17.length;for(var i=re.lastIndex;i<len&&_1d;i++){var c=_17.charAt(i);if(c=="{"){_1d++;}else{if(c=="}"){_1d--;}}}
if(!_1d){if(_19){_19.lastIndex=i-1;}
return _17.substring(m.index+1,i-1);}}};abego.select=function(_21,_22,_23,_24){if(!_24){_24=[];}
_21.forEach(function(t){if(_22.call(_23,t)){_24.push(t);}});return _24;};abego.consumeEvent=function(e){if(e.stopPropagation){e.stopPropagation();}
if(e.preventDefault){e.preventDefault();}
e.cancelBubble=true;e.returnValue=true;};abego.TiddlerFilterTerm=function(_27,_28){if(!_28){_28={};}
var _29=_27;if(!_28.textIsRegExp){_29=_27.escapeRegExp();if(_28.fullWordMatch){_29="\\b"+_29+"\\b";}}
var _2a=new RegExp(_29,"m"+(_28.caseSensitive?"":"i"));this.tester=new abego.MultiFieldRegExpTester(_2a,_28.fields,_28.withExtendedFields);};abego.TiddlerFilterTerm.prototype.test=function(_2b){return this.tester.test(_2b);};abego.parseNewTiddlerCommandLine=function(s){var m=/(.*?)\.(?:\s+|$)([^#]*)(#.*)?/.exec(s);if(!m){m=/([^#]*)()(#.*)?/.exec(s);}
if(m){var r;if(m[3]){var s2=m[3].replace(/#/g,"");r=s2.parseParams("tag");}else{r=[[]];}
var _30=m[2]?m[2].trim():"";r.push({name:"text",value:_30});r[0].text=[_30];return{title:m[1].trim(),params:r};}else{return{title:s.trim(),params:[[]]};}};abego.parseTiddlerFilterTerm=function(_31,_32,_33){var re=/\s*(?:(?:\{([^\}]*)\})|(?:(=)|([#%!])|(?:(\w+)\s*\:(?!\/\/))|(?:(?:("(?:(?:\\")|[^"])+")|(?:\/((?:(?:\\\/)|[^\/])+)\/)|(\w+\:\/\/[^\s]+)|([^\s\)\-\"]+)))))/mg;var _35={"!":"title","%":"text","#":"tags"};var _36={};var _37;re.lastIndex=_32;while(1){var i=re.lastIndex;var m=re.exec(_31);if(!m||m.index!=i){throw"Word or String literal expected";}
if(m[1]){var _3a={};var _3b=abego.getBracedText(_31,0,_3a);if(!_3b){throw"Invalid {...} syntax";}
var f=Function("tiddler","return ("+_3b+");");return{func:f,lastIndex:_3a.lastIndex,markRE:null};}
if(m[2]){_37=true;}else{if(m[3]){_36[_35[m[3]]]=1;}else{if(m[4]){_36[m[4]]=1;}else{var _3d=m[6];var _3e=m[5]?window.eval(m[5]):m[6]?m[6]:m[7]?m[7]:m[8];var _33=abego.copyOptions(_33);_33.fullWordMatch=_37;_33.textIsRegExp=_3d;var _3f=[];for(var n in _36){_3f.push(n);}
if(_3f.length==0){_33.fields=_33.defaultFields;}else{_33.fields=_3f;_33.withExtendedFields=false;}
var _41=new abego.TiddlerFilterTerm(_3e,_33);var _42=_3d?_3e:_3e.escapeRegExp();if(_42&&_37){_42="\\b"+_42+"\\b";}
return{func:function(_43){return _41.test(_43);},lastIndex:re.lastIndex,markRE:_42?"(?:"+_42+")":null};}}}}};abego.BoolExp=function(s,_45,_46){this.s=s;var _47=_46&&_46.defaultOperationIs_OR;var _48=/\s*(?:(\-|not)|(\())/gi;var _49=/\s*\)/g;var _4a=/\s*(?:(and|\&\&)|(or|\|\|))/gi;var _4b=/\s*[^\)\s]/g;var _4c=/\s*(\-|not)?(\s*\()?/gi;var _4d;var _4e=function(_4f){_4c.lastIndex=_4f;var m=_4c.exec(s);var _51;var _52;if(m&&m.index==_4f){_4f+=m[0].length;_51=m[1];if(m[2]){var e=_4d(_4f);_49.lastIndex=e.lastIndex;if(!_49.exec(s)){throw"Missing ')'";}
_52={func:e.func,lastIndex:_49.lastIndex,markRE:e.markRE};}}
if(!_52){_52=_45(s,_4f,_46);}
if(_51){_52.func=(function(f){return function(_55){return!f(_55);};})(_52.func);_52.markRE=null;}
return _52;};_4d=function(_56){var _57=_4e(_56);while(1){var l=_57.lastIndex;_4a.lastIndex=l;var m=_4a.exec(s);var _5a;var _5b;if(m&&m.index==l){_5a=!m[1];_5b=_4e(_4a.lastIndex);}else{try{_5b=_4e(l);}
catch(e){return _57;}
_5a=_47;}
_57.func=(function(_5c,_5d,_5e){return _5e?function(_5f){return _5c(_5f)||_5d(_5f);}:function(_60){return _5c(_60)&&_5d(_60);};})(_57.func,_5b.func,_5a);_57.lastIndex=_5b.lastIndex;if(!_57.markRE){_57.markRE=_5b.markRE;}else{if(_5b.markRE){_57.markRE=_57.markRE+"|"+_5b.markRE;}}}};var _61=_4d(0);this.evalFunc=_61.func;if(_61.markRE){this.markRegExp=new RegExp(_61.markRE,_46.caseSensitive?"mg":"img");}};abego.BoolExp.prototype.exec=function(){return this.evalFunc.apply(this,arguments);};abego.BoolExp.prototype.getMarkRegExp=function(){return this.markRegExp;};abego.BoolExp.prototype.toString=function(){return this.s;};abego.MultiFieldRegExpTester=function(re,_63,_64){this.re=re;this.fields=_63?_63:["title","text","tags"];this.withExtendedFields=_64;};abego.MultiFieldRegExpTester.prototype.test=function(_65){var re=this.re;for(var i=0;i<this.fields.length;i++){var s=store.getValue(_65,this.fields[i]);if(typeof s=="string"&&re.test(s)){return this.fields[i];}}
if(this.withExtendedFields){return store.forEachField(_65,function(_69,_6a,_6b){return typeof _6b=="string"&&re.test(_6b)?_6a:null;},true);}
return null;};abego.TiddlerQuery=function(_6c,_6d,_6e,_6f,_70){if(_6e){this.regExp=new RegExp(_6c,_6d?"mg":"img");this.tester=new abego.MultiFieldRegExpTester(this.regExp,_6f,_70);}else{this.expr=new abego.BoolExp(_6c,abego.parseTiddlerFilterTerm,{defaultFields:_6f,caseSensitive:_6d,withExtendedFields:_70});}
this.getQueryText=function(){return _6c;};this.getUseRegExp=function(){return _6e;};this.getCaseSensitive=function(){return _6d;};this.getDefaultFields=function(){return _6f;};this.getWithExtendedFields=function(){return _70;};};abego.TiddlerQuery.prototype.test=function(_71){if(!_71){return false;}
if(this.regExp){return this.tester.test(_71);}
return this.expr.exec(_71);};abego.TiddlerQuery.prototype.filter=function(_72){return abego.select(_72,this.test,this);};abego.TiddlerQuery.prototype.getMarkRegExp=function(){if(this.regExp){return"".search(this.regExp)>=0?null:this.regExp;}
return this.expr.getMarkRegExp();};abego.TiddlerQuery.prototype.toString=function(){return(this.regExp?this.regExp:this.expr).toString();};abego.PageWiseRenderer=function(){this.firstIndexOnPage=0;};merge(abego.PageWiseRenderer.prototype,{setItems:function(_73){this.items=_73;this.setFirstIndexOnPage(0);},getMaxPagesInNavigation:function(){return 10;},getItemsCount:function(_74){return this.items?this.items.length:0;},getCurrentPageIndex:function(){return Math.floor(this.firstIndexOnPage/this.getItemsPerPage());},getLastPageIndex:function(){return Math.floor((this.getItemsCount()-1)/this.getItemsPerPage());},setFirstIndexOnPage:function(_75){this.firstIndexOnPage=Math.min(Math.max(0,_75),this.getItemsCount()-1);},getFirstIndexOnPage:function(){this.firstIndexOnPage=Math.floor(this.firstIndexOnPage/this.getItemsPerPage())*this.getItemsPerPage();return this.firstIndexOnPage;},getLastIndexOnPage:function(){return Math.min(this.getFirstIndexOnPage()+this.getItemsPerPage()-1,this.getItemsCount()-1);},onPageChanged:function(_76,_77){},renderPage:function(_78){if(_78.beginRendering){_78.beginRendering(this);}
try{if(this.getItemsCount()){var _79=this.getLastIndexOnPage();var _7a=-1;for(var i=this.getFirstIndexOnPage();i<=_79;i++){_7a++;_78.render(this,this.items[i],i,_7a);}}}
finally{if(_78.endRendering){_78.endRendering(this);}}},addPageNavigation:function(_7c){if(!this.getItemsCount()){return;}
var _7d=this;var _7e=function(e){if(!e){var e=window.event;}
abego.consumeEvent(e);var _80=abego.toInt(this.getAttribute("page"),0);var _81=_7d.getCurrentPageIndex();if(_80==_81){return;}
var _82=_80*_7d.getItemsPerPage();_7d.setFirstIndexOnPage(_82);_7d.onPageChanged(_80,_81);};var _83;var _84=this.getCurrentPageIndex();var _85=this.getLastPageIndex();if(_84>0){_83=createTiddlyButton(_7c,"Previous","Go to previous page (Shortcut: Alt-'<')",_7e,"prev");_83.setAttribute("page",(_84-1).toString());_83.setAttribute("accessKey","<");}
for(var i=-this.getMaxPagesInNavigation();i<this.getMaxPagesInNavigation();i++){var _87=_84+i;if(_87<0){continue;}
if(_87>_85){break;}
var _88=(i+_84+1).toString();var _89=_87==_84?"currentPage":"otherPage";_83=createTiddlyButton(_7c,_88,"Go to page %0".format([_88]),_7e,_89);_83.setAttribute("page",(_87).toString());}
if(_84<_85){_83=createTiddlyButton(_7c,"Next","Go to next page (Shortcut: Alt-'>')",_7e,"next");_83.setAttribute("page",(_84+1).toString());_83.setAttribute("accessKey",">");}}});abego.LimitedTextRenderer=function(){var _8a=40;var _8b=4;var _8c=function(_8d,_8e,_8f){var n=_8d.length;if(n==0){_8d.push({start:_8e,end:_8f});return;}
var i=0;for(;i<n;i++){var _92=_8d[i];if(_92.start<=_8f&&_8e<=_92.end){var r;var _94=i+1;for(;_94<n;_94++){r=_8d[_94];if(r.start>_8f||_8e>_92.end){break;}}
var _95=_8e;var _96=_8f;for(var j=i;j<_94;j++){r=_8d[j];_95=Math.min(_95,r.start);_96=Math.max(_96,r.end);}
_8d.splice(i,_94-i,{start:_95,end:_96});return;}
if(_92.start>_8f){break;}}
_8d.splice(i,0,{start:_8e,end:_8f});};var _98=function(_99){var _9a=0;for(var i=0;i<_99.length;i++){var _9c=_99[i];_9a+=_9c.end-_9c.start;}
return _9a;};var _9d=function(c){return(c>="a"&&c<="z")||(c>="A"&&c<="Z")||c=="_";};var _9f=function(s,_a1){if(!_9d(s[_a1])){return null;}
for(var i=_a1-1;i>=0&&_9d(s[i]);i--){}
var _a3=i+1;var n=s.length;for(i=_a1+1;i<n&&_9d(s[i]);i++){}
return{start:_a3,end:i};};var _a5=function(s,_a7,_a8){var _a9;if(_a8){_a9=_9f(s,_a7);}else{if(_a7<=0){return _a7;}
_a9=_9f(s,_a7-1);}
if(!_a9){return _a7;}
if(_a8){if(_a9.start>=_a7-_8b){return _a9.start;}
if(_a9.end<=_a7+_8b){return _a9.end;}}else{if(_a9.end<=_a7+_8b){return _a9.end;}
if(_a9.start>=_a7-_8b){return _a9.start;}}
return _a7;};var _aa=function(s,_ac){var _ad=[];if(_ac){var _ae=0;var n=s.length;var _b0=0;do{_ac.lastIndex=_ae;var _b1=_ac.exec(s);if(_b1){if(_ae<_b1.index){var t=s.substring(_ae,_b1.index);_ad.push({text:t});}
_ad.push({text:_b1[0],isMatch:true});_ae=_b1.index+_b1[0].length;}else{_ad.push({text:s.substr(_ae)});break;}}while(true);}else{_ad.push({text:s});}
return _ad;};var _b3=function(_b4){var _b5=0;for(var i=0;i<_b4.length;i++){if(_b4[i].isMatch){_b5++;}}
return _b5;};var _b7=function(s,_b9,_ba,_bb,_bc){var _bd=Math.max(Math.floor(_bc/(_bb+1)),_8a);var _be=Math.max(_bd-(_ba-_b9),0);var _bf=Math.min(Math.floor(_ba+_be/3),s.length);var _c0=Math.max(_bf-_bd,0);_c0=_a5(s,_c0,true);_bf=_a5(s,_bf,false);return{start:_c0,end:_bf};};var _c1=function(_c2,s,_c4){var _c5=[];var _c6=_b3(_c2);var pos=0;for(var i=0;i<_c2.length;i++){var t=_c2[i];var _ca=t.text;if(t.isMatch){var _cb=_b7(s,pos,pos+_ca.length,_c6,_c4);_8c(_c5,_cb.start,_cb.end);}
pos+=_ca.length;}
return _c5;};var _cc=function(s,_ce,_cf){var _d0=_cf-_98(_ce);while(_d0>0){if(_ce.length==0){_8c(_ce,0,_a5(s,_cf,false));return;}else{var _d1=_ce[0];var _d2;var _d3;if(_d1.start==0){_d2=_d1.end;if(_ce.length>1){_d3=_ce[1].start;}else{_8c(_ce,_d2,_a5(s,_d2+_d0,false));return;}}else{_d2=0;_d3=_d1.start;}
var _d4=Math.min(_d3,_d2+_d0);_8c(_ce,_d2,_d4);_d0-=(_d4-_d2);}}};var _d5=function(_d6,s,_d8,_d9,_da){if(_d9.length==0){return;}
var _db=function(_dc,s,_de,_df,_e0){var t;var _e2;var pos=0;var i=0;var _e5=0;for(;i<_de.length;i++){t=_de[i];_e2=t.text;if(_df<pos+_e2.length){_e5=_df-pos;break;}
pos+=_e2.length;}
var _e6=_e0-_df;for(;i<_de.length&&_e6>0;i++){t=_de[i];_e2=t.text.substr(_e5);_e5=0;if(_e2.length>_e6){_e2=_e2.substr(0,_e6);}
if(t.isMatch){createTiddlyElement(_dc,"span",null,"marked",_e2);}else{createTiddlyText(_dc,_e2);}
_e6-=_e2.length;}
if(_e0<s.length){abego.createEllipsis(_dc);}};if(_d9[0].start>0){abego.createEllipsis(_d6);}
var _e7=_da;for(var i=0;i<_d9.length&&_e7>0;i++){var _e9=_d9[i];var len=Math.min(_e9.end-_e9.start,_e7);_db(_d6,s,_d8,_e9.start,_e9.start+len);_e7-=len;}};this.render=function(_eb,s,_ed,_ee){if(s.length<_ed){_ed=s.length;}
var _ef=_aa(s,_ee);var _f0=_c1(_ef,s,_ed);_cc(s,_f0,_ed);_d5(_eb,s,_ef,_f0,_ed);};};(function(){function alertAndThrow(msg){alert(msg);throw msg;}
if(version.major<2||(version.major==2&&version.minor<1)){alertAndThrow("YourSearchPlugin requires TiddlyWiki 2.1 or newer.\n\nCheck the archive for YourSearch plugins\nsupporting older versions of TiddlyWiki.\n\nArchive: http://tiddlywiki.abego-software.de/archive");}
abego.YourSearch={};var _f2;var _f3;var _f4=function(_f5){_f2=_f5;};var _f6=function(){return _f2?_f2:[];};var _f7=function(){return _f2?_f2.length:0;};var _f8=4;var _f9=10;var _fa=2;var _fb=function(s,re){var m=s.match(re);return m?m.length:0;};var _ff=function(_100,_101){var _102=_101.getMarkRegExp();if(!_102){return 1;}
var _103=_100.title.match(_102);var _104=_103?_103.length:0;var _105=_fb(_100.getTags(),_102);var _106=_103?_103.join("").length:0;var _107=_100.title.length>0?_106/_100.title.length:0;var rank=_104*_f8+_105*_fa+_107*_f9+1;return rank;};var _109=function(_10a,_10b,_10c,_10d,_10e,_10f){_f3=null;var _110=_10a.reverseLookup("tags",_10f,false);try{var _111=[];if(config.options.chkSearchInTitle){_111.push("title");}
if(config.options.chkSearchInText){_111.push("text");}
if(config.options.chkSearchInTags){_111.push("tags");}
_f3=new abego.TiddlerQuery(_10b,_10c,_10d,_111,config.options.chkSearchExtendedFields);}
catch(e){return[];}
var _112=_f3.filter(_110);var _113=abego.YourSearch.getRankFunction();for(var i=0;i<_112.length;i++){var _115=_112[i];var rank=_113(_115,_f3);_115.searchRank=rank;}
if(!_10e){_10e="title";}
var _117=function(a,b){var _11a=a.searchRank-b.searchRank;if(_11a==0){if(a[_10e]==b[_10e]){return(0);}else{return(a[_10e]<b[_10e])?-1:+1;}}else{return(_11a>0)?-1:+1;}};_112.sort(_117);return _112;};var _11b=80;var _11c=50;var _11d=250;var _11e=50;var _11f=25;var _120=10;var _121="yourSearchResult";var _122="yourSearchResultItems";var _123;var _124;var _125;var _126;var _127;var _128=function(){if(version.extensions.YourSearchPlugin.styleSheetInited){return;}
version.extensions.YourSearchPlugin.styleSheetInited=true;setStylesheet(store.getTiddlerText("YourSearchStyleSheet"),"yourSearch");};var _129=function(){return _124!=null&&_124.parentNode==document.body;};var _12a=function(){if(_129()){document.body.removeChild(_124);}};var _12b=function(e){_12a();var _12d=this.getAttribute("tiddlyLink");if(_12d){var _12e=this.getAttribute("withHilite");var _12f=highlightHack;if(_12e&&_12e=="true"&&_f3){highlightHack=_f3.getMarkRegExp();}
story.displayTiddler(this,_12d);highlightHack=_12f;}
return(false);};var _130=function(){if(!_125){return;}
var root=_125;var _132=findPosX(root);var _133=findPosY(root);var _134=root.offsetHeight;var _135=_132;var _136=_133+_134;var _137=findWindowWidth();if(_137<_124.offsetWidth){_124.style.width=(_137-100)+"px";_137=findWindowWidth();}
var _138=_124.offsetWidth;if(_135+_138>_137){_135=_137-_138-30;}
if(_135<0){_135=0;}
_124.style.left=_135+"px";_124.style.top=_136+"px";_124.style.display="block";};var _139=function(){if(_124){window.scrollTo(0,ensureVisible(_124));}
if(_125){window.scrollTo(0,ensureVisible(_125));}};var _13a=function(){_130();_139();};var _13b;var _13c;var _13d=new abego.PageWiseRenderer();var _13e=function(_13f){this.itemHtml=store.getTiddlerText("YourSearchItemTemplate");if(!this.itemHtml){alertAndThrow("YourSearchItemTemplate not found");}
this.place=document.getElementById(_122);if(!this.place){this.place=createTiddlyElement(_13f,"div",_122);}};merge(_13e.prototype,{render:function(_140,_141,_142,_143){_13b=_143;_13c=_141;var item=createTiddlyElement(this.place,"div",null,"yourSearchItem");item.innerHTML=this.itemHtml;applyHtmlMacros(item,null);refreshElements(item,null);},endRendering:function(_145){_13c=null;}});var _146=function(){if(!_124||!_125){return;}
var html=store.getTiddlerText("YourSearchResultTemplate");if(!html){html="<b>Tiddler YourSearchResultTemplate not found</b>";}
_124.innerHTML=html;applyHtmlMacros(_124,null);refreshElements(_124,null);var _148=new _13e(_124);_13d.renderPage(_148);_13a();};_13d.getItemsPerPage=function(){var n=(config.options.chkPreviewText)?abego.toInt(config.options.txtItemsPerPageWithPreview,_120):abego.toInt(config.options.txtItemsPerPage,_11f);return(n>0)?n:1;};_13d.onPageChanged=function(){_146();};var _14a=function(){if(_125==null||!config.options.chkUseYourSearch){return;}
if((_125.value==_123)&&_123&&!_129()){if(_124&&(_124.parentNode!=document.body)){document.body.appendChild(_124);_13a();}else{abego.YourSearch.onShowResult(true);}}};var _14b=function(){_12a();_124=null;_123=null;};var _14c=function(self,e){while(e!=null){if(self==e){return true;}
e=e.parentNode;}
return false;};var _14f=function(e){if(e.target==_125){return;}
if(e.target==_126){return;}
if(_124&&_14c(_124,e.target)){return;}
_12a();};var _151=function(e){if(e.keyCode==27){_12a();}};addEvent(document,"click",_14f);addEvent(document,"keyup",_151);var _153=function(text,_155,_156){_123=text;_f4(_109(store,text,_155,_156,"title","excludeSearch"));abego.YourSearch.onShowResult();};var _157=function(_158,_159,_15a,_15b,_15c,_15d){_128();_123="";var _15e=null;var _15f=function(txt){if(config.options.chkUseYourSearch){_153(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}else{story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}
_123=txt.value;};var _161=function(e){_15f(_125);return false;};var _163=function(e){if(!e){var e=window.event;}
_125=this;switch(e.keyCode){case 13:if(e.ctrlKey&&_127&&_129()){_127.onclick.apply(_127,[e]);}else{_15f(this);}
break;case 27:if(_129()){_12a();}else{this.value="";clearMessage();}
break;}
if(String.fromCharCode(e.keyCode)==this.accessKey||e.altKey){_14a();}
if(this.value.length<3&&_15e){clearTimeout(_15e);}
if(this.value.length>2){if(this.value!=_123){if(!config.options.chkUseYourSearch||config.options.chkSearchAsYouType){if(_15e){clearTimeout(_15e);}
var txt=this;_15e=setTimeout(function(){_15f(txt);},500);}}else{if(_15e){clearTimeout(_15e);}}}
if(this.value.length==0){_12a();}};var _166=function(e){this.select();clearMessage();_14a();};var args=_15c.parseParams("list",null,true);var _169=getFlag(args,"buttonAtRight");var _16a=getParam(args,"sizeTextbox",this.sizeTextbox);var btn;if(!_169){btn=createTiddlyButton(_158,this.label,this.prompt,_161);}
var txt=createTiddlyElement(_158,"input",null,null,null);if(_15a[0]){txt.value=_15a[0];}
txt.onkeyup=_163;txt.onfocus=_166;txt.setAttribute("size",_16a);txt.setAttribute("accessKey",this.accessKey);txt.setAttribute("autocomplete","off");if(config.browser.isSafari){txt.setAttribute("type","search");txt.setAttribute("results","5");}else{txt.setAttribute("type","text");}
if(_169){btn=createTiddlyButton(_158,this.label,this.prompt,_161);}
_125=txt;_126=btn;};var _16d=function(){_12a();var _16e=_f6();var n=_16e.length;if(n){var _170=[];for(var i=0;i<n;i++){_170.push(_16e[i].title);}
story.displayTiddlers(null,_170);}};var _172=function(_173,_174,_175,_176){invokeMacro(_173,"option",_174,_175,_176);var elem=_173.lastChild;var _178=elem.onclick;elem.onclick=function(e){var _17a=_178.apply(this,arguments);_146();return _17a;};return elem;};var _17b=function(s){var _17d=["''","{{{","}}}","//","<<<","/***","***/"];var _17e="";for(var i=0;i<_17d.length;i++){if(i!=0){_17e+="|";}
_17e+="("+_17d[i].escapeRegExp()+")";}
return s.replace(new RegExp(_17e,"mg"),"").trim();};var _180=function(){var i=_13b;return(i>=0&&i<=9)?(i<9?(i+1):0):-1;};var _182=new abego.LimitedTextRenderer();var _183=function(_184,s,_186){_182.render(_184,s,_186,_f3.getMarkRegExp());};var _187=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_188,_189,_18a,_18b,_18c,tags,_18e){_187.apply(this,arguments);_14b();};var _18f=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_190){_18f.apply(this,arguments);_14b();};config.macros.yourSearch={label:"yourSearch",prompt:"Gives access to the current/last YourSearch result",handler:function(_191,_192,_193,_194,_195,_196){if(_193.length==0){return;}
var name=_193[0];var func=config.macros.yourSearch.funcs[name];if(func){func(_191,_192,_193,_194,_195,_196);}},tests:{"true":function(){return true;},"false":function(){return false;},"found":function(){return _f7()>0;},"previewText":function(){return config.options.chkPreviewText;}},funcs:{itemRange:function(_199){if(_f7()){var _19a=_13d.getLastIndexOnPage();var s="%0 - %1".format([_13d.getFirstIndexOnPage()+1,_19a+1]);createTiddlyText(_199,s);}},count:function(_19c){createTiddlyText(_19c,_f7().toString());},query:function(_19d){if(_f3){createTiddlyText(_19d,_f3.toString());}},version:function(_19e){var t="YourSearch %0.%1.%2".format([version.extensions.YourSearchPlugin.major,version.extensions.YourSearchPlugin.minor,version.extensions.YourSearchPlugin.revision]);var e=createTiddlyElement(_19e,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#YourSearchPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_1a1){var e=createTiddlyElement(_1a1,"a");e.setAttribute("href","http://www.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">&copy; 2005-2008 <b><font color=\"red\">abego</font></b> Software<font>";},newTiddlerButton:function(_1a3){if(_f3){var r=abego.parseNewTiddlerCommandLine(_f3.getQueryText());var btn=config.macros.newTiddler.createNewTiddlerButton(_1a3,r.title,r.params,"new tiddler","Create a new tiddler based on search text. (Shortcut: Ctrl-Enter; Separators: '.', '#')",null,"text");var _1a6=btn.onclick;btn.onclick=function(){_12a();_1a6.apply(this,arguments);};_127=btn;}},linkButton:function(_1a7,_1a8,_1a9,_1aa,_1ab,_1ac){if(_1a9<2){return;}
var _1ad=_1a9[1];var text=_1a9<3?_1ad:_1a9[2];var _1af=_1a9<4?text:_1a9[3];var _1b0=_1a9<5?null:_1a9[4];var btn=createTiddlyButton(_1a7,text,_1af,_12b,null,null,_1b0);btn.setAttribute("tiddlyLink",_1ad);},closeButton:function(_1b2,_1b3,_1b4,_1b5,_1b6,_1b7){var _1b8=createTiddlyButton(_1b2,"close","Close the Search Results (Shortcut: ESC)",_12a);},openAllButton:function(_1b9,_1ba,_1bb,_1bc,_1bd,_1be){var n=_f7();if(n==0){return;}
var _1c0=n==1?"open tiddler":"open all %0 tiddlers".format([n]);var _1c1=createTiddlyButton(_1b9,_1c0,"Open all found tiddlers (Shortcut: Alt-O)",_16d);_1c1.setAttribute("accessKey","O");},naviBar:function(_1c2,_1c3,_1c4,_1c5,_1c6,_1c7){_13d.addPageNavigation(_1c2);},"if":function(_1c8,_1c9,_1ca,_1cb,_1cc,_1cd){if(_1ca.length<2){return;}
var _1ce=_1ca[1];var _1cf=(_1ce=="not");if(_1cf){if(_1ca.length<3){return;}
_1ce=_1ca[2];}
var test=config.macros.yourSearch.tests[_1ce];var _1d1=false;try{if(test){_1d1=test(_1c8,_1c9,_1ca,_1cb,_1cc,_1cd)!=_1cf;}else{_1d1=(!eval(_1ce))==_1cf;}}
catch(ex){}
if(!_1d1){_1c8.style.display="none";}},chkPreviewText:function(_1d2,_1d3,_1d4,_1d5,_1d6,_1d7){var _1d8=_1d4.slice(1).join(" ");var elem=_172(_1d2,"chkPreviewText",_1d5,_1d7);elem.setAttribute("accessKey","P");elem.title="Show text preview of found tiddlers (Shortcut: Alt-P)";return elem;}}};config.macros.foundTiddler={label:"foundTiddler",prompt:"Provides information on the tiddler currently processed on the YourSearch result page",handler:function(_1da,_1db,_1dc,_1dd,_1de,_1df){var name=_1dc[0];var func=config.macros.foundTiddler.funcs[name];if(func){func(_1da,_1db,_1dc,_1dd,_1de,_1df);}},funcs:{title:function(_1e2,_1e3,_1e4,_1e5,_1e6,_1e7){if(!_13c){return;}
var _1e8=_180();var _1e9=_1e8>=0?"Open tiddler (Shortcut: Alt-%0)".format([_1e8.toString()]):"Open tiddler";var btn=createTiddlyButton(_1e2,null,_1e9,_12b,null);btn.setAttribute("tiddlyLink",_13c.title);btn.setAttribute("withHilite","true");_183(btn,_13c.title,_11b);if(_1e8>=0){btn.setAttribute("accessKey",_1e8.toString());}},tags:function(_1eb,_1ec,_1ed,_1ee,_1ef,_1f0){if(!_13c){return;}
_183(_1eb,_13c.getTags(),_11c);},text:function(_1f1,_1f2,_1f3,_1f4,_1f5,_1f6){if(!_13c){return;}
_183(_1f1,_17b(_13c.text),_11d);},field:function(_1f7,_1f8,_1f9,_1fa,_1fb,_1fc){if(!_13c){return;}
var name=_1f9[1];var len=_1f9.length>2?abego.toInt(_1f9[2],_11e):_11e;var v=store.getValue(_13c,name);if(v){_183(_1f7,_17b(v),len);}},number:function(_200,_201,_202,_203,_204,_205){var _206=_180();if(_206>=0){var text="%0)".format([_206.toString()]);createTiddlyElement(_200,"span",null,"shortcutNumber",text);}}}};var opts={chkUseYourSearch:true,chkPreviewText:true,chkSearchAsYouType:true,chkSearchInTitle:true,chkSearchInText:true,chkSearchInTags:true,chkSearchExtendedFields:true,txtItemsPerPage:_11f,txtItemsPerPageWithPreview:_120};for(var n in opts){if(config.options[n]==undefined){config.options[n]=opts[n];}}
config.shadowTiddlers.AdvancedOptions+="\n<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]]) ([[help|YourSearch Help]])// ";config.shadowTiddlers["YourSearch Help"]="!Field Search\nWith the Field Search you can restrict your search to certain fields of a tiddler, e.g"+" only search the tags or only the titles. The general form is //fieldname//'':''//textToSearch// (e."+"g. {{{title:intro}}}). In addition one-character shortcuts are also supported for the standard field"+"s {{{title}}}, {{{text}}} and {{{tags}}}:\n|!What you want|!What you type|!Example|\n|Search ''titles "+"only''|start word with ''!''|{{{!jonny}}} (shortcut for {{{title:jonny}}})|\n|Search ''contents/text "+"only''|start word with ''%''|{{{%football}}} (shortcut for {{{text:football}}})|\n|Search ''tags only"+"''|start word with ''#''|{{{#Plugin}}} (shortcut for {{{tags:Plugin}}})|\n\nUsing this feature you may"+" also search the extended fields (\"Metadata\") introduced with TiddlyWiki 2.1, e.g. use {{{priority:1"+"}}} to find all tiddlers with the priority field set to \"1\".\n\nYou may search a word in more than one"+" field. E.g. {{{!#Plugin}}} (or {{{title:tags:Plugin}}} in the \"long form\") finds tiddlers containin"+"g \"Plugin\" either in the title or in the tags (but does not look for \"Plugin\" in the text). \n\n!Boole"+"an Search\nThe Boolean Search is useful when searching for multiple words.\n|!What you want|!What you "+"type|!Example|\n|''All words'' must exist|List of words|{{{jonny jeremy}}} (or {{{jonny and jeremy}}}"+")|\n|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\n|A word ''must "+"not exist''|Start word with ''-''|{{{-jonny}}} (or {{{not jonny}}})|\n\n''Note:'' When you specify two"+" words, separated with a space, YourSearch finds all tiddlers that contain both words, but not neces"+"sarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need"+" to put the words into quotes. I.e. you type: {{{\"john brown\"}}}.\n\nUsing parenthesis you may change "+"the default \"left to right\" evaluation of the boolean search. E.g. {{{not (jonny or jeremy)}}} finds"+" all tiddlers that contain neither \"jonny\" nor \"jeremy. In contrast to this {{{not jonny or jeremy}}"+"} (i.e. without parenthesis) finds all tiddlers that either don't contain \"jonny\" or that contain \"j"+"eremy\".\n\n!'Exact Word' Search\nBy default a search result all matches that 'contain' the searched tex"+"t. E.g. if you search for {{{Task}}} you will get all tiddlers containing 'Task', but also '~Complet"+"edTask', '~TaskForce' etc.\n\nIf you only want to get the tiddlers that contain 'exactly the word' you"+" need to prefix it with a '='. E.g. typing '=Task' will find the tiddlers that contain the word 'Tas"+"k', ignoring words that just contain 'Task' as a substring.\n\n!~CaseSensitiveSearch and ~RegExpSearch"+"\nThe standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearc"+"h. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\n\nIn addition you m"+"ay do a \"regular expression\" search even with the ''~RegExpSearch'' set to false by directly enterin"+"g the regular expression into the search field, framed with {{{/.../}}}. \n\nExample: {{{/m[ae][iy]er/"+"}}} will find all tiddlers that contain either \"maier\", \"mayer\", \"meier\" or \"meyer\".\n\n!~JavaScript E"+"xpression Filtering\nIf you are familiar with JavaScript programming and know some TiddlyWiki interna"+"ls you may also use JavaScript expression for the search. Just enter a JavaScript boolean expression"+" into the search field, framed with {{{ { ... } }}}. In the code refer to the variable tiddler and e"+"valuate to {{{true}}} when the given tiddler should be included in the result. \n\nExample: {{{ { tidd"+"ler.modified > new Date(\"Jul 4, 2005\")} }}} returns all tiddler modified after July 4th, 2005.\n\n!Com"+"bined Search\nYou are free to combine the various search options. \n\n''Examples''\n|!What you type|!Res"+"ult|\n|{{{!jonny !jeremy -%football}}}|all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its tit"+"les, but no {{{football}}} in content.|\n|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact wor"+"d). Tags named '~CompletedTask', '~TaskForce' etc. are not considered.|\n\n!Access Keys\nYou are encour"+"aged to use the access keys (also called \"shortcut\" keys) for the most frequently used operations. F"+"or quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\n\n|"+"!Key|!Operation|\n|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search in"+"put field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the pr"+"evious search result. This way you can quickly display multiple tiddlers using \"Press {{{Alt-F}}}. S"+"elect tiddler.\" sequences.|\n|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Resul"+"t]] is already closed and the cursor is in the search input field the field's content is cleared so "+"you start a new query.|\n|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second e"+"tc. tiddler from the result list.|\n|{{{Alt-O}}}|Opens all found tiddlers.|\n|{{{Alt-P}}}|Toggles the "+"'Preview Text' mode.|\n|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[Your"+"Search Result]].|\n|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the "+"{{{Return}}} key actually starts the search (as does pressing the 'search' button).|\n\n//If some of t"+"hese shortcuts don't work for you check your browser if you have other extensions installed that alr"+"eady \"use\" these shortcuts.//";config.shadowTiddlers["YourSearch Options"]="|>|!YourSearch Options|\n|>|<<option chkUseYourSearch>> Use 'Your Search'|\n|!|<<option chkPreviewText"+">> Show Text Preview|\n|!|<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required"+" to start search)|\n|!|Default Search Filter:<<option chkSearchInTitle>>Title ('!')     <<option chk"+"SearchInText>>Text ('%')     <<option chkSearchInTags>>Tags ('#')    <<option chkSearchExtendedFiel"+"ds>>Extended Fields<html><br><font size=\"-2\">The fields of a tiddlers that are searched when you don"+"'t explicitly specify a filter in the search text <br>(Explictly specify fields using one or more '!"+"', '%', '#' or 'fieldname:' prefix before the word/text to find).</font></html>|\n|!|Number of items "+"on search result page: <<option txtItemsPerPage>>|\n|!|Number of items on search result page with pre"+"view text: <<option txtItemsPerPageWithPreview>>|\n";config.shadowTiddlers["YourSearchStyleSheet"]="/***\n!~YourSearchResult Stylesheet\n***/\n/*{{{*/\n.yourSearchResult {\n\tposition: absolute;\n\twidth: 800"+"px;\n\n\tpadding: 0.2em;\n\tlist-style: none;\n\tmargin: 0;\n\n\tbackground: #ffd;\n\tborder: 1px solid DarkGra"+"y;\n}\n\n/*}}}*/\n/***\n!!Summary Section\n***/\n/*{{{*/\n.yourSearchResult .summary {\n\tborder-bottom-width:"+" thin;\n\tborder-bottom-style: solid;\n\tborder-bottom-color: #999999;\n\tpadding-bottom: 4px;\n}\n\n.yourSea"+"rchRange, .yourSearchCount, .yourSearchQuery   {\n\tfont-weight: bold;\n}\n\n.yourSearchResult .summary ."+"button {\n\tfont-size: 10px;\n\n\tpadding-left: 0.3em;\n\tpadding-right: 0.3em;\n}\n\n.yourSearchResult .summa"+"ry .chkBoxLabel {\n\tfont-size: 10px;\n\n\tpadding-right: 0.3em;\n}\n\n/*}}}*/\n/***\n!!Items Area\n***/\n/*{{{*"+"/\n.yourSearchResult .marked {\n\tbackground: none;\n\tfont-weight: bold;\n}\n\n.yourSearchItem {\n\tmargin-to"+"p: 2px;\n}\n\n.yourSearchNumber {\n\tcolor: #808080;\n}\n\n\n.yourSearchTags {\n\tcolor: #008000;\n}\n\n.yourSearc"+"hText {\n\tcolor: #808080;\n\tmargin-bottom: 6px;\n}\n\n/*}}}*/\n/***\n!!Footer\n***/\n/*{{{*/\n.yourSearchFoote"+"r {\n\tmargin-top: 8px;\n\tborder-top-width: thin;\n\tborder-top-style: solid;\n\tborder-top-color: #999999;"+"\n}\n\n.yourSearchFooter a:hover{\n\tbackground: none;\n\tcolor: none;\n}\n/*}}}*/\n/***\n!!Navigation Bar\n***/"+"\n/*{{{*/\n.yourSearchNaviBar a {\n\tfont-size: 16px;\n\tmargin-left: 4px;\n\tmargin-right: 4px;\n\tcolor: bla"+"ck;\n\ttext-decoration: underline;\n}\n\n.yourSearchNaviBar a:hover {\n\tbackground-color: none;\n}\n\n.yourSe"+"archNaviBar .prev {\n\tfont-weight: bold;\n\tcolor: blue;\n}\n\n.yourSearchNaviBar .currentPage {\n\tcolor: #"+"FF0000;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\n.yourSearchNaviBar .next {\n\tfont-weight: bold"+";\n\tcolor: blue;\n}\n/*}}}*/\n";config.shadowTiddlers["YourSearchResultTemplate"]="<!--\n{{{\n-->\n<span macro=\"yourSearch if found\">\n<!-- The Summary Header ============================"+"================ -->\n<table class=\"summary\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">"+"<tbody>\n  <tr>\n\t<td align=\"left\">\n\t\tYourSearch Result <span class=\"yourSearchRange\" macro=\"yourSearc"+"h itemRange\"></span>\n\t\t&nbsp;of&nbsp;<span class=\"yourSearchCount\" macro=\"yourSearch count\"></span>\n"+"\t\tfor&nbsp;<span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>\n\t</td>\n\t<td class=\"yourSea"+"rchButtons\" align=\"right\">\n\t\t<span macro=\"yourSearch chkPreviewText\"></span><span class=\"chkBoxLabel"+"\">preview text</span>\n\t\t<span macro=\"yourSearch newTiddlerButton\"></span>\n\t\t<span macro=\"yourSearch openAllButton\"></span>\n\t\t<span macro=\"yourSearch lin"+"kButton 'YourSearch Options' options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkB"+"utton 'YourSearch Help' help 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch clo"+"seButton\"></span>\n\t</td>\n  </tr>\n</tbody></table>\n\n<!-- The List of Found Tiddlers ================="+"=========================== -->\n<div id=\"yourSearchResultItems\" itemsPerPage=\"25\" itemsPerPageWithPr"+"eview=\"10\"></div>\n\n<!-- The Footer (with the Navigation) ==========================================="+"= -->\n<table class=\"yourSearchFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody"+">\n  <tr>\n\t<td align=\"left\">\n\t\tResult page: <span class=\"yourSearchNaviBar\" macro=\"yourSearch naviBar"+"\"></span>\n\t</td>\n\t<td align=\"right\"><span macro=\"yourSearch version\"></span>, <span macro=\"yourSearc"+"h copyright\"></span>\n\t</td>\n  </tr>\n</tbody></table>\n<!-- end of the 'tiddlers found' case ========="+"================================== -->\n</span>\n\n\n<!-- The \"No tiddlers found\" case ================="+"========================== -->\n<span macro=\"yourSearch if not found\">\n<table class=\"summary\" border="+"\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n  <tr>\n\t<td align=\"left\">\n\t\tYourSearch Resu"+"lt: No tiddlers found for <span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>.\n\t</td>\n\t<t"+"d class=\"yourSearchButtons\" align=\"right\">\n\t\t<span macro=\"yourSearch newTiddlerButton\"></span>\n\t\t<span macro=\"yourSearch linkButton 'YourSearch Options'"+" options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkButton 'YourSearch Help' help"+" 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch closeButton\"></span>\n\t</td>\n  <"+"/tr>\n</tbody></table>\n</span>\n\n\n<!--\n}}}\n-->\n";config.shadowTiddlers["YourSearchItemTemplate"]="<!--\n{{{\n-->\n<span class='yourSearchNumber' macro='foundTiddler number'></span>\n<span class='yourSea"+"rchTitle' macro='foundTiddler title'/></span>&nbsp;-&nbsp;\n<span class='yourSearchTags' macro='found"+"Tiddler field tags 50'/></span>\n<span macro=\"yourSearch if previewText\"><div class='yourSearchText' macro='fo"+"undTiddler field text 250'/></div></span>\n<!--\n}}}\n-->";config.shadowTiddlers["YourSearch"]="<<tiddler [[YourSearch Help]]>>";config.shadowTiddlers["YourSearch Result"]="The popup-like window displaying the result of a YourSearch query.";config.macros.search.handler=_157;var _20a=function(){if(config.macros.search.handler!=_157){alert("Message from YourSearchPlugin:\n\n\nAnother plugin has disabled the 'Your Search' features.\n\n\nYou may "+"disable the other plugin or change the load order of \nthe plugins (by changing the names of the tidd"+"lers)\nto enable the 'Your Search' features.");}};setTimeout(_20a,5000);abego.YourSearch.getStandardRankFunction=function(){return _ff;};abego.YourSearch.getRankFunction=function(){return abego.YourSearch.getStandardRankFunction();};abego.YourSearch.getCurrentTiddler=function(){return _13c;};abego.YourSearch.closeResult=function(){_12a();};abego.YourSearch.getFoundTiddlers=function(){return _f2;};abego.YourSearch.getQuery=function(){return _f3;};abego.YourSearch.onShowResult=function(_20b){highlightHack=_f3?_f3.getMarkRegExp():null;if(!_20b){_13d.setItems(_f6());}
if(!_124){_124=createTiddlyElement(document.body,"div",_121,"yourSearchResult");}else{if(_124.parentNode!=document.body){document.body.appendChild(_124);}}
_146();highlightHack=null;};})();}
//%/
<<formTiddler NewBibEntryTemplate>><data>{"author":"authors","booktitle":"booktitle","bibdata":"(Place: publisher, year)","primtopic":"Any old topic - miscellaneous","mine":true,"wherekept":"Top shelf"}</data>
*Read all of this book
*Took notes on pp. 1-44, 103-107
{{{<html><div align="center"><iframe src="ADRESSE ICI"0" frameborder="0" width="100%" height="600"></iframe></div></html>}}}

Exemple avec +++[Google]


<html><div align="center"><iframe src="http://www.google.com"0" frameborder="0" width="100%" height="600"></iframe></div></html>
===
<<tiddler Théories>>
<<newSavedTiddler>>



<script>
   if (!window.story) window.story=window;
   var titre=story.findContainingTiddler(place).id.substr(7);
   var nom=DataTiddler.getData(titre,"nom")
   var prénom=DataTiddler.getData(titre,"prénom")
   var initiales=DataTiddler.getData(titre,"initiales")
   var titrelivre=DataTiddler.getData(titre,"titrelivre")
   var datepublication=DataTiddler.getData(titre,"datepublication")
   var villeédition=DataTiddler.getData(titre,"villeédition","")
   var noméditeur=DataTiddler.getData(titre,"noméditeur","")
   var dateédition=DataTiddler.getData(titre,"dateédition","")
   return '<<navigation "" "" "'+nom+', '+prénom+'" test test>>';
</script>
/***
|Description:|A place to put your config tweaks so they aren't overwritten when you upgrade MPTW|
See http://www.tiddlywiki.org/wiki/Configuration_Options for other options you can set. In some cases where there are clashes with other plugins it might help to rename this to zzMptwUserConfigPlugin so it gets executed last.
***/
//{{{

// example: set your preferred date format
//config.mptwDateFormat = 'MM/0DD/YY';
//config.mptwJournalFormat = 'Journal MM/0DD/YY';

// example: set the theme you want to start with
config.options.txtTheme = 'AlbertoRoundTheme';

// example: switch off autosave, switch on backups and set a backup folder
//config.options.chkSaveBackups = true;
config.options.chkAutoSave = false;
//config.options.txtBackupFolder = 'backups';

//}}}