<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.bht.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiAdmin</id>
	<title>Wikip - Contributions de l’utilisateur [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bht.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiAdmin"/>
	<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php/Sp%C3%A9cial:Contributions/WikiAdmin"/>
	<updated>2026-05-15T14:42:35Z</updated>
	<subtitle>Contributions de l’utilisateur</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4931</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4931"/>
		<updated>2025-10-08T11:54:30Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;** randompage-url|randompage &lt;br /&gt;
*Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω { } [] ⟨⟩ Æ ∃ ∀ ⊤ ⊥ ¬ ∧ ∨ ⇔ ⇐ ⇒ ≤ ≠ ≥ ∈ ∋ ∉ ⊂ ⊃ ⊄ ⊆ ∪ ∩ ≡ ≝ ≜ 。◊ ∵ ∴ ∞ ℵ ∅∂ ∫ ≈ Δ δ ∇ ± × ÷ ⊗ ⊖ ★ ↦ ⟼ → ⟶ &lt;br /&gt;
** Symboles mathématiques|Symb. math.&lt;br /&gt;
* ⊕ ⊖ ★ ␣ … «…»  «» ‘…’ ‘’ “…” “” '…' '' &amp;quot;…&amp;quot; &amp;quot;&amp;quot; „“ ☚ ☛ ☜ ☞ ☟ ☠ ☡ ☢ ← ↑ → ↓ ↔ ↕ ⇄ ⇅ ↲ ↰ ↳ ↱ ◊ ↪ ↩ ⤻ ⤺ ⤹ ⤸ ⤿ ⤾ ⤴ ⤵ ⤷ ⤶ ⮍ ⮏ ⮎ ⮌ ↬, ↫&lt;br /&gt;
** Symboles|Symboles &lt;br /&gt;
* Boutiques&lt;br /&gt;
** https://www.bht-diffusion.com|BHT Diffusion Broderie&lt;br /&gt;
** https://www.electra-bike.fr/index.php|BHT Bike&lt;br /&gt;
* Mes wiki&lt;br /&gt;
** https://at.bht.fr| Racine&lt;br /&gt;
** https://at.bht.fr/paintWiki| Peinture&lt;br /&gt;
** https://at.bht.fr/musicWiki| Musique&lt;br /&gt;
** https://at.bht.fr/astroWiki| Astres&lt;br /&gt;
** https://wiki.bht.fr| Wiki&lt;br /&gt;
** http://at.bht.fr|Racine&lt;br /&gt;
* Admin&lt;br /&gt;
** Special:Allpages| Liste des pages&lt;br /&gt;
** Spécial:Importer| Importer&lt;br /&gt;
** Special:Recentchanges|Mod. réc.&lt;br /&gt;
** MediaWiki:Sidebar| MediaWiki:Sidebar&lt;br /&gt;
** MediaWiki:Common.css | css&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=MediaWiki:Timeless.css&amp;diff=4930</id>
		<title>MediaWiki:Timeless.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=MediaWiki:Timeless.css&amp;diff=4930"/>
		<updated>2025-10-08T11:48:45Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Tout CSS placé ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Timeless */&lt;br /&gt;
/* CSS placed here will affect users of the Timeless skin */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@import url(https://tools-static.wmflabs.org/fontcdn/css?family=Merriweather);&lt;br /&gt;
html {&lt;br /&gt;
    background: rgb(0,0,0) !important;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    filter: brightness(100%) contrast(100%) grayscale(0%) !important;&lt;br /&gt;
    -webkit-filter: brightness(100%) contrast(100%) grayscale(0%) !important;&lt;br /&gt;
    overflow-x: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body, .wikitable {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    color: #ccccff;&lt;br /&gt;
    font-family: 'Merriweather', serif;&lt;br /&gt;
}&lt;br /&gt;
.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
    background-color:#888;&lt;br /&gt;
    color: #ccccff;&lt;br /&gt;
    text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
h1 {&lt;br /&gt;
    color: white;&lt;br /&gt;
    text-shadow: 1px 1px 1px #000;&lt;br /&gt;
    font-size: 40px !important;&lt;br /&gt;
}&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
    color: #6699ff;&lt;br /&gt;
    font-family: 'Merriweather', serif;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
#personal .dropdown b {&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
b, strong {&lt;br /&gt;
    text-shadow: 1px 1px 1px #000;&lt;br /&gt;
}&lt;br /&gt;
#f-list {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
div.editOptions {&lt;br /&gt;
    border: #222;&lt;br /&gt;
    background: #111;&lt;br /&gt;
}&lt;br /&gt;
#mw-header-nav-hack {&lt;br /&gt;
    border-top: solid 2px #333;&lt;br /&gt;
    background: #111;&lt;br /&gt;
}&lt;br /&gt;
#mw-site-navigation .sidebar-inner {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    padding : 0;  /* ATMODIF */&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width: 851px) {&lt;br /&gt;
#p-logo-text a {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    right: 75vw;&lt;br /&gt;
    color: #aaaadd; /* ATMODIF */&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1099px) and (min-width: 851px) {&lt;br /&gt;
#p-logo-text a.long {&lt;br /&gt;
    padding-left: 7px;&lt;br /&gt;
    float: left;&lt;br /&gt;
    font-size: 23px !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1099px) and (min-width: 851px) {&lt;br /&gt;
#mw-related-navigation .sidebar-inner {&lt;br /&gt;
    background: #111 !important;&lt;br /&gt;
    border: solid #222;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1099px) and (min-width: 851px) {&lt;br /&gt;
#mw-site-navigation .sidebar-inner {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: solid #222;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
#mw-site-navigation .sidebar-chunk {&lt;br /&gt;
    border: outset #222;&lt;br /&gt;
    background: #111;&lt;br /&gt;
    /* box-shadow: 2px 2px 1px rgba(0,0,0,0.5); */&lt;br /&gt;
    box-shadow: none ;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 851px) {&lt;br /&gt;
#mw-site-navigation .sidebar-chunk {&lt;br /&gt;
    /* padding: 0 15px 5px 20px; */&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1099px) and (min-width: 851px) {&lt;br /&gt;
#mw-site-navigation .sidebar-inner {&lt;br /&gt;
    background: #111 !important;&lt;br /&gt;
    border: solid #222 !important;&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output  {&lt;br /&gt;
    color: #C4C0C8 ; /* org : #ff9900; text default color AT TODO */&lt;br /&gt;
}&lt;br /&gt;
#searchInput {&lt;br /&gt;
    padding: 0.2em 4.5em 0.2em 2em !important;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
}&lt;br /&gt;
#searchInput-container {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    /* height: 35px;  ATMODIF */&lt;br /&gt;
}&lt;br /&gt;
#simpleSearch {&lt;br /&gt;
    border: inset 1px #000;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    background: #111;&lt;br /&gt;
    /* height: 35px;  ATMODIF */&lt;br /&gt;
    /* width: 48vw;  ATMODIF */&lt;br /&gt;
    width: 210mm; /* ATMODIF */&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
    top: 7px;&lt;br /&gt;
}&lt;br /&gt;
#user-tools {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    right: 86px;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width: 851px) {&lt;br /&gt;
#user-tools {&lt;br /&gt;
    left: 74vw;&lt;br /&gt;
    top: 5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-notification {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: #222;&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border-radius: 5px;&lt;br /&gt;
    color: #999;&lt;br /&gt;
    width: 200px;&lt;br /&gt;
}&lt;br /&gt;
.postedit-container {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    padding: 15px 0 15px 15px;&lt;br /&gt;
    text-align: right;&lt;br /&gt;
}&lt;br /&gt;
.postedit-icon {&lt;br /&gt;
    margin: auto;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-wiki-logo {&lt;br /&gt;
    background-size: contain;&lt;br /&gt;
}&lt;br /&gt;
#mw-header-container {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    padding : 0em; /* ATMODIF */&lt;br /&gt;
    color: #ccccff; /* ATMODIF */&lt;br /&gt;
}&lt;br /&gt;
#mw-header {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    position: static;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#menus-cover {&lt;br /&gt;
    background: #000;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#personal h2 {&lt;br /&gt;
    display: none;searchInput-container&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
#mw-content-container {&lt;br /&gt;
    background: #000;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#mw-content-block {&lt;br /&gt;
    background: #000;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#site-tools h2 {&lt;br /&gt;
    right: 3em;&lt;br /&gt;
    top: 0.9em;&lt;br /&gt;
    padding-bottom: 5px;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#p-logo-text a.long {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    top: 7px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 40px !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width: 851px) {&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    width: 29em;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width: 851px) {&lt;br /&gt;
#personal h2:after {&lt;br /&gt;
    width: 1px;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    position: static;&lt;br /&gt;
    left: 0 !important;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    margin-left: 0;&lt;br /&gt;
    margin-right: 0;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    top: 3.3em;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
 @media only screen and (min-width: 992px) and (max-width:768px) {&lt;br /&gt;
 #p-logo-text {&lt;br /&gt;
 right:74vw;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media only screen and (min-width: 900px) and (max-width:100px) {&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    right: 74vw;&lt;br /&gt;
    top: 3em;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 900px) and (min-width: 100px) {&lt;br /&gt;
#p-logo-text a.long {&lt;br /&gt;
    font-size: 43px !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1700px) and (min-width: 800px) {&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    left: 12px !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1700px) and (mix: 851px) {&lt;br /&gt;
#mw-site-navigation {&lt;br /&gt;
    background: #000;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-page-header-links li.selected a {&lt;br /&gt;
    color: #cccc00;&lt;br /&gt;
}&lt;br /&gt;
#mw-related-navigation .sidebar-chunk {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: outset #222;&lt;br /&gt;
    /* box-shadow: 2px 2px 1px rgba(0,0,0,0.5); */&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1099px) and (min-width: 851px) {&lt;br /&gt;
#mw-related-navigation .sidebar-chunk {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: outset #222;&lt;br /&gt;
    /* box-shadow: 2px 2px 1px rgba(0,0,0,0.5); */&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    padding: 0 15px 5px 20px;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
.color-middle-container, .ts-inner {&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    left: 120px;&lt;br /&gt;
}&lt;br /&gt;
#p-logo-text a.long {&lt;br /&gt;
    padding-top: 5px;&lt;br /&gt;
    padding-left: 6px;&lt;br /&gt;
    font-size: 30px;&lt;br /&gt;
    text-shadow: 1px 1px 1px #222;&lt;br /&gt;
}&lt;br /&gt;
#p-search {&lt;br /&gt;
    width: 70em;&lt;br /&gt;
    padding-right: 33px;&lt;br /&gt;
}&lt;br /&gt;
#personal .dropdown h3 {&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
}&lt;br /&gt;
#personal h2 {&lt;br /&gt;
    text-shadow: 2px 2px 0 #111;&lt;br /&gt;
    padding-top: 7px;&lt;br /&gt;
    font-size: 24px;&lt;br /&gt;
    text-transform: lowercase;&lt;br /&gt;
}&lt;br /&gt;
#personal .dropdown {&lt;br /&gt;
    background: #222!important;&lt;br /&gt;
    border: solid #000;&lt;br /&gt;
}&lt;br /&gt;
.codeEditor-status {&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
    text-shadow: 1px 2px #111;&lt;br /&gt;
}&lt;br /&gt;
#iframeframe {&lt;br /&gt;
    height: 700px;&lt;br /&gt;
}&lt;br /&gt;
#wpSave {&lt;br /&gt;
    text-shadow: 2px 2px 2px #000 !important&lt;br /&gt;
}&lt;br /&gt;
#mw-footer-container {&lt;br /&gt;
    background: #000;&lt;br /&gt;
    padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
fieldset {&lt;br /&gt;
    background: #222!important;&lt;br /&gt;
    border: solid #111;&lt;br /&gt;
}&lt;br /&gt;
input {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: solid 1px #111!important;&lt;br /&gt;
    border-radius: 2px;&lt;br /&gt;
    padding-left: 5px;&lt;br /&gt;
    color: #999;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button.mw-ui-progressive, .mw-ui-button.mw-ui-progressive:active, .mw-ui-button.mw-ui-progressive.mw-ui-checked, input[type='submit'], input[type='button'], button {&lt;br /&gt;
    border: solid 1px #222!important;&lt;br /&gt;
    border-bottom: 0!important;&lt;br /&gt;
    text-shadow: 0 0 0 #000 !important;&lt;br /&gt;
    border-bottom: solid 1px #222!important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-flaggedElement-destructive {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: 1px solid #444;&lt;br /&gt;
    color: #FF3333 !important;&lt;br /&gt;
    padding-left: 15px !important;&lt;br /&gt;
    padding-right: 15px !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-flaggedElement-destructive:hover {&lt;br /&gt;
    background: #222;&lt;br /&gt;
    color: #CC0000 !important;&lt;br /&gt;
}&lt;br /&gt;
#searchInput {&lt;br /&gt;
    border: 0!important;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#searchInput {&lt;br /&gt;
    padding: 0 0 0 6px !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-textInputWidget input, .oo-ui-textInputWidget textarea {&lt;br /&gt;
    background-color: #111;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-textInputWidget &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
    line-height: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
#pagehistory li.selected {&lt;br /&gt;
    background-color: #555;&lt;br /&gt;
}&lt;br /&gt;
.warningbox {&lt;br /&gt;
    background: #1d1d16;&lt;br /&gt;
}&lt;br /&gt;
.mw-plusminus-neg {&lt;br /&gt;
    color: #FF0000;&lt;br /&gt;
}&lt;br /&gt;
#searchButton, #mw-searchButton {&lt;br /&gt;
    border: 0 !important;&lt;br /&gt;
    left: 38vw;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
}&lt;br /&gt;
#mw-footer .footer-places li {&lt;br /&gt;
    float: right;&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
#mw-footer ul, #mw-footer li {&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
}&lt;br /&gt;
#mw-footer #lastmod {&lt;br /&gt;
    float: left;&lt;br /&gt;
    left: 25px;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange {&lt;br /&gt;
    background: #1d1d16;&lt;br /&gt;
    padding-left: 7px;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement.oo-ui-labelElement &amp;gt; input.oo-ui-buttonElement-button, .oo-ui-buttonElement.oo-ui-labelElement &amp;gt; .oo-ui-buttonElement-button &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
    text-shadow: 0 0 0 #000 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
    text-shadow: 0 0 0 #000&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-panelLayout-expanded {&lt;br /&gt;
    background: #222;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-messageDialog-message {&lt;br /&gt;
    color: #999;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
    color: #999;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {&lt;br /&gt;
    border-right: 1px solid #111&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-dialog-content &amp;gt; .oo-ui-window-body {&lt;br /&gt;
    outline: 1px solid #111;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-messageDialog-content &amp;gt; .oo-ui-window-foot {&lt;br /&gt;
    outline: 1px solid #111;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui .wikiEditor-ui-view {&lt;br /&gt;
    border: 1px solid #000;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui .wikiEditor-ui-top {&lt;br /&gt;
    border-bottom: 1px solid #000;&lt;br /&gt;
}&lt;br /&gt;
textarea[style] {&lt;br /&gt;
    background: #111 !important;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
pre, .mw-code {&lt;br /&gt;
    background: #112;&lt;br /&gt;
    color: #B0B0B0;&lt;br /&gt;
    border: 1px solid #444;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-iconWidget.oo-ui-iconElement.oo-ui-iconElement-icon {&lt;br /&gt;
    background-color: #B0B0B0;&lt;br /&gt;
    border: 1px solid #333;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/****************************************************************/&lt;br /&gt;
#p-top-label{ padding-left: 0.2em; }&lt;br /&gt;
#mw-site-navigation, #mw-related-navigation, .sidebar-chunk, .mw-portlet-body {&lt;br /&gt;
  margin: 0; padding: 0;&lt;br /&gt;
  padding-left: 0.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
&lt;br /&gt;
.mw-body .mw-parser-output h1::after, .mw-body .mw-parser-output h2::after {&lt;br /&gt;
  content: '';&lt;br /&gt;
  display: block;&lt;br /&gt;
  /* border-bottom: solid 2px #c8ccd1; */&lt;br /&gt;
  border-bottom: none;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
  #mw-content {&lt;br /&gt;
    background: #222;&lt;br /&gt;
    border: solid #946c20;&lt;br /&gt;
    -webkit-border-bottom-right-radius: 4px;&lt;br /&gt;
    -webkit-border-bottom-left-radius: 4px;&lt;br /&gt;
    -moz-border-radius-bottomright: 4px;&lt;br /&gt;
    -moz-border-radius-bottomleft: 4px;&lt;br /&gt;
    border-bottom-right-radius: 4px;&lt;br /&gt;
    border-bottom-left-radius: 4px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Personnaliser l'apparence de la barre latérale */&lt;br /&gt;
#site-navigation {&lt;br /&gt;
    background-color: #f0f0f0;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    border-radius: 5px;&lt;br /&gt;
}&lt;br /&gt;
#site-tools {&lt;br /&gt;
    background-color: #e0e0e0;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    border-radius: 5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-portlet-body { margin-bottom: 0em; } /* ATTODO espace barre latérale */&lt;br /&gt;
.mw-portlet-body { margin-bottom: 0em; } /* ATTODO espace barre latérale */&lt;br /&gt;
.sidebar-inner { margin-bottom: 0em; } /* ATTODO espace barre latérale */&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width: 1340px) { /* ATTODO espace barre latérale */&lt;br /&gt;
    #mw-site-navigation .sidebar-chunk .mw-portlet-body {&lt;br /&gt;
        margin-bottom: 0em;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4928</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4928"/>
		<updated>2025-10-08T08:53:10Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;** randompage-url|randompage&lt;br /&gt;
*Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω { } [] ⟨⟩ Æ ∃ ∀ ⊤ ⊥ ¬ ∧ ∨ ⇔ ⇐ ⇒ ≤ ≠ ≥ ∈ ∋ ∉ ⊂ ⊃ ⊄ ⊆ ∪ ∩ ≡ ≝ ≜ 。◊ ∵ ∴ ∞ ℵ ∅∂ ∫ ≈ Δ δ ∇ ± × ÷ ⊗ ⊖ ★ ↦ ⟼ → ⟶ &lt;br /&gt;
** Symboles mathématiques|Symb. math.&lt;br /&gt;
* ⊕ ⊖ ★ ␣ … «…»  «» ‘…’ ‘’ “…” “” '…' '' &amp;quot;…&amp;quot; &amp;quot;&amp;quot; „“ ☚ ☛ ☜ ☞ ☟ ☠ ☡ ☢ ← ↑ → ↓ ↔ ↕ ⇄ ⇅ ↲ ↰ ↳ ↱ ◊ ↪ ↩ ⤻ ⤺ ⤹ ⤸ ⤿ ⤾ ⤴ ⤵ ⤷ ⤶ ⮍ ⮏ ⮎ ⮌ ↬, ↫&lt;br /&gt;
** Symboles|Symboles &lt;br /&gt;
* Boutiques&lt;br /&gt;
** https://www.bht-diffusion.com|BHT Diffusion Broderie&lt;br /&gt;
** https://www.electra-bike.fr/index.php|BHT Bike&lt;br /&gt;
* Mes wiki&lt;br /&gt;
** https://at.bht.fr| Racine&lt;br /&gt;
** https://at.bht.fr/paintWiki| Peinture&lt;br /&gt;
** https://at.bht.fr/musicWiki| Musique&lt;br /&gt;
** https://at.bht.fr/astroWiki| Astres&lt;br /&gt;
** https://wiki.bht.fr| Wiki&lt;br /&gt;
** http://at.bht.fr|Racine&lt;br /&gt;
* Admin&lt;br /&gt;
** Special:Allpages| Liste des pages&lt;br /&gt;
** Spécial:Importer| Importer&lt;br /&gt;
** Special:Recentchanges|Mod. réc.&lt;br /&gt;
** MediaWiki:Sidebar| MediaWiki:Sidebar&lt;br /&gt;
** MediaWiki:Common.css | css&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4927</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4927"/>
		<updated>2025-10-08T08:52:34Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;** randompage-url|randompage&lt;br /&gt;
Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω { } [] ⟨⟩ Æ ∃ ∀ ⊤ ⊥ ¬ ∧ ∨ ⇔ ⇐ ⇒ ≤ ≠ ≥ ∈ ∋ ∉ ⊂ ⊃ ⊄ ⊆ ∪ ∩ ≡ ≝ ≜ 。◊ ∵ ∴ ∞ ℵ ∅∂ ∫ ≈ Δ δ ∇ ± × ÷ ⊗ ⊖ ★ ↦ ⟼ → ⟶ &lt;br /&gt;
** Symboles mathématiques|Symb. math.&lt;br /&gt;
* ⊕ ⊖ ★ ␣ … «…»  «» ‘…’ ‘’ “…” “” '…' '' &amp;quot;…&amp;quot; &amp;quot;&amp;quot; „“ ☚ ☛ ☜ ☞ ☟ ☠ ☡ ☢ ← ↑ → ↓ ↔ ↕ ⇄ ⇅ ↲ ↰ ↳ ↱ ◊ ↪ ↩ ⤻ ⤺ ⤹ ⤸ ⤿ ⤾ ⤴ ⤵ ⤷ ⤶ ⮍ ⮏ ⮎ ⮌ ↬, ↫&lt;br /&gt;
** Symboles|Symboles &lt;br /&gt;
* Boutiques&lt;br /&gt;
** https://www.bht-diffusion.com|BHT Diffusion Broderie&lt;br /&gt;
** https://www.electra-bike.fr/index.php|BHT Bike&lt;br /&gt;
* Mes wiki&lt;br /&gt;
** https://at.bht.fr| Racine&lt;br /&gt;
** https://at.bht.fr/paintWiki| Peinture&lt;br /&gt;
** https://at.bht.fr/musicWiki| Musique&lt;br /&gt;
** https://at.bht.fr/astroWiki| Astres&lt;br /&gt;
** https://wiki.bht.fr| Wiki&lt;br /&gt;
** http://at.bht.fr|Racine&lt;br /&gt;
* Admin&lt;br /&gt;
** Special:Allpages| Liste des pages&lt;br /&gt;
** Spécial:Importer| Importer&lt;br /&gt;
** Special:Recentchanges|Mod. réc.&lt;br /&gt;
** MediaWiki:Sidebar| MediaWiki:Sidebar&lt;br /&gt;
** MediaWiki:Common.css | css&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4926</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4926"/>
		<updated>2025-10-08T08:51:57Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* randompage-url|randompage&lt;br /&gt;
* Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω { } [] ⟨⟩ Æ ∃ ∀ ⊤ ⊥ ¬ ∧ ∨ ⇔ ⇐ ⇒ ≤ ≠ ≥ ∈ ∋ ∉ ⊂ ⊃ ⊄ ⊆ ∪ ∩ ≡ ≝ ≜ 。◊ ∵ ∴ ∞ ℵ ∅∂ ∫ ≈ Δ δ ∇ ± × ÷ ⊗ ⊖ ★ ↦ ⟼ → ⟶ &lt;br /&gt;
** Symboles mathématiques|Symb. math.&lt;br /&gt;
* ⊕ ⊖ ★ ␣ … «…»  «» ‘…’ ‘’ “…” “” '…' '' &amp;quot;…&amp;quot; &amp;quot;&amp;quot; „“ ☚ ☛ ☜ ☞ ☟ ☠ ☡ ☢ ← ↑ → ↓ ↔ ↕ ⇄ ⇅ ↲ ↰ ↳ ↱ ◊ ↪ ↩ ⤻ ⤺ ⤹ ⤸ ⤿ ⤾ ⤴ ⤵ ⤷ ⤶ ⮍ ⮏ ⮎ ⮌ ↬, ↫&lt;br /&gt;
** Symboles|Symboles &lt;br /&gt;
* Boutiques&lt;br /&gt;
** https://www.bht-diffusion.com|BHT Diffusion Broderie&lt;br /&gt;
** https://www.electra-bike.fr/index.php|BHT Bike&lt;br /&gt;
* Mes wiki&lt;br /&gt;
** https://at.bht.fr| Racine&lt;br /&gt;
** https://at.bht.fr/paintWiki| Peinture&lt;br /&gt;
** https://at.bht.fr/musicWiki| Musique&lt;br /&gt;
** https://at.bht.fr/astroWiki| Astres&lt;br /&gt;
** https://wiki.bht.fr| Wiki&lt;br /&gt;
** http://at.bht.fr|Racine&lt;br /&gt;
* Admin&lt;br /&gt;
** Special:Allpages| Liste des pages&lt;br /&gt;
** Spécial:Importer| Importer&lt;br /&gt;
** Special:Recentchanges|Mod. réc.&lt;br /&gt;
** MediaWiki:Sidebar| MediaWiki:Sidebar&lt;br /&gt;
** MediaWiki:Common.css | css&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4925</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4925"/>
		<updated>2025-10-08T08:51:40Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;** randompage-url|randompage&lt;br /&gt;
* Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω { } [] ⟨⟩ Æ ∃ ∀ ⊤ ⊥ ¬ ∧ ∨ ⇔ ⇐ ⇒ ≤ ≠ ≥ ∈ ∋ ∉ ⊂ ⊃ ⊄ ⊆ ∪ ∩ ≡ ≝ ≜ 。◊ ∵ ∴ ∞ ℵ ∅∂ ∫ ≈ Δ δ ∇ ± × ÷ ⊗ ⊖ ★ ↦ ⟼ → ⟶ &lt;br /&gt;
** Symboles mathématiques|Symb. math.&lt;br /&gt;
* ⊕ ⊖ ★ ␣ … «…»  «» ‘…’ ‘’ “…” “” '…' '' &amp;quot;…&amp;quot; &amp;quot;&amp;quot; „“ ☚ ☛ ☜ ☞ ☟ ☠ ☡ ☢ ← ↑ → ↓ ↔ ↕ ⇄ ⇅ ↲ ↰ ↳ ↱ ◊ ↪ ↩ ⤻ ⤺ ⤹ ⤸ ⤿ ⤾ ⤴ ⤵ ⤷ ⤶ ⮍ ⮏ ⮎ ⮌ ↬, ↫&lt;br /&gt;
** Symboles|Symboles &lt;br /&gt;
* Boutiques&lt;br /&gt;
** https://www.bht-diffusion.com|BHT Diffusion Broderie&lt;br /&gt;
** https://www.electra-bike.fr/index.php|BHT Bike&lt;br /&gt;
* Mes wiki&lt;br /&gt;
** https://at.bht.fr| Racine&lt;br /&gt;
** https://at.bht.fr/paintWiki| Peinture&lt;br /&gt;
** https://at.bht.fr/musicWiki| Musique&lt;br /&gt;
** https://at.bht.fr/astroWiki| Astres&lt;br /&gt;
** https://wiki.bht.fr| Wiki&lt;br /&gt;
** http://at.bht.fr|Racine&lt;br /&gt;
* Admin&lt;br /&gt;
** Special:Allpages| Liste des pages&lt;br /&gt;
** Spécial:Importer| Importer&lt;br /&gt;
** Special:Recentchanges|Mod. réc.&lt;br /&gt;
** MediaWiki:Sidebar| MediaWiki:Sidebar&lt;br /&gt;
** MediaWiki:Common.css | css&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MRDo&amp;diff=4924</id>
		<title>Modèle:MRDo</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MRDo&amp;diff=4924"/>
		<updated>2024-12-18T12:07:21Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='rdoInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|RDo rule to do, to adopt}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mRDo|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mRDo|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mRDo|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MAno&amp;diff=4922</id>
		<title>Modèle:MAno</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MAno&amp;diff=4922"/>
		<updated>2024-12-18T12:07:20Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='anoInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Ano anomaly}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mAno|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mAno|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mAno|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MDef&amp;diff=4920</id>
		<title>Modèle:MDef</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MDef&amp;diff=4920"/>
		<updated>2024-12-18T12:07:20Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='defInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Def definition}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mDef|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mDef|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mDef|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MExa&amp;diff=4918</id>
		<title>Modèle:MExa</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MExa&amp;diff=4918"/>
		<updated>2024-12-18T12:07:20Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='exaInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Exa example}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mExa|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mExa|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mExa|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MExo&amp;diff=4916</id>
		<title>Modèle:MExo</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MExo&amp;diff=4916"/>
		<updated>2024-12-18T12:07:20Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='exoInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Exo exercice}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mExo|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mExo|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mExo|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MNot&amp;diff=4914</id>
		<title>Modèle:MNot</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MNot&amp;diff=4914"/>
		<updated>2024-12-18T12:07:20Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='notInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Not notation}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mNot|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mNot|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mNot|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MQue&amp;diff=4912</id>
		<title>Modèle:MQue</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MQue&amp;diff=4912"/>
		<updated>2024-12-18T12:07:19Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='queInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Que question}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mQue|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mQue|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mQue|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MQup&amp;diff=4910</id>
		<title>Modèle:MQup</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MQup&amp;diff=4910"/>
		<updated>2024-12-18T12:07:19Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='qupInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Qup question importante}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mQup|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mQup|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mQup|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MRDn&amp;diff=4908</id>
		<title>Modèle:MRDn</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MRDn&amp;diff=4908"/>
		<updated>2024-12-18T12:07:19Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='rdnInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|RDn rule do not ... prohibitedt}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mRDn|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mRDn|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mRDn|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MRqe&amp;diff=4906</id>
		<title>Modèle:MRqe</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MRqe&amp;diff=4906"/>
		<updated>2024-12-18T12:07:19Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='rqeInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Rqe remark}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mRqe|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mRqe|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mRqe|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MTdo&amp;diff=4904</id>
		<title>Modèle:MTdo</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MTdo&amp;diff=4904"/>
		<updated>2024-12-18T12:07:19Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='tdoInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Tdo todo to finish}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mTdo|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mTdo|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mTdo|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MCSl&amp;diff=4902</id>
		<title>Modèle:MCSl</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MCSl&amp;diff=4902"/>
		<updated>2024-12-18T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='cslInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|CSl code style to use}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mCSl|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mCSl|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mCSl|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MHyp&amp;diff=4900</id>
		<title>Modèle:MHyp</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MHyp&amp;diff=4900"/>
		<updated>2024-12-18T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='hypInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Hyp hypothèse}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mHyp|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mHyp|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mHyp|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MAss&amp;diff=4898</id>
		<title>Modèle:MAss</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MAss&amp;diff=4898"/>
		<updated>2024-12-18T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='assInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Ass assertion}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mAss|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mAss|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mAss|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MPro&amp;diff=4896</id>
		<title>Modèle:MPro</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MPro&amp;diff=4896"/>
		<updated>2024-12-18T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='proInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Pro proposition}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mPro|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mPro|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mPro|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MThe&amp;diff=4894</id>
		<title>Modèle:MThe</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MThe&amp;diff=4894"/>
		<updated>2024-12-18T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='theInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|The théorème}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mThe|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mThe|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mThe|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MAxo&amp;diff=4892</id>
		<title>Modèle:MAxo</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MAxo&amp;diff=4892"/>
		<updated>2024-12-18T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='axoInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Axo axiome}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mAxo|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mAxo|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mAxo|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MLem&amp;diff=4890</id>
		<title>Modèle:MLem</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MLem&amp;diff=4890"/>
		<updated>2024-12-18T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='lemInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Lem lemme}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mLem|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mLem|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mLem|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MCoj&amp;diff=4888</id>
		<title>Modèle:MCoj</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MCoj&amp;diff=4888"/>
		<updated>2024-12-18T12:07:17Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='cojInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|Coj conjecture}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mCoj|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mCoj|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mCoj|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MNeq&amp;diff=4886</id>
		<title>Modèle:MNeq</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MNeq&amp;diff=4886"/>
		<updated>2024-12-18T12:07:17Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='nEqInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|NEq notation by equivalence}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mNeq|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mNeq|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mNeq|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MDeq&amp;diff=4884</id>
		<title>Modèle:MDeq</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MDeq&amp;diff=4884"/>
		<updated>2024-12-18T12:07:17Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='dEqInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|DEq define by equivalence}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mDeq|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mDeq|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mDeq|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MPar&amp;diff=4882</id>
		<title>Modèle:MPar</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:MPar&amp;diff=4882"/>
		<updated>2024-12-18T12:07:17Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class='parInfo'&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=form&lt;br /&gt;
|texte=Mise en forme du texte dans le style {{m|parW  CNumPar paragraph}}.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{mPar|mot}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;texte&lt;br /&gt;
:le texte à mettre en forme.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{mPar|La vie est belle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
 &lt;br /&gt;
{{mPar|La vie est belle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Exemples_de_.bashrc&amp;diff=4880</id>
		<title>Exemples de .bashrc</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Exemples_de_.bashrc&amp;diff=4880"/>
		<updated>2024-12-18T12:07:15Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Introduction&lt;br /&gt;
|keyWords=&lt;br /&gt;
|texte=&lt;br /&gt;
|auteurs=&lt;br /&gt;
|index=Bash&lt;br /&gt;
}}&lt;br /&gt;
= {{id|ref}}Référence =&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [[Bash PS1]]&lt;br /&gt;
* [[Bash]]&lt;br /&gt;
}}&lt;br /&gt;
= Sous windows avec cygween ou msys2 comment activer ssh-agent =&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* Lire [[SSH#sshAgentPb]]&lt;br /&gt;
}}&lt;br /&gt;
= Pattern =&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
################################################################################&lt;br /&gt;
function pause(){&lt;br /&gt;
 read -s -n 1 -p &amp;quot;Press any key to continue …&amp;quot;&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
################################################################################&lt;br /&gt;
genDir=gen&lt;br /&gt;
drvDir=$genDir/drv&lt;br /&gt;
if [ ! -d $genDir ]; then&lt;br /&gt;
    echo &amp;quot;the directory '$genDir' does not exist, we create it.&amp;quot;&lt;br /&gt;
    mkdir $genDir&lt;br /&gt;
fi&lt;br /&gt;
################################################################################&lt;br /&gt;
rc=$?&lt;br /&gt;
if [ ! $rc -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;ERRORS we mus stop&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
################################################################################&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
= .bashrc l'exemple =&lt;br /&gt;
{{parW|1=&lt;br /&gt;
☞ voir la référence en priorité &lt;br /&gt;
* {{m|https://atoross@at.bht.fr/git/bashTool.git}}&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# LANGUAGE&lt;br /&gt;
################################################################################&lt;br /&gt;
export LC_ALL=en_US.UTF-8&lt;br /&gt;
export LANG=en_US.UTF-8&lt;br /&gt;
export LANGUAGE=en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# programming&lt;br /&gt;
################################################################################&lt;br /&gt;
export CPPFLAGS=&lt;br /&gt;
export CXXFLAGS=&lt;br /&gt;
export LDFLAGS=&lt;br /&gt;
export LD_LIBRARY_PATH=&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# set_paths&lt;br /&gt;
################################################################################&lt;br /&gt;
set_paths64()&lt;br /&gt;
{&lt;br /&gt;
APP_DIR=$1&lt;br /&gt;
LIB_DIR=$2&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$APP_DIR/include $CPPFLAGS&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-I$APP_DIR/include $CXXFLAGS&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$APP_DIR/lib64$LIB_DIR $LDFLAGS&amp;quot;&lt;br /&gt;
export LD_LIBRARY_PATH=&amp;quot;$APP_DIR/lib64$LIB_DIR:$LD_LIBRARY_PATH&amp;quot;&lt;br /&gt;
export PATH=&amp;quot;$APP_DIR/bin:$PATH&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
set_paths()&lt;br /&gt;
{&lt;br /&gt;
APP_DIR=$1&lt;br /&gt;
LIB_DIR=$2&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$APP_DIR/include $CPPFLAGS&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-I$APP_DIR/include $CXXFLAGS&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L$APP_DIR/lib$LIB_DIR $LDFLAGS&amp;quot;&lt;br /&gt;
export LD_LIBRARY_PATH=&amp;quot;$APP_DIR/lib$LIB_DIR:$LD_LIBRARY_PATH&amp;quot;&lt;br /&gt;
export PATH=&amp;quot;$APP_DIR/bin:$PATH&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
################################################################################&lt;br /&gt;
# Examples :&lt;br /&gt;
# set_paths /local00/home/C07138/exe/gmp&lt;br /&gt;
# set_paths /local00/home/C07138/exe/mpfr&lt;br /&gt;
# set_paths /local00/home/C07138/exe/mpc&lt;br /&gt;
# set_paths64 /local00/home/C07138/exe/gcc&lt;br /&gt;
# set_paths /local00/home/C07138/exe/scilab /scilab&lt;br /&gt;
################################################################################&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# Subversion&lt;br /&gt;
################################################################################&lt;br /&gt;
alias svs='svn status -q'&lt;br /&gt;
alias scm='svn commit -m '&lt;br /&gt;
alias spl='svn update '&lt;br /&gt;
alias spu='svn commit -m '&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# Git&lt;br /&gt;
################################################################################&lt;br /&gt;
alias gsha='git show -s --format=%H'&lt;br /&gt;
alias gssha='git show -s --format=%h'&lt;br /&gt;
alias lt='ls -lart'&lt;br /&gt;
alias gad='git add '&lt;br /&gt;
alias gbr='git branch '&lt;br /&gt;
alias grp='git rev-parse '&lt;br /&gt;
alias gcb='git rev-parse --abbrev-ref HEAD'&lt;br /&gt;
alias gcs='git rev-parse $(gcb)'&lt;br /&gt;
alias gcm='git commit -m '&lt;br /&gt;
alias gco='git checkout '&lt;br /&gt;
alias gcur='git symbolic-ref --short HEAD'&lt;br /&gt;
alias gltag='git describe --exact-match --abbrev=0'&lt;br /&gt;
alias gpl='git pull '&lt;br /&gt;
alias gpu='git push '&lt;br /&gt;
alias glg='git log --pretty=format:&amp;quot;%h %cd %cn %Cgreen%s %Cred%d&amp;quot; --graph  \&lt;br /&gt;
--abbrev-commit --date=&amp;quot;format:%Y/%m/%d %Hh%M&amp;quot;'&lt;br /&gt;
alias gslg='git log --pretty=format:&amp;quot;%h %cd %Cgreen%s %Cred%d&amp;quot; --graph  \&lt;br /&gt;
--abbrev-commit  --date=&amp;quot;format:%Y/%m/%d %Hh%M&amp;quot;'&lt;br /&gt;
alias gst='git status '&lt;br /&gt;
alias gsu='git status -uno '&lt;br /&gt;
alias gsw='git checkout '&lt;br /&gt;
alias gdif='git diff -w  '&lt;br /&gt;
alias gdifn='git diff -w --name-only '&lt;br /&gt;
alias grv='git remote -v '&lt;br /&gt;
alias gra='git remote add '&lt;br /&gt;
alias gme='git merge --no-ff --no-commit'&lt;br /&gt;
alias gpuo='git push origin '&lt;br /&gt;
alias gplo='git pull origin '&lt;br /&gt;
alias gpua='git push at64g '&lt;br /&gt;
alias gpla='git pull at64g '&lt;br /&gt;
alias gpub='git push bht '&lt;br /&gt;
alias gplb='git pull bht '&lt;br /&gt;
alias gsav='git add -u; git commit -m &amp;quot;save&amp;quot; ; git push '&lt;br /&gt;
alias gcleanwhitespaces='sed -i -e &amp;quot;s/[[:blank:]]*$//g&amp;quot; '&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# Python&lt;br /&gt;
################################################################################&lt;br /&gt;
pyclean () {&lt;br /&gt;
        find . -type f -name &amp;quot;*.py[co]&amp;quot; -delete&lt;br /&gt;
        find . -type d -name &amp;quot;__pycache__&amp;quot; -delete&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# apt/apt-get&lt;br /&gt;
################################################################################&lt;br /&gt;
alias apti='apt install'&lt;br /&gt;
alias apts='apt.cache search'&lt;br /&gt;
alias aptg='apt-get'&lt;br /&gt;
alias aptgi='apt-get install'&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# ls&lt;br /&gt;
################################################################################&lt;br /&gt;
export LS_OPTIONS='--color=auto'&lt;br /&gt;
eval &amp;quot;`dircolors`&amp;quot;&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
alias ls='ls -1BhqQ $LS_OPTIONS'&lt;br /&gt;
alias ll='ls -l --time-style=full-iso'&lt;br /&gt;
alias lt='ll -rt'&lt;br /&gt;
alias lsd0='\ls -1Bhqd $LS_OPTIONS */'&lt;br /&gt;
alias lsd='lsd0 | sed &amp;quot;s/.$//&amp;quot; | while read x ; do echo -e &amp;quot;\e[1;34m$x\e[0m&amp;quot; ; \&lt;br /&gt;
done'&lt;br /&gt;
alias ltd='lsd0 -rt | sed &amp;quot;s/.$//&amp;quot; | while read x ; do echo -e &amp;quot;\e[1;34m$x\e[0m\&lt;br /&gt;
&amp;quot; ; done'&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# rm cp mv diff emacs&lt;br /&gt;
################################################################################&lt;br /&gt;
alias rm='rm -i'&lt;br /&gt;
alias cp='cp -i'&lt;br /&gt;
alias mv='mv -i'&lt;br /&gt;
alias diff='diff -BrqZE'&lt;br /&gt;
alias emacs='emacs -nw'&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# disk&lt;br /&gt;
################################################################################&lt;br /&gt;
alias lsblkOld='lsblk -o mountpoint,kname,name,label,fstype,UUID,size,FSSIZE,\&lt;br /&gt;
FSUSED'&lt;br /&gt;
alias lsblk='lsblk -o mountpoint,kname,name,label,partlabel,fstype,size,fssize,\&lt;br /&gt;
fsused,fsuse%'&lt;br /&gt;
alias lsblkUuid='lsblk -o mountpoint,name,uuid,partlabel,fstype'&lt;br /&gt;
alias blkid='sudo blkid -u filesystem'&lt;br /&gt;
# umask u=rwx,g=rwx,o=&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# slurm&lt;br /&gt;
################################################################################&lt;br /&gt;
alias jobInf='sacct  --format submit,user%-6,jobId%-15,Elapsed%-10,State%+20,Wo\&lt;br /&gt;
rkDir%-40'&lt;br /&gt;
alias jobInf2='sacct  --format submit,user%-6,jobId%-15,Elapsed%-10,State%+20,W\&lt;br /&gt;
orkDir%-40 -S  2020-01-01'&lt;br /&gt;
alias jobRun='squeue --format &amp;quot;%A %D-%C %T %L %M %Z&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# bash&lt;br /&gt;
################################################################################&lt;br /&gt;
if [ -f /etc/bash_completion ]; then&lt;br /&gt;
 . /etc/bash_completion&lt;br /&gt;
fi&lt;br /&gt;
gitCurBranch()&lt;br /&gt;
{&lt;br /&gt;
res=$(git symbolic-ref --short HEAD 2&amp;gt;/dev/null)&lt;br /&gt;
if [ -n &amp;quot;$res&amp;quot; ] ; then&lt;br /&gt;
     echo &amp;quot;:${res}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
}&lt;br /&gt;
# export PS1='\u@\h:\w$(gitCurBranch)\$'&lt;br /&gt;
export PS1='\[\033[0;92m\]\u\[\033[0;35m\]@\[\033[0;92m\]\h\[\033[0;33m\]:\w\&lt;br /&gt;
\[\033[0;36m\]$(gitCurBranch)\[\033[0;39m\]\$'&lt;br /&gt;
################################################################################&lt;br /&gt;
# proxy&lt;br /&gt;
################################################################################&lt;br /&gt;
export http_proxy=http://C07138@vip-users.proxy.edf.fr:3131&lt;br /&gt;
export https_proxy=http://C07138@vip-users.proxy.edf.fr:3131&lt;br /&gt;
export ftp_proxy=http://C07138@vip-users.proxy.edf.fr:3131&lt;br /&gt;
export no_proxy=&amp;quot;.edf.fr,localhost,127.0.0.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# msys&lt;br /&gt;
################################################################################&lt;br /&gt;
export PATH=/c/p/pf/msys64/mingw64/bin:$PATH&lt;br /&gt;
################################################################################&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Aide_m%C3%A9moire_d%27Arthur_pour_l%27utilisation_de_Python&amp;diff=4878</id>
		<title>Aide mémoire d'Arthur pour l'utilisation de Python</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Aide_m%C3%A9moire_d%27Arthur_pour_l%27utilisation_de_Python&amp;diff=4878"/>
		<updated>2024-12-18T12:07:08Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Introduction&lt;br /&gt;
|texte=Cette page contient une information concise sur le langage python.&lt;br /&gt;
|auteurs=Arthur TOROSSIAN&lt;br /&gt;
|index=Python&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Priorité des opérateurs (precedence) ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Par oredre croissante :&lt;br /&gt;
* {{m|1=lambda}}&lt;br /&gt;
*: Lambda expression&lt;br /&gt;
* {{m|1=if}}  {{m|1=else}}&lt;br /&gt;
* {{m|1=or}}&lt;br /&gt;
* {{m|1=and}}&lt;br /&gt;
* {{m|1=not}} x&lt;br /&gt;
* {{m|1=in}}, {{m|1=not in}}, {{m|1=is}}, {{m|1=is not}}, {{m|1=&amp;lt;}}, {{m|1=&amp;lt;=}}, {{m|1=&amp;gt;}}, {{m|1=&amp;gt;=}}, {{m|1=&amp;lt;&amp;gt;}}, {{m|1=!=}}, {{m|1===}}&lt;br /&gt;
*{{m|1={{!}}}}&lt;br /&gt;
*: Bitwise OR&lt;br /&gt;
* {{m|1=^}}	&lt;br /&gt;
*: Bitwise XOR&lt;br /&gt;
* {{m|1=&amp;amp;}}&lt;br /&gt;
*: Bitwise AND&lt;br /&gt;
* {{m|1=&amp;lt;&amp;lt;}}, {{m|1=&amp;gt;&amp;gt;}}&lt;br /&gt;
*: Shifts&lt;br /&gt;
* {{m|1=+}}, {{m|1=-}}&lt;br /&gt;
* {{m|1=*}}, {{m|1=/}}, {{m|1=//}}, {{m|1=%}}&lt;br /&gt;
* {{m|1=+x}}, {{m|1=-x}}, {{m|1=~x}}&lt;br /&gt;
*: Positive, negative, bitwise NOT&lt;br /&gt;
* {{m|1=**}}&lt;br /&gt;
*: Exponentiation &lt;br /&gt;
* x{{m|1=[}}index{{m|1=]}}, x{{m|1=[}}index{{m|1=:}}index{{m|1=]}}, x{{m|1=(}}arguments...{{m|1=)}}, x{{m|1=.}}attribute&lt;br /&gt;
*: Subscription, slicing, call, attribute reference&lt;br /&gt;
* {{m|1=(}}expressions...{{m|1=)}}, {{m|1=[}}expressions...{{m|1=]}}, {{m|1={}}key{{m|1=:}} value...{{m|1=} }}, {{m|1=`}}expressions...{{m|1=`}}&lt;br /&gt;
*: Binding or tuple display, list display, dictionary display, string conversion&lt;br /&gt;
[https://docs.python.org/2/reference/expressions.html#operator-precedence docs.python.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Les types ==&lt;br /&gt;
=== Les constantes ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [https://peps.python.org/pep-0008/#constants PEP 8 – Style Guide for Python Code]&lt;br /&gt;
* [https://github.com/simon-ritchie/pconst/blob/master/README.md pconst(simon-ritchie)]&lt;br /&gt;
* [https://github.com/hmeine/named_constants/blob/master/README.rst named_constants(hmeine)]&lt;br /&gt;
* [https://docs.python.org/3/library/typing.html#typing.Final typing.Final]&lt;br /&gt;
* ★[https://blog.finxter.com/python-enum-get-value-five-best-methods Enum Get Value – Five Best Methods]&lt;br /&gt;
* ★★★ [https://docs.python.org/3/library/enum.html enum]&lt;br /&gt;
}}&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python||code=&lt;br /&gt;
class indCont(IntEnum):&lt;br /&gt;
    @classmethod&lt;br /&gt;
    def nm( name, defVal=None):        &lt;br /&gt;
        return getattr( name , defVal )&lt;br /&gt;
&lt;br /&gt;
class gbI(indCont):&lt;br /&gt;
    dH             = 0  # gbI.dH deltaHeight&lt;br /&gt;
    dT             = 1  # gbI.dT&lt;br /&gt;
    dTcMax         = 2  # gbI.dTcMax&lt;br /&gt;
    dWaterFlowMax  = 3  # gbI.dWaterFlowMax&lt;br /&gt;
    dl             = 4  # gbI.dl&lt;br /&gt;
    upLevel        = 5  # gbI.upLevel&lt;br /&gt;
    downLevel      = 6  # gbI.downLevel&lt;br /&gt;
    wettedLength   = 7  # gbI.wettedLength&lt;br /&gt;
    dryLength      = 8  # gbI.dryLength&lt;br /&gt;
    emergedLength  = 9  # gbI.emergedLength  -&amp;gt; flt.emergedLength&lt;br /&gt;
    immergedLength = 10 # gbI.immergedLength -&amp;gt; flt.immergedLength&lt;br /&gt;
    filterFlow     = 11 # gbI.filterFlow -&amp;gt; flt.waterFlow&lt;br /&gt;
    imFlow         = 12 # gbI.imFlow -&amp;gt; flt.imFlow&lt;br /&gt;
    emFlow         = 13 # gbI.emFlow -&amp;gt; flt.emergedFlow&lt;br /&gt;
    wetTc          = 14 # gbI.wetTc -&amp;gt; flt.wettedTc&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    #---------------------------------------------------------------------------&lt;br /&gt;
    print( gbI )&lt;br /&gt;
    print( list(gbI) )&lt;br /&gt;
    print( &amp;quot;dT&amp;quot;, gbI( gbI.dT) )&lt;br /&gt;
    print( &amp;quot;downLevel&amp;quot;, getattr( gbI, &amp;quot;downLevel&amp;quot; , None ))&lt;br /&gt;
    print( &amp;quot;immergedLength&amp;quot;, gbI.nm( &amp;quot;immergedLength&amp;quot;) )&lt;br /&gt;
    print( gbI.dH.name,  gbI.dH )&lt;br /&gt;
    print( gbI.dT.name, gbI.dT )&lt;br /&gt;
    try :&lt;br /&gt;
        gbI.dH = 4&lt;br /&gt;
    except AttributeError as err :&lt;br /&gt;
        print(err)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Les dates ===&lt;br /&gt;
==== git/pythonTool/pattern.py ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
import time # https://docs.python.org/fr/3/library/time.html#time.gmtime&lt;br /&gt;
# L'epoch est le point de départ du temps, le résultat de time.gmtime(0) est &lt;br /&gt;
# le 1er janvier 1970 à 00:00:00 &lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
def getTimeAsFloat() :&lt;br /&gt;
    return time.time() # absolue time in seconds&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
def getTimeAsStr( fmt ):&lt;br /&gt;
    return time.strftime(&amp;quot;%Y/%m/%d_%H:%M:%S&amp;quot;,fmt)&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
timeSec = getTimeAsFloat()              # time in seconds &lt;br /&gt;
gmtTime = time.gmtime( timeSec )        # gmt Greenwich Mean Time &lt;br /&gt;
                                        # (Temps moyen de Greenwich)&lt;br /&gt;
locTime = time.localtime( timeSec )     # local time&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
print( &amp;quot;(s) time&amp;quot;, timeSec ) &lt;br /&gt;
print( &amp;quot;gmt time&amp;quot;, getTimeAsStr( gmtTime ) ) &lt;br /&gt;
print( &amp;quot;loc time&amp;quot;, getTimeAsStr( locTime ) )  &lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
(s) time 1734213182.5401628&lt;br /&gt;
gmt time 2024/12/14_21:53:02&lt;br /&gt;
loc time 2024/12/14_22:53:02&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== get_datetime_str ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def get_datetime_str():&lt;br /&gt;
    return time.strftime(&amp;quot;%Y-%m-%d_%H-%M-%S&amp;quot;,time.localtime())&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def get_date_year( date ):&lt;br /&gt;
    return time.strftime(&amp;quot;%Y&amp;quot;,date)&lt;br /&gt;
&lt;br /&gt;
def get_date_month( date ):&lt;br /&gt;
    return time.strftime(&amp;quot;%m&amp;quot;,date)&lt;br /&gt;
&lt;br /&gt;
def get_date_day( date ):&lt;br /&gt;
    return time.strftime(&amp;quot;%d&amp;quot;,date)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== date_str2date_float ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def date_str2float( sdate ):&lt;br /&gt;
    ds = time.strptime( sdate,&amp;quot;%d/%m/%Y&amp;quot;  )&lt;br /&gt;
    d = time.mktime( ds )&lt;br /&gt;
    return d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== date_float2date_str ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def date_float2date_str( d ):&lt;br /&gt;
    ds = time.strftime(&amp;quot;%d/%m/%Y&amp;quot;, time.gmtime(d) )&lt;br /&gt;
    return ds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== date_float_add_days ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def date_float_add_days( d, nb ):&lt;br /&gt;
    nd = d + 3600*24*nb&lt;br /&gt;
    return nd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== time2str str2time getAcTimeOfFile timeToFile fileToTime ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
timeForat = &amp;quot;%Y-%m-%d_%H-%M-%S&amp;quot;&lt;br /&gt;
def time2str( t=None ):&lt;br /&gt;
    st = time.localtime( t )&lt;br /&gt;
    return time.strftime( timeForat , st )&lt;br /&gt;
def str2time( text ) :&lt;br /&gt;
    st = time.strptime( dT, timeForat )&lt;br /&gt;
    return time.mktime( st )&lt;br /&gt;
def getAcTimeOfFile( filename ):&lt;br /&gt;
    infoStat = os.stat( filename )&lt;br /&gt;
    st = time.localtime( infoStat.st_atime )&lt;br /&gt;
    t = time.mktime( st )&lt;br /&gt;
    return t&lt;br /&gt;
def timeToFile( filename, t ):&lt;br /&gt;
    dT = time2str( t )&lt;br /&gt;
    tofile( filename, dT )&lt;br /&gt;
def fileToTime( filename ):&lt;br /&gt;
    dt = fromfile( filename )&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Système et codage das chaînes de caractères ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Parfois le codage avec le système a des problèmes :&lt;br /&gt;
{{code|colNb=80|lang=python|code= &lt;br /&gt;
print(sys.getdefaultencoding())&lt;br /&gt;
print(sys.stdout.encoding)&lt;br /&gt;
}}&lt;br /&gt;
{{code|colNb=80|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
&lt;br /&gt;
print( &amp;quot;OS encoding : &amp;quot;, locale.getpreferredencoding())&lt;br /&gt;
}}&lt;br /&gt;
Pour python3 :&lt;br /&gt;
{{code|colNb=80|lang=python|code=&lt;br /&gt;
def printRaw( *text ):&lt;br /&gt;
    myout = open(1, &amp;quot;w&amp;quot;, encoding = &amp;quot;UTF-8&amp;quot;, closefd = False)&lt;br /&gt;
    print(*text, file=myout)&lt;br /&gt;
    myout.flush()&lt;br /&gt;
    myout.close()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Programme ==&lt;br /&gt;
=== Versionnement ===&lt;br /&gt;
==== Obtenir la signature numérique (hashage sha) du versionnement par git ====&lt;br /&gt;
===== subprocess.check_output - git describe or git show =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def getVersionningSignature(  ):&lt;br /&gt;
    try : &lt;br /&gt;
        # label = &amp;quot;-&amp;quot;+subprocess.check_output([&amp;quot;git&amp;quot;, &amp;quot;describe&amp;quot;]).strip(&lt;br /&gt;
        # ).decode('utf-8')&lt;br /&gt;
        sign = &amp;quot;_sha_&amp;quot;+subprocess.check_output(&lt;br /&gt;
                            [&amp;quot;git&amp;quot;, &amp;quot;show&amp;quot;,&amp;quot;-s&amp;quot;,&amp;quot;--format=%h&amp;quot;]).decode('utf-8')    &lt;br /&gt;
    except FileNotFoundError as err :&lt;br /&gt;
        sign = &amp;quot;&amp;quot;.encode('utf-8')&lt;br /&gt;
    return sign.strip()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
===== subprocess.check_output - git rev-parse HEAD =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
import subprocess&lt;br /&gt;
def get_git_revision_hash() -&amp;gt; str:&lt;br /&gt;
    return subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode('utf-8').strip()&lt;br /&gt;
&lt;br /&gt;
def get_git_revision_short_hash() -&amp;gt; str:&lt;br /&gt;
    return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).decode('utf-8').strip()}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== gitpython =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
pip install gitpython&lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
import git&lt;br /&gt;
repo = git.Repo(search_parent_directories=True)&lt;br /&gt;
sha = repo.head.object.hexsha&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Application ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
################################################################################&lt;br /&gt;
# release.V1.V2.V3.V4&lt;br /&gt;
# release x(n), rpa, ra, rb, rc(n), rl :&lt;br /&gt;
#         x(n) : x1 x2 , x3 ... x400 ... (in development)&lt;br /&gt;
#         rpa  : Release Pre-Alpha for unit or intergation tests&lt;br /&gt;
#         ra   : release alpha final tests in development team &amp;quot;recette usine&amp;quot;&lt;br /&gt;
#         rb   : release beta test in client test team &amp;quot;recettes métier&amp;quot;&lt;br /&gt;
#         rc(n): release candidate 1, 2, 3, ... test in client test team&lt;br /&gt;
#         rl   : release live &amp;quot;live release&amp;quot; or gd (gold) or pr (prod)&lt;br /&gt;
# &lt;br /&gt;
#         V1 : architecture modification&lt;br /&gt;
#         V2 : function modifications&lt;br /&gt;
#         V3 : implementation of functions&lt;br /&gt;
#         V4 : bug corrections &lt;br /&gt;
VERSION = &amp;quot;x1-0.0.0.0&amp;quot;&lt;br /&gt;
################################################################################&lt;br /&gt;
APP_PATH, APP_NAME = os.path.split(__file__)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Library ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
################################################################################&lt;br /&gt;
# API identification file with list of interface published and accessible items.&lt;br /&gt;
################################################################################&lt;br /&gt;
# module identification file with api sub module.&lt;br /&gt;
#&lt;br /&gt;
# [release-]current.revision.age&lt;br /&gt;
#&lt;br /&gt;
# [release-]apiVersion.revisionOfThisVersion.ageOfThisApi&lt;br /&gt;
#&lt;br /&gt;
# exemple : 3.1.2&lt;br /&gt;
#             if you use API 1.x.x you can use it : 3-2=1 &lt;br /&gt;
# current :&lt;br /&gt;
#         interface, API version&lt;br /&gt;
# revision:&lt;br /&gt;
#         implementation of API version&lt;br /&gt;
# age     :&lt;br /&gt;
#         ascendant compatibility between API&lt;br /&gt;
#         versions compatible width API : current, current-1, ...(current - age) &lt;br /&gt;
#&lt;br /&gt;
# release x(n), rpa, ra, rb, rc(n), rl :&lt;br /&gt;
#         x(n) : x1 x2 , x3 ... x400 ... (in development)&lt;br /&gt;
#         rpa  : Release Pre-Alpha for unit or intergation tests&lt;br /&gt;
#         ra   : release alpha final tests in development team &amp;quot;recette usine&amp;quot;&lt;br /&gt;
#         rb   : release beta test in client test team &amp;quot;recettes métier&amp;quot;&lt;br /&gt;
#         rc(n): release candidate 1, 2, 3, ... test in client test team&lt;br /&gt;
#         rl   : release live &amp;quot;live release&amp;quot; or gd (gold) or pr (prod)&lt;br /&gt;
VERSION = &amp;quot;x1-0.0.0&amp;quot;&lt;br /&gt;
ABSTRACT_MSG=&amp;quot;call of abstract method&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== En-tête ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== main ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=python|code=&lt;br /&gt;
if __name__ == '__main__' :    &lt;br /&gt;
    pass&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== minmal ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
import os, sys, re&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__' :    &lt;br /&gt;
    pass&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Exception, raise, try ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{cadreR|1=&lt;br /&gt;
Lire d'abord [[#goodWay|La bonne façon de gérer les exceptions]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== solution élégante pour tracer et informer ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Exemple  d'utilisation&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
    def debugInfo( pm ):&lt;br /&gt;
        global debugIndex&lt;br /&gt;
        traceback.format_stack()&lt;br /&gt;
        # frame,filename, num, func = inspect.getouterframes(&lt;br /&gt;
        #                                     inspect.currentframe())[1][:4]&lt;br /&gt;
        debugIndex += 1&lt;br /&gt;
        print(&amp;quot;&amp;quot;)&lt;br /&gt;
        print(&amp;quot;id(pm)&amp;quot;, id(pm) )&lt;br /&gt;
        print(&amp;quot;debugIndex&amp;quot;,debugIndex)&lt;br /&gt;
        for ll in traceback.format_stack()[:-1] :&lt;br /&gt;
            print( &amp;quot;    &amp;quot;+ll )&lt;br /&gt;
        print(pm)&lt;br /&gt;
        print(&amp;quot;%s&amp;quot; %(pm.onGetInfo))&lt;br /&gt;
        print(&amp;quot;%s %s&amp;quot; %(pm.pressureDropMaxTime, pm.pressureDropMax ))&lt;br /&gt;
        print(&amp;quot;Enter&amp;quot;);input()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
import traceback&lt;br /&gt;
import sys&lt;br /&gt;
from testLib import exceptionProcess&lt;br /&gt;
                &lt;br /&gt;
def myFunction2( a ):&lt;br /&gt;
    myFunction( a )&lt;br /&gt;
&lt;br /&gt;
class MyClass :&lt;br /&gt;
    def __init__(self,a):&lt;br /&gt;
        self.a = a&lt;br /&gt;
    def do(self):&lt;br /&gt;
        try :&lt;br /&gt;
            a = self.a / 0             &lt;br /&gt;
        except Exception as err :&lt;br /&gt;
            errMsg = exceptionProcess(err, sys.exc_info(), &lt;br /&gt;
                                                    traceback.format_stack() )&lt;br /&gt;
            print(errMsg)&lt;br /&gt;
            exit(1)&lt;br /&gt;
        &lt;br /&gt;
def myFunction( a ):&lt;br /&gt;
    cl = MyClass(a)&lt;br /&gt;
    cl.do()&lt;br /&gt;
    print(&amp;quot;End of myFunction&amp;quot;)        &lt;br /&gt;
        &lt;br /&gt;
if __name__ == '__main__' :&lt;br /&gt;
    pass&lt;br /&gt;
    myFunction2( 3 )&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{code||lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
import inspect&lt;br /&gt;
import traceback&lt;br /&gt;
################################################################################&lt;br /&gt;
def exceptionProcess(err, exeInfo, lastStack ):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
import sys&lt;br /&gt;
import traceback&lt;br /&gt;
import inspect&lt;br /&gt;
    &lt;br /&gt;
use :&lt;br /&gt;
errMsg = exceptionProcess(err, sys.exc_info(), traceback.format_stack() )&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;    &lt;br /&gt;
    frame,filename, num, func = inspect.getouterframes(&lt;br /&gt;
                                            inspect.currentframe())[1][:4]    &lt;br /&gt;
    last =  traceback.format_list(traceback.extract_tb(exeInfo[2]))[0]&lt;br /&gt;
    history = lastStack&lt;br /&gt;
    txt = &amp;quot;&amp;quot;&lt;br /&gt;
    for x in history[:-1] :&lt;br /&gt;
        txt += x&lt;br /&gt;
    txt += last&lt;br /&gt;
    txt += &amp;quot;catched p:%s\nline:%s func:%s\n&amp;quot; % (filename, num, func)    &lt;br /&gt;
    txt += &amp;quot;ERROR &amp;quot; + str(err)    &lt;br /&gt;
    return txt&lt;br /&gt;
################################################################################&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Obtenir nom de fichier, numéro de ligne et nom de fonction ====&lt;br /&gt;
===== Cas simple mais non utile =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
import inspect&lt;br /&gt;
&lt;br /&gt;
raisehead = &amp;quot;Error in %s:%s:%s\n&amp;quot; %inspect.getframeinfo(inspect.currentframe())[:3]&lt;br /&gt;
raise xmlBaseError(&amp;quot;%sNo valid cardinality=%s for node named grammar in grammar&amp;quot; %(raisehead,node_nb)) &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Obtenir nom de fichier, numéro de ligne et nom de fonction de l'appelant  =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
class xmlBaseError( Exception ) :&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        frame,filename, num, func = inspect.getouterframes(inspect.currentframe())[1][:4]&lt;br /&gt;
        path, name = os.path.split(filename)&lt;br /&gt;
        head=&amp;quot;%s:%s:%s\n    &amp;quot; % ( name, num, func)&lt;br /&gt;
        self.value = head+value&lt;br /&gt;
    def __str__(self):&lt;br /&gt;
        return self.value&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Un exemple simple pour tout exceptions en affichant la trace ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
try :&lt;br /&gt;
    raise ...&lt;br /&gt;
&lt;br /&gt;
except SomeException as err:&lt;br /&gt;
    errtrbk = traceback.format_exc()&lt;br /&gt;
    print &amp;quot;ERROR:\n%s\%s&amp;quot; %(str(err),errtrbk))&lt;br /&gt;
&lt;br /&gt;
    print u&amp;quot;MyException raised&amp;quot;, e.__class__.__name__, e&lt;br /&gt;
else :&lt;br /&gt;
    print u&amp;quot;Unkown exeption :&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Un exemple avec importation ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
exception_test.py  :&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
class MyException( Exception ) :&lt;br /&gt;
    pass&lt;br /&gt;
}}&lt;br /&gt;
fonctions.py :  &lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
from exception_test import MyException&lt;br /&gt;
&lt;br /&gt;
def f() :&lt;br /&gt;
    raise MyException(u&amp;quot;test&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
raise.py :&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
from exception_test import MyException&lt;br /&gt;
from fonctions import f&lt;br /&gt;
&lt;br /&gt;
try :&lt;br /&gt;
    f()&lt;br /&gt;
except MyException,e :&lt;br /&gt;
    print u&amp;quot;MyException raised&amp;quot;, e.__class__.__name__, e&lt;br /&gt;
else :&lt;br /&gt;
    print u&amp;quot;Unkown exeption&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Résultats :&lt;br /&gt;
{{code|colNb=70|lang=text|code=&lt;br /&gt;
MyException raised MyException test&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Options en ligne de commande ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: ISO8859-1 -*-&lt;br /&gt;
&lt;br /&gt;
import os,sys, getopt&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# Help&lt;br /&gt;
################################################################################&lt;br /&gt;
def help() :&lt;br /&gt;
    print u&amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
Help on %(app)s :&lt;br /&gt;
-------------------    &lt;br /&gt;
%(app)s -x -x AAA --XXXX --XXXX AAAA  &lt;br /&gt;
    -h :&lt;br /&gt;
        print this help&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot; % ({&amp;quot;app&amp;quot;:__file__})   &lt;br /&gt;
################################################################################&lt;br /&gt;
# Main&lt;br /&gt;
################################################################################&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__' :&lt;br /&gt;
    short = u&amp;quot;xh&amp;quot;&lt;br /&gt;
    long = []&lt;br /&gt;
    opts,args=getopt.getopt( sys.argv[1:],short, long)&lt;br /&gt;
    options = list()&lt;br /&gt;
    for opt,val in opts:&lt;br /&gt;
        options.append( opt )&lt;br /&gt;
    &lt;br /&gt;
    for opt,val in opts:&lt;br /&gt;
        #if opt==u'-x' :&lt;br /&gt;
        #    ...        &lt;br /&gt;
        #if opt==u'--XXXXXX' :&lt;br /&gt;
        #    ...   &lt;br /&gt;
        pass&lt;br /&gt;
&lt;br /&gt;
    if (len(args)==0) and (len(opts)==0) :&lt;br /&gt;
        options.append( u&amp;quot;-h&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
    if u'-h' in options  :&lt;br /&gt;
        help()&lt;br /&gt;
    else :&lt;br /&gt;
        # lauch requests ...&lt;br /&gt;
        pass&lt;br /&gt;
}}&lt;br /&gt;
}}googWay&lt;br /&gt;
&lt;br /&gt;
=== Options en ligne de commande : getopt, help, CParams ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
generated by {{m|gen_main_options.py}} :&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
#***********************************************************&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
TODO&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
import getopt&lt;br /&gt;
#import string&lt;br /&gt;
#import re&lt;br /&gt;
#import time&lt;br /&gt;
#import shutil&lt;br /&gt;
################################################################################&lt;br /&gt;
# Version&lt;br /&gt;
################################################################################&lt;br /&gt;
APP_PATH, APP_NAME = os.path.split(__file__)&lt;br /&gt;
VERSION = u&amp;quot;0.1.0&amp;quot;&lt;br /&gt;
################################################################################&lt;br /&gt;
# Exceptions&lt;br /&gt;
################################################################################&lt;br /&gt;
class CAppException(Exception):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
the exception class of the module&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
################################################################################&lt;br /&gt;
# The process&lt;br /&gt;
################################################################################&lt;br /&gt;
def do_someThing(params):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
the main process&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    print params.longParamVal&lt;br /&gt;
    raise CAppException(&amp;quot;not good for us&amp;quot;)&lt;br /&gt;
################################################################################&lt;br /&gt;
# params&lt;br /&gt;
################################################################################&lt;br /&gt;
class CParam(object):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
parameters of the process&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
initialize all default values of parameters&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        self.errorMsg = &amp;quot;&amp;quot;&lt;br /&gt;
        self.shortParamBool = None&lt;br /&gt;
        self.shortParamVal = None&lt;br /&gt;
        self.longParamBool = None&lt;br /&gt;
        self.longParamVal = None&lt;br /&gt;
&lt;br /&gt;
    def write_errorOnStdOutput(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
print the parameter errors&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        for ms in self.errorMsg.split('\n'):&lt;br /&gt;
            if ms.strip() != &amp;quot;&amp;quot;:&lt;br /&gt;
                print &amp;quot;ERROR: %s&amp;quot; % ms&lt;br /&gt;
        exit(1)&lt;br /&gt;
&lt;br /&gt;
    def checkParam(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
check parameters&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        ok = True&lt;br /&gt;
        self.errorMsg = &amp;quot;&amp;quot;&lt;br /&gt;
        if self.shortParamBool != None:&lt;br /&gt;
            ok = True&lt;br /&gt;
            self.errorMsg += &amp;quot; ... \n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if self.shortParamVal != None:&lt;br /&gt;
            ok = True&lt;br /&gt;
            self.errorMsg += &amp;quot; ... \n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if self.longParamBool != None:&lt;br /&gt;
            ok = True&lt;br /&gt;
            self.errorMsg += &amp;quot; ... \n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if self.longParamVal != None:&lt;br /&gt;
            ok = True&lt;br /&gt;
            self.errorMsg += &amp;quot; ... \n&amp;quot;&lt;br /&gt;
        if not ok:&lt;br /&gt;
            self.write_errorOnStdOutput()&lt;br /&gt;
        return ok&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# Help&lt;br /&gt;
################################################################################&lt;br /&gt;
def write_helpOnStdOutput():&lt;br /&gt;
    u&amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
print the help of the application&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    print u&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Help on %(app)s:&lt;br /&gt;
-------------------&lt;br /&gt;
* %(app)s version %(version)s&lt;br /&gt;
    %(app)s -h&lt;br /&gt;
&lt;br /&gt;
* Options:&lt;br /&gt;
    -h:&lt;br /&gt;
      Print this help.&lt;br /&gt;
    -b&lt;br /&gt;
      ...&lt;br /&gt;
    -v &amp;lt;val&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
    --longBool&lt;br /&gt;
      ...&lt;br /&gt;
    --longVal &amp;lt;val&amp;gt;&lt;br /&gt;
      ...&amp;quot;&amp;quot;&amp;quot; % ({u&amp;quot;app&amp;quot;: APP_NAME, u&amp;quot;version&amp;quot;: VERSION})&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# Main&lt;br /&gt;
################################################################################&lt;br /&gt;
def executeMainProcess():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
    execute main process&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    try:&lt;br /&gt;
        appParam = CParam()&lt;br /&gt;
        shortOption = u&amp;quot;hsv:&amp;quot;&lt;br /&gt;
        longOption = [u&amp;quot;longBool&amp;quot;, u&amp;quot;longVal=&amp;quot;]&lt;br /&gt;
        dohelp = False&lt;br /&gt;
&lt;br /&gt;
        opts = getopt.getopt(sys.argv[1:], shortOption, longOption)[0]&lt;br /&gt;
&lt;br /&gt;
        for opt, val in opts:&lt;br /&gt;
&lt;br /&gt;
            if opt == u'-h':&lt;br /&gt;
                dohelp = True&lt;br /&gt;
                write_helpOnStdOutput()&lt;br /&gt;
&lt;br /&gt;
            if opt == u'-s':&lt;br /&gt;
                appParam.shortParamBool = True&lt;br /&gt;
&lt;br /&gt;
            if opt == u'-v':&lt;br /&gt;
                appParam.shortParamVal = val&lt;br /&gt;
&lt;br /&gt;
            if opt == u'--longBool':&lt;br /&gt;
                appParam.longParamBool = True&lt;br /&gt;
&lt;br /&gt;
            if opt == u'--longVal':&lt;br /&gt;
                appParam.longParamVal = val&lt;br /&gt;
&lt;br /&gt;
            else:&lt;br /&gt;
                pass&lt;br /&gt;
&lt;br /&gt;
        appOk = appParam.checkParam()&lt;br /&gt;
        if (not dohelp) and appOk:&lt;br /&gt;
            do_someThing(appParam)&lt;br /&gt;
&lt;br /&gt;
    except Exception as ex:&lt;br /&gt;
        info = sys.exc_info()&lt;br /&gt;
        raise CAppException(&amp;quot;\nERRORS %s&amp;quot; % str(ex)), None, info[2]&lt;br /&gt;
&lt;br /&gt;
if __name__ == u'__main__':&lt;br /&gt;
    executeMainProcess()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== execute - command - popen === &lt;br /&gt;
{{parW|1={{Alerte|texte=Utiliser plutôt [[#subprocess.Popen|subrocess]] (os.pepen est obsolète)}}&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
def execute( command  ) :&lt;br /&gt;
    print &amp;quot;cmd : &amp;quot;, command&lt;br /&gt;
    e = os.popen( command + &amp;quot; 2&amp;gt;&amp;amp;1&amp;quot; , &amp;quot;r&amp;quot; )&lt;br /&gt;
    out = e.read()    &lt;br /&gt;
    rc =  e.close()&lt;br /&gt;
    if rc == None :&lt;br /&gt;
        rc= 0&lt;br /&gt;
    std_out = out&lt;br /&gt;
    std_err=&amp;quot;See Standard out&amp;quot;&lt;br /&gt;
    return rc, std_out, std_err&lt;br /&gt;
}}&lt;br /&gt;
En mode pas à pas; interception de la sortie standard en cours&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
import re&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
pat = re.compile(&amp;quot;(\d\/\d)&amp;quot;)&lt;br /&gt;
def do(exe):&lt;br /&gt;
    sys.stdout.flush()&lt;br /&gt;
    try:&lt;br /&gt;
        p = subprocess.Popen(exe, stdout = subprocess.PIPE, stderr = \&lt;br /&gt;
                                                subprocess.STDOUT, shell = True)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print err&lt;br /&gt;
        sys.stdout.flush()&lt;br /&gt;
    encore = True&lt;br /&gt;
    while(encore):&lt;br /&gt;
        retcode = p.poll()  # returns None while subprocess is running&lt;br /&gt;
        sys.stdout.flush()&lt;br /&gt;
        line = p.stdout.readline()&lt;br /&gt;
        val = pat.findall(line)&lt;br /&gt;
        if len(val) &amp;gt; 0:&lt;br /&gt;
            print val[0]&lt;br /&gt;
        sys.stdout.flush()&lt;br /&gt;
        encore = retcode == None&lt;br /&gt;
    print &amp;quot;end&amp;quot;&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    print &amp;quot;start&amp;quot;&lt;br /&gt;
    do(&amp;quot;python cmd.py&amp;quot;)&lt;br /&gt;
    print &amp;quot;end&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
le programme {{mm|cmd.py}}&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
nb = 10&lt;br /&gt;
for x in range(nb):&lt;br /&gt;
    print &amp;quot;toto %d/%d&amp;quot; % (x, nb)&lt;br /&gt;
    sys.stdout.flush()&lt;br /&gt;
    time.sleep(1.0)&lt;br /&gt;
}}  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== execute - command - subprocess - popen ===&lt;br /&gt;
{{parW|1={{id|subprocess.Popen}}&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
def executeInShell( shellcmd  ) :&lt;br /&gt;
    process = subprocess.Popen( shellcmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE )    &lt;br /&gt;
    stdoutdata, stderrdata = process.communicate()        &lt;br /&gt;
    return process.returncode, stdoutdata, stderrdata &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Exécution en mode synchrone avec capture progressive de &lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
import re&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
# patTelemacIteration = re.compile(&amp;quot;(\d+\/\d+)&amp;quot;)&lt;br /&gt;
patTelemacIteration = re.compile(&amp;quot;ITERATION +(\d+) +TEMPS&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def executeExternalShellCommand(exe):&lt;br /&gt;
    sys.stdout.flush()&lt;br /&gt;
    try:&lt;br /&gt;
        p = subprocess.Popen(exe, stdout = subprocess.PIPE, stderr = \&lt;br /&gt;
                                                subprocess.STDOUT, shell = True)&lt;br /&gt;
    except Exception as err:&lt;br /&gt;
        print err&lt;br /&gt;
        sys.stdout.flush()&lt;br /&gt;
    encore = True&lt;br /&gt;
    while(encore):&lt;br /&gt;
        retcode = p.poll()  # returns None while subprocess is running&lt;br /&gt;
        sys.stdout.flush()&lt;br /&gt;
        line = p.stdout.readline()&lt;br /&gt;
        print line&lt;br /&gt;
        val = patTelemacIteration.findall(line)&lt;br /&gt;
        print val&lt;br /&gt;
        if len(val) &amp;gt; 0:&lt;br /&gt;
            print int(val[0])&lt;br /&gt;
        sys.stdout.flush()&lt;br /&gt;
        encore = retcode == None&lt;br /&gt;
    print &amp;quot;end&amp;quot;&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    print &amp;quot;start&amp;quot;&lt;br /&gt;
    executeExternalShellCommand(&amp;quot;cd ...; python cmd.py&amp;quot;)&lt;br /&gt;
    print &amp;quot;end&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
nb = 10&lt;br /&gt;
for x in range(nb):&lt;br /&gt;
    print &amp;quot; ITERATION      %d  TEMPS : 15 MN   0.0000 S   (      900.0000 S) IT\&lt;br /&gt;
ERATION      200  TEMPS&amp;quot; % (x)&lt;br /&gt;
    sys.stdout.flush()&lt;br /&gt;
    time.sleep(1.0)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Get directly the output ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
result = subprocess.check_output(&amp;quot;gsettings get org.gnome.desktop.background picture-uri&amp;quot;, shell=True)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== isLanched ===&lt;br /&gt;
{{parW|1=&amp;lt;span id=&amp;quot;subprocess.Popen&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
&lt;br /&gt;
def isLanched( procName ):&lt;br /&gt;
    import psutil, string&lt;br /&gt;
    pid = os.getpid()&lt;br /&gt;
    patText = re.escape(procName)&lt;br /&gt;
    pat = re.compile( &amp;quot;.*%s.*&amp;quot; % patText )&lt;br /&gt;
    ok = False&lt;br /&gt;
    for proc in psutil.process_iter():&lt;br /&gt;
        if pid != proc.pid :&lt;br /&gt;
            if pat.match( string.join(proc.cmdline(),&amp;quot; &amp;quot;) )  :&lt;br /&gt;
                ok=True&lt;br /&gt;
    return ok&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Ajouter des répertoire dans le path python en dynamique ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append(&amp;quot;/home/me/mypy&amp;quot;) &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== La commande print ==&lt;br /&gt;
=== Afficher sur la sortie d'erreurs (stderr) ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
print &amp;gt;&amp;gt; sys.stderr, &amp;quot;Error ...&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
en Python 3 :&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
print(5, &amp;quot;toto&amp;quot;, file=sys.stderr)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Sa propre fonction:&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def conErrOut(*args):&lt;br /&gt;
    print(*args, file=sys.stderr, **kwargs)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Design pattern, POO, Algorithmes ==&lt;br /&gt;
=== POO Programmation orientée objet ===&lt;br /&gt;
==== class attribute - instance attribute ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
class CObj(object):&lt;br /&gt;
  classAttr = 0&lt;br /&gt;
  def __init__(self, name, instance_attr):&lt;br /&gt;
    self.name = name&lt;br /&gt;
    self.objAttr = instance_attr&lt;br /&gt;
  def __str__(self):&lt;br /&gt;
    return &amp;quot;%s %s %s %s&amp;quot; %(self.name, self.classAttr, self.objAttr, self.__dict__)&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    &lt;br /&gt;
    obj1 = CObj(&amp;quot;A&amp;quot;, 1)&lt;br /&gt;
    obj2 = CObj(&amp;quot;B&amp;quot;, 2)&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    print (CObj.classAttr)&lt;br /&gt;
    print (obj1.classAttr)&lt;br /&gt;
    print (obj2.classAttr)&lt;br /&gt;
    print( obj1 )&lt;br /&gt;
    print( obj2 )&lt;br /&gt;
    print()&lt;br /&gt;
    &lt;br /&gt;
    CObj.classAttr += 1&lt;br /&gt;
    print (CObj.classAttr)&lt;br /&gt;
    print (obj1.classAttr)&lt;br /&gt;
    print (obj2.classAttr)    &lt;br /&gt;
    print( obj1 )&lt;br /&gt;
    print( obj2 )&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
    obj1.classAttr += 1    # ATTENTION PIEGE&lt;br /&gt;
    print (CObj.classAttr)&lt;br /&gt;
    print (obj1.classAttr)&lt;br /&gt;
    print (obj2.classAttr)    &lt;br /&gt;
    print( obj1 )&lt;br /&gt;
    print( obj2 )&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
    obj2.classAttr += 1    # ATTENTION PIEGE&lt;br /&gt;
    print (CObj.classAttr)&lt;br /&gt;
    print (obj1.classAttr)&lt;br /&gt;
    print (obj2.classAttr)    &lt;br /&gt;
    print( obj1 )&lt;br /&gt;
    print( obj2 )&lt;br /&gt;
    print()&lt;br /&gt;
	&lt;br /&gt;
    CObj.classAttr += 1&lt;br /&gt;
    print (CObj.classAttr)	&lt;br /&gt;
    print (obj1.classAttr)&lt;br /&gt;
    print (obj2.classAttr)    &lt;br /&gt;
    print( obj1 )&lt;br /&gt;
    print( obj2 )&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
    print (CObj.objAttr)   # ERROR&lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
0&lt;br /&gt;
0&lt;br /&gt;
0&lt;br /&gt;
A 0 1 {'objAttr': 1, 'name': 'A'}&lt;br /&gt;
B 0 2 {'objAttr': 2, 'name': 'B'}&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
1&lt;br /&gt;
1&lt;br /&gt;
A 1 1 {'objAttr': 1, 'name': 'A'}&lt;br /&gt;
B 1 2 {'objAttr': 2, 'name': 'B'}&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
1&lt;br /&gt;
A 2 1 {'objAttr': 1, 'name': 'A', 'classAttr': 2}&lt;br /&gt;
B 1 2 {'objAttr': 2, 'name': 'B'}&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
2&lt;br /&gt;
A 2 1 {'objAttr': 1, 'name': 'A', 'classAttr': 2}&lt;br /&gt;
B 2 2 {'objAttr': 2, 'name': 'B', 'classAttr': 2}&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
2&lt;br /&gt;
2&lt;br /&gt;
A 2 1 {'objAttr': 1, 'name': 'A', 'classAttr': 2}&lt;br /&gt;
B 2 2 {'objAttr': 2, 'name': 'B', 'classAttr': 2}&lt;br /&gt;
&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;testP.py&amp;quot;, line 55, in &amp;lt;module&amp;gt;&lt;br /&gt;
    print (CObj.objAttr)&lt;br /&gt;
AttributeError: type object 'CObj' has no attribute 'objAttr'&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Sérialisation ===&lt;br /&gt;
==== pickle ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
################################################################################&lt;br /&gt;
import pickle&lt;br /&gt;
def objToFile(  obj, fileName  ):&lt;br /&gt;
    with open(fileName, 'wb') as handle:&lt;br /&gt;
        pickle.dump( obj, handle, protocol=pickle.HIGHEST_PROTOCOL)&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
def objFormFile(  fileName  ):&lt;br /&gt;
    with open(fileName, 'rb') as handle:&lt;br /&gt;
        obj = pickle.load(handle)&lt;br /&gt;
    return obj&lt;br /&gt;
################################################################################&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== POO ===&lt;br /&gt;
==== CDictList ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class CDictList :&lt;br /&gt;
    def __init__( self, name ) :&lt;br /&gt;
        self.name = name&lt;br /&gt;
        self.d = dict()&lt;br /&gt;
        self.l = list()&lt;br /&gt;
        &lt;br /&gt;
    def add( self, obj, name  ) :&lt;br /&gt;
        if name in self.d :&lt;br /&gt;
            raise Exception( &lt;br /&gt;
                    &amp;quot;object named '%s' is already in CDictList named '%s'&amp;quot; &lt;br /&gt;
                    % ( name, self.name ) )&lt;br /&gt;
        self.d[ name ] = obj&lt;br /&gt;
        self.l.append( obj ) &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Génération de code ===&lt;br /&gt;
==== Générer une fonction ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
correctionCoefficient=[ (-5000,-5000), (-4000,-4800), (-1000,-3000), (-50,-1000), (0,0), (400, 5), (500, 10), (1000, 1000),(5000, 5000) ]&lt;br /&gt;
def createCorrectionFunction(  ) :&lt;br /&gt;
    fileName=&amp;quot;func.py&amp;quot;&lt;br /&gt;
    txt = &amp;quot;#!/usr/bin/python\n&amp;quot;&lt;br /&gt;
    txt += &amp;quot;# -*- coding: UTF-8 -*-\n&amp;quot;    &lt;br /&gt;
    txt += &amp;quot;def hcorection( val ) :\n&amp;quot;&lt;br /&gt;
    txt += &amp;quot;    nval=val\n&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    a=correctionCoefficient[0]&lt;br /&gt;
    for b in correctionCoefficient[1:] :     &lt;br /&gt;
        txt += &amp;quot;    if (val &amp;gt; %d) and (val &amp;lt;=%d) :\n&amp;quot; %( a[0], b[0] )&lt;br /&gt;
        txt += &amp;quot;        nval =  ( val- %f )*%f +  %f\n&amp;quot; %( a[0], float(b[1]-a[1])/(b[0]-a[0])  ,a[1] )&lt;br /&gt;
        a=b&lt;br /&gt;
    txt += &amp;quot;    return nval\n&amp;quot;&lt;br /&gt;
    tofile( fileName, txt )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ce qui donne la fonction suivante :&lt;br /&gt;
{{fig|Exemple|create_function_ex01.png||512px}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Design pattern ===&lt;br /&gt;
==== Singleton ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Voici un petit code écrit en python qui explique comment écrire un singleton en langage python. Notez bien que dans la méthode {{m|__init__}} il faut faire quelques vérifications notamment avec les listes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class CSingleton( object ):&lt;br /&gt;
    class_instance = None&lt;br /&gt;
    def __init__( self, a ):&lt;br /&gt;
        print &amp;quot;CSingleton init&amp;quot;&lt;br /&gt;
        self.vitesse = a&lt;br /&gt;
        if not hasattr( self, &amp;quot;alist&amp;quot;) :&lt;br /&gt;
            self.alist = list()&lt;br /&gt;
    &lt;br /&gt;
    def __new__( typ, *args, **kwargs ):&lt;br /&gt;
        print &amp;quot;CSingleton new&amp;quot;, typ.class_instance        &lt;br /&gt;
        if typ.class_instance == None :&lt;br /&gt;
            obj = object.__new__( typ, *args, **kwargs)&lt;br /&gt;
            typ.class_instance = obj&lt;br /&gt;
        else :&lt;br /&gt;
            obj = typ.class_instance        &lt;br /&gt;
        return obj&lt;br /&gt;
&lt;br /&gt;
    def addObject(self, obj):&lt;br /&gt;
        self.alist.append( obj )&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__' :&lt;br /&gt;
    a = CSingleton( 1 )&lt;br /&gt;
    a.addObject( &amp;quot;Lundi&amp;quot; )&lt;br /&gt;
    print &amp;quot;a.vitesse=&amp;quot;,a.vitesse&lt;br /&gt;
    print &amp;quot;a.alist=&amp;quot;,a.alist&lt;br /&gt;
&lt;br /&gt;
    b = CSingleton( 2 )&lt;br /&gt;
    b.addObject( &amp;quot;Mardi&amp;quot; )&lt;br /&gt;
    print &amp;quot;b.vitesse=&amp;quot;,b.vitesse&lt;br /&gt;
    print &amp;quot;b.alist=&amp;quot;,b.alist&lt;br /&gt;
&lt;br /&gt;
    c = CSingleton( 3 )&lt;br /&gt;
    c.addObject( &amp;quot;Mercredi&amp;quot; )&lt;br /&gt;
    print &amp;quot;c.vitesse=&amp;quot;,c.vitesse&lt;br /&gt;
    print &amp;quot;c.alist=&amp;quot;,c.alist&lt;br /&gt;
&lt;br /&gt;
    print &amp;quot;a.vitesse=&amp;quot;,a.vitesse&lt;br /&gt;
    print &amp;quot;a.alist=&amp;quot;,a.alist&lt;br /&gt;
    print &amp;quot;b.vitesse=&amp;quot;,b.vitesse&lt;br /&gt;
    print &amp;quot;b.alist=&amp;quot;,b.alist&lt;br /&gt;
    print &amp;quot;c.vitesse=&amp;quot;,c.vitesse&lt;br /&gt;
    print &amp;quot;c.alist=&amp;quot;,c.alist&lt;br /&gt;
    print &amp;quot;id(a)=&amp;quot;,id(a)&lt;br /&gt;
    print &amp;quot;id(b)=&amp;quot;,id(b)&lt;br /&gt;
    print &amp;quot;id(c)=&amp;quot;,id(c)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce qui donne :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python singleton.py&lt;br /&gt;
CSingleton new None&lt;br /&gt;
CSingleton init&lt;br /&gt;
a.vitesse= 1&lt;br /&gt;
a.alist= ['Lundi']&lt;br /&gt;
CSingleton new &amp;lt;__main__.CSingleton object at 0xb7cf8ecc&amp;gt;&lt;br /&gt;
CSingleton init&lt;br /&gt;
b.vitesse= 2&lt;br /&gt;
b.alist= ['Lundi', 'Mardi']&lt;br /&gt;
CSingleton new &amp;lt;__main__.CSingleton object at 0xb7cf8ecc&amp;gt;&lt;br /&gt;
CSingleton init&lt;br /&gt;
c.vitesse= 3&lt;br /&gt;
c.alist= ['Lundi', 'Mardi', 'Mercredi']&lt;br /&gt;
a.vitesse= 3&lt;br /&gt;
a.alist= ['Lundi', 'Mardi', 'Mercredi']&lt;br /&gt;
b.vitesse= 3&lt;br /&gt;
b.alist= ['Lundi', 'Mardi', 'Mercredi']&lt;br /&gt;
c.vitesse= 3&lt;br /&gt;
c.alist= ['Lundi', 'Mardi', 'Mercredi']&lt;br /&gt;
id(a)= 3083833036&lt;br /&gt;
id(b)= 3083833036&lt;br /&gt;
id(c)= 3083833036&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Algorithmes ===&lt;br /&gt;
==== resgression linéaire en 3 dimensions pour obtenir un plan optimum pour une nuage de points ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=python|code=&lt;br /&gt;
import numpy as np&lt;br /&gt;
################################################################################&lt;br /&gt;
nbpts = 10 # nombre de points par axe&lt;br /&gt;
a = 5. # paramètres du plan&lt;br /&gt;
b = 3.&lt;br /&gt;
c = 2.&lt;br /&gt;
d = 10.&lt;br /&gt;
sigma = 0.1 # écart type&lt;br /&gt;
################################################################################&lt;br /&gt;
def planXyz(x, y, z,  A):&lt;br /&gt;
    return A[0]*x + A[1]*y + A[2]*z + A[3]&lt;br /&gt;
################################################################################&lt;br /&gt;
def lienarRegressionXyz(X,Y,Z):&lt;br /&gt;
    points = np.hstack(&lt;br /&gt;
            (&lt;br /&gt;
                X, Y, Z, np.ones_like(X) &lt;br /&gt;
            ) &lt;br /&gt;
        )&lt;br /&gt;
    resultat = np.linalg.lstsq(points, T)&lt;br /&gt;
    aopt, bopt, copt, dopt = resultat[0]&lt;br /&gt;
    erreur = resultat[1][0]/(nbpts*nbpts)&lt;br /&gt;
    return  aopt, bopt, copt, dopt,erreur &lt;br /&gt;
################################################################################&lt;br /&gt;
x = np.linspace(0, 1, nbpts)&lt;br /&gt;
y = np.linspace(0, 1, nbpts)&lt;br /&gt;
z = np.linspace(0, 1, nbpts)&lt;br /&gt;
&lt;br /&gt;
grilleX, grilleY, grilleZ = np.meshgrid(x, y, z)&lt;br /&gt;
################################################################################&lt;br /&gt;
X = grilleX.flatten().reshape(nbpts*nbpts*nbpts, 1)&lt;br /&gt;
Y = grilleY.flatten().reshape(nbpts*nbpts*nbpts, 1)&lt;br /&gt;
Z = grilleZ.flatten().reshape(nbpts*nbpts*nbpts, 1)&lt;br /&gt;
T = planXyz(X, Y, Z,  (a, b, c, d)) + sigma*np.random.randn(nbpts*nbpts*nbpts, &lt;br /&gt;
                                                                            1)&lt;br /&gt;
################################################################################&lt;br /&gt;
a,b,c,d,e = lienarRegressionXyz(X,Y,Z)&lt;br /&gt;
print( &lt;br /&gt;
    &amp;quot;a=%f b=%f c=%f d=%f χ²=%f&amp;quot; %( a,b,c,d,e ))&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Filtre passe bas - exemple ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=python|code=&lt;br /&gt;
from scipy import signal&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
t = np.linspace(0, 1, 1000, False)  # 1 second&lt;br /&gt;
sig = np.sin(2*np.pi*10*t) + np.sin(2*np.pi*20*t)+1.5&lt;br /&gt;
&lt;br /&gt;
class lpFilter:&lt;br /&gt;
    def __init__(self, fc, fe):&lt;br /&gt;
        self.fc = fc&lt;br /&gt;
        self.fe = fe&lt;br /&gt;
        self.τ = 1/fc&lt;br /&gt;
        self.Te = 1 / fe&lt;br /&gt;
        self.α = self.τ / (self.τ + self.Te)&lt;br /&gt;
    &lt;br /&gt;
    def filter(self, sig):&lt;br /&gt;
        yf_0 = sig[0] &lt;br /&gt;
        yf_1 = yf_0&lt;br /&gt;
        yf = list()&lt;br /&gt;
        for y in sig:&lt;br /&gt;
            yf_0 = self.α * yf_1 + (1-self.α)* y &lt;br /&gt;
            yf_1 = yf_0&lt;br /&gt;
            yf.append(yf_0)&lt;br /&gt;
        return yf&lt;br /&gt;
&lt;br /&gt;
flp = lpFilter( 15, 1000 )&lt;br /&gt;
yf = flp.filter( sig )&lt;br /&gt;
&lt;br /&gt;
plt.plot(t, yf, label='yf')&lt;br /&gt;
plt.plot(t, sig, label='sig')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
}}&lt;br /&gt;
{{fig|Exemple filttre linéaire|filtrePasseBasLineaireExample.png||512px}}&lt;br /&gt;
&lt;br /&gt;
Utilisation de ellip :&lt;br /&gt;
{{codeTr|lang=python|code=&lt;br /&gt;
from scipy import signal&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
t = np.linspace(0, 1, 1000, False)  # 1 second&lt;br /&gt;
sig = np.sin(2*np.pi*10*t) + np.sin(2*np.pi*20*t)+1.5&lt;br /&gt;
&lt;br /&gt;
sos = signal.ellip(8, 1, 100, 5, 'lowpass', fs=1000, output='sos')&lt;br /&gt;
filtered = signal.sosfilt(sos, sig)&lt;br /&gt;
&lt;br /&gt;
plt.plot(t, filtered)&lt;br /&gt;
plt.plot(t, sig)&lt;br /&gt;
plt.show()&lt;br /&gt;
}}&lt;br /&gt;
{{fig|ellip exemple|filtrePasseBasEllipExample.png||512px}}&lt;br /&gt;
&lt;br /&gt;
Diagramme des fréquences:&lt;br /&gt;
{{codeTr|lang=python|code=&lt;br /&gt;
from scipy import signal&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
b, a = signal.ellip(4, 5, 40, 100, 'low', analog=True)&lt;br /&gt;
w, h = signal.freqs(b, a)&lt;br /&gt;
 &lt;br /&gt;
plt.semilogx(w, 20 * np.log10(abs(h)))&lt;br /&gt;
 &lt;br /&gt;
plt.title('Elliptic filter frequency response (rp=5, rs=40)')&lt;br /&gt;
plt.xlabel('Frequency [radians / second]')&lt;br /&gt;
plt.ylabel('Amplitude [dB]')&lt;br /&gt;
plt.margins(0, 0.1)&lt;br /&gt;
plt.grid(which='both', axis='both')&lt;br /&gt;
plt.axvline(100, color='green') # cutoff frequency&lt;br /&gt;
plt.axhline(-40, color='green') # rs&lt;br /&gt;
plt.axhline(-5, color='green') # rp&lt;br /&gt;
plt.show()&lt;br /&gt;
}}&lt;br /&gt;
{{fig|Diagramme des fréquences - ellip exemple|filtrePasseBasDiagrammeDesFrequences.png||512px}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Filtre passe haut - exemple ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&lt;br /&gt;
Utilisation de ellip :&lt;br /&gt;
{{codeTr|lang=python|code=&lt;br /&gt;
from scipy import signal&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
t = np.linspace(0, 1, 1000, False)  # 1 second&lt;br /&gt;
sig = np.sin(2*np.pi*10*t) + np.sin(2*np.pi*20*t)+1.5&lt;br /&gt;
&lt;br /&gt;
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)&lt;br /&gt;
ax1.set_title('10 Hz and 20 Hz sinusoids')&lt;br /&gt;
ax1.axis([0, 1, -2, 3.5])&lt;br /&gt;
 &lt;br /&gt;
ax2.set_title('After 17 Hz high-pass filter')&lt;br /&gt;
ax2.axis([0, 1, -2, 2])&lt;br /&gt;
ax2.set_xlabel('Time [seconds]')&lt;br /&gt;
 &lt;br /&gt;
sos = signal.ellip(8, 1, 100, 17, 'hp', fs=1000, output='sos')&lt;br /&gt;
filtered = signal.sosfilt(sos, sig)&lt;br /&gt;
 &lt;br /&gt;
ax1.plot(t, sig)&lt;br /&gt;
ax2.plot(t, filtered)&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Fonction rapide d'interpolation linéaire - Functor ====&lt;br /&gt;
{{parW|1=[[Algorithmique#fastLinearInterpolationFunctionAsFonctor|algorithmique]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Adapter Rectangle Dans Zone ====&lt;br /&gt;
{{parW|1={{id|AdapterRectangleDansZone}}&lt;br /&gt;
* [[Pascal#AdapterRectangleDansZone|Version en Pascal]]&lt;br /&gt;
{{codeTr|lang=python|code=&lt;br /&gt;
def AdapterRectangleDansZone( zone_x,zone_y,zone_l,zone_h, rect_l, rect_h, rlimte ) :&lt;br /&gt;
  if (zone_h &amp;gt; 0 ) and (rect_h&amp;gt;0) :&lt;br /&gt;
      r1 = zone_l / zone_h&lt;br /&gt;
      r2 = rect_l / rect_h&lt;br /&gt;
      #print r1,r2&lt;br /&gt;
      if r1 &amp;gt;= r2 :&lt;br /&gt;
          if rlimte &amp;gt; 0 :&lt;br /&gt;
              r =  zone_h / rect_h&lt;br /&gt;
              if r &amp;gt; rlimte :&lt;br /&gt;
                  r = rlimte&lt;br /&gt;
                  hh = round( rect_h*r )&lt;br /&gt;
                  ll = round( rect_l*r )&lt;br /&gt;
                  newrect_y = zone_y  +( zone_h-hh ) / 2&lt;br /&gt;
                  newrect_h = hh&lt;br /&gt;
                  newrect_x = zone_x  + ( zone_l-ll ) / 2&lt;br /&gt;
                  newrect_l = ll&lt;br /&gt;
              else :&lt;br /&gt;
                  hh = zone_h&lt;br /&gt;
                  ll = round( zone_h*r2 )&lt;br /&gt;
                  newrect_y = zone_y&lt;br /&gt;
                  newrect_h = hh&lt;br /&gt;
                  newrect_x = zone_x  + ( zone_l-ll ) / 2&lt;br /&gt;
                  newrect_l = ll&lt;br /&gt;
          else :&lt;br /&gt;
            hh = zone_h&lt;br /&gt;
            ll = round( zone_h*r2 )&lt;br /&gt;
            newrect_y = zone_y&lt;br /&gt;
            newrect_h = hh&lt;br /&gt;
            newrect_x = zone_x  + (zone_l-ll) / 2&lt;br /&gt;
            newrect_l = ll&lt;br /&gt;
      else :&lt;br /&gt;
          if rlimte &amp;gt; 0 :&lt;br /&gt;
              r =  zone_l / rect_l&lt;br /&gt;
              if r &amp;gt; rlimte :&lt;br /&gt;
                  r = rlimte&lt;br /&gt;
                  hh = round( rect_h*r )&lt;br /&gt;
                  ll = round( rect_l*r )&lt;br /&gt;
                  newrect_y = zone_y  +( zone_h-hh ) / 2&lt;br /&gt;
                  newrect_h = hh&lt;br /&gt;
                  newrect_x = zone_x  + ( zone_l-ll ) / 2&lt;br /&gt;
                  newrect_l = ll&lt;br /&gt;
              else :&lt;br /&gt;
                  ll = zone_l&lt;br /&gt;
                  hh = round( ll/r2 )&lt;br /&gt;
                  newrect_x = zone_x&lt;br /&gt;
                  newrect_l = ll&lt;br /&gt;
                  newrect_y = zone_y  + ( zone_h-hh ) / 2&lt;br /&gt;
                  newrect_h = hh&lt;br /&gt;
          else :&lt;br /&gt;
              ll = zone_l&lt;br /&gt;
              hh = round( ll/r2 )&lt;br /&gt;
              newrect_x = zone_x&lt;br /&gt;
              newrect_l = ll&lt;br /&gt;
              newrect_y = zone_y  + ( zone_h-hh ) / 2&lt;br /&gt;
              newrect_h = hh&lt;br /&gt;
  else :&lt;br /&gt;
      newrect_x = zone_x&lt;br /&gt;
      newrect_l = 0&lt;br /&gt;
      newrect_y = zone_y&lt;br /&gt;
      newrect_h = 0&lt;br /&gt;
&lt;br /&gt;
  return newrect_x,newrect_y,newrect_l,newrect_h&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Fonction de comparaison pour les tri : sort ====&lt;br /&gt;
===== Avec python 2 =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
La comparaison suivante range dans l'ordre des valeurs croissantes:&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def myCmp(pntA, pntB):&lt;br /&gt;
    rc = 0&lt;br /&gt;
    if pntA &amp;lt; pntB:&lt;br /&gt;
        rc = -1&lt;br /&gt;
    elif pntA &amp;gt; pntB:&lt;br /&gt;
        rc = 1&lt;br /&gt;
    return rc&lt;br /&gt;
&lt;br /&gt;
vals = [ 1, 5, 6, 0, -15 ]&lt;br /&gt;
vals.sort(myCmp)&lt;br /&gt;
print vals&lt;br /&gt;
}}&lt;br /&gt;
ce qui donne :&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
[-15, 0, 1, 5, 6]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
===== Avec Python 3 =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Le tri se fait dans l'ordre croissant !&lt;br /&gt;
&lt;br /&gt;
Pour les tuples ou listes imbriqués, tri sur l'indice n&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
myList = sorted(myList, key = lambda els: els[n])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
sprocketTeethPointList1.sort( key = lambda pnt: pnt.angle)&lt;br /&gt;
}}&lt;br /&gt;
ou&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
sprocketTeethPointList1 = sorted(sprocketTeethPointList1, &lt;br /&gt;
                             key = lambda pnt: pnt.angle)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
ou&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def angledPointKey(key ):&lt;br /&gt;
    return key.angle&lt;br /&gt;
&lt;br /&gt;
sprocketTeethPointList1 = sorted(sprocketTeethPointList1, key = angledPointKey )&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ou &lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def cmpIntAPy3( aa ):&lt;br /&gt;
    a = aa.serviceDate&lt;br /&gt;
    if a == None :&lt;br /&gt;
        a = aa.prototypeDate    &lt;br /&gt;
    return a&lt;br /&gt;
&lt;br /&gt;
self.intAs = sorted(self.intAs, key = cmpIntAPy3 )&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Avec Python 3 à la manière de Python 2=====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def angledPointClass( myCmpFunc ) :&lt;br /&gt;
    class K :&lt;br /&gt;
        def __init__(self, obj, *args):&lt;br /&gt;
            self.obj = obj&lt;br /&gt;
        def __lt__(self, other):&lt;br /&gt;
            return myCmpFunc(self.obj, other.obj) &amp;lt; 0&lt;br /&gt;
        def __gt__(self, other):&lt;br /&gt;
            return myCmpFunc(self.obj, other.obj) &amp;gt; 0&lt;br /&gt;
        def __eq__(self, other):&lt;br /&gt;
            return myCmpFunc(self.obj, other.obj) == 0&lt;br /&gt;
        def __le__(self, other):&lt;br /&gt;
            return myCmpFunc(self.obj, other.obj) &amp;lt;= 0&lt;br /&gt;
        def __ge__(self, other):&lt;br /&gt;
            return myCmpFunc(self.obj, other.obj) &amp;gt;= 0&lt;br /&gt;
        def __ne__(self, other):&lt;br /&gt;
            return myCmpFunc(self.obj, other.obj) != 0&lt;br /&gt;
    return K        &lt;br /&gt;
&lt;br /&gt;
def angledPointCmp(pntA, pntB):&lt;br /&gt;
    rc = 0&lt;br /&gt;
    pntA = pntA.angle &lt;br /&gt;
    pntB = pntB.angle&lt;br /&gt;
    if pntA &amp;lt; pntB:&lt;br /&gt;
        rc = -1&lt;br /&gt;
    elif pntA &amp;gt; pntB:&lt;br /&gt;
        rc = 1&lt;br /&gt;
    return rc   &lt;br /&gt;
&lt;br /&gt;
sprocketTeethPointList1.sort( key=angledPointClass(angledPointCmp) )&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Clavier, Input device ==&lt;br /&gt;
=== get_char ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
voir {{m|curses.window.getch()}} pour une implémentation sous linux.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if os.name==&amp;quot;nt&amp;quot; :&lt;br /&gt;
    import msvcrt&lt;br /&gt;
    def get_char() :&lt;br /&gt;
        if msvcrt.kbhit() :&lt;br /&gt;
            return msvcrt.getch()&lt;br /&gt;
        else :&lt;br /&gt;
            return None&lt;br /&gt;
else :&lt;br /&gt;
    print &amp;quot;Error : No get_char()&amp;quot;&lt;br /&gt;
    exit(1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
=== tell me Yes or No ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def tellmeYesNo( msg ):&lt;br /&gt;
    encore = 1&lt;br /&gt;
    choices=['y', 'n', 'yes', 'no']&lt;br /&gt;
    schoices='/'.join( choices )&lt;br /&gt;
    rep=None&lt;br /&gt;
    while encore :&lt;br /&gt;
        rep=raw_input( msg+'(%s): ' % schoices ).lower()&lt;br /&gt;
        encore = not rep in choices&lt;br /&gt;
        if encore :&lt;br /&gt;
            print &amp;quot;Choices are : '%s'&amp;quot; %( schoices )&lt;br /&gt;
    return rep&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
== Interface graphique ==&lt;br /&gt;
=== [[PyQt]] ===&lt;br /&gt;
=== Sous Windows sans console ou terminal  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* voir [[Introduction au MS-DOS|noTerminal]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Exception et Erreurs ==&lt;br /&gt;
=== {{id|goodWay}}La bonne façon de gérer les exception pour un débogage ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
import re, os, sys&lt;br /&gt;
class CMyException( Exception ) :&lt;br /&gt;
    pass&lt;br /&gt;
def raiseCMyException( e, msg ) :&lt;br /&gt;
    raise CMyException(&amp;quot;\nMyInfo\n&amp;quot;+str(e)).with_traceback(sys.exc_info()[2])&lt;br /&gt;
def f1() :    &lt;br /&gt;
        a = int( &amp;quot;1&amp;quot; )&lt;br /&gt;
        b = int( &amp;quot;1x&amp;quot; )                &lt;br /&gt;
def f2():&lt;br /&gt;
    try :&lt;br /&gt;
        f1()&lt;br /&gt;
    except Exception as e :&lt;br /&gt;
        # old raise CMyException(&amp;quot;\nMyInfo\n&amp;quot;+str(e)), None, info[2]             &lt;br /&gt;
        raise CMyException(&amp;quot;\nMyInfo\n&amp;quot;+str(e)).with_traceback(sys.exc_info()[2])&lt;br /&gt;
def f3():&lt;br /&gt;
    f2()            &lt;br /&gt;
def f4():&lt;br /&gt;
    f3()        &lt;br /&gt;
try :&lt;br /&gt;
    f4()&lt;br /&gt;
except Exception as e :&lt;br /&gt;
    raise CMyException(&amp;quot;\nMyInfo in main\n&amp;quot;+str(e)).with_traceback(sys.exc_info()[2])&lt;br /&gt;
}}&lt;br /&gt;
Ce qui donne :&lt;br /&gt;
{{code|lang=&amp;quot;text&amp;quot;|code=&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;exception.py&amp;quot;, line 23, in &amp;lt;module&amp;gt;&lt;br /&gt;
    f4()&lt;br /&gt;
  File &amp;quot;exception.py&amp;quot;, line 21, in f4&lt;br /&gt;
    f3()        &lt;br /&gt;
  File &amp;quot;exception.py&amp;quot;, line 19, in f3&lt;br /&gt;
    f2()            &lt;br /&gt;
  File &amp;quot;exception.py&amp;quot;, line 14, in f2&lt;br /&gt;
    f1()&lt;br /&gt;
  File &amp;quot;exception.py&amp;quot;, line 11, in f1&lt;br /&gt;
    b = int( &amp;quot;1x&amp;quot; )                &lt;br /&gt;
__main__.CMyException: &lt;br /&gt;
MyInfo in main&lt;br /&gt;
&lt;br /&gt;
MyInfo&lt;br /&gt;
invalid literal for int() with base 10: '1x'&lt;br /&gt;
}} &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== error_in_function ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def error_in_function( msg, niv=1 ):&lt;br /&gt;
    fonction_name  = sys._getframe(niv).f_code.co_name&lt;br /&gt;
    raise Exception( &amp;quot;Error : %s : %s&amp;quot; %( fonction_name, msg )  )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
=== param_isnot_set ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def param_isnot_set( param, param_name ):&lt;br /&gt;
    if param == None :&lt;br /&gt;
        error_in_function( &amp;quot;%s is not set&amp;quot; % param_name, niv=2 )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
=== param_isnot_file ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def param_isnot_file( pathfilename ):&lt;br /&gt;
    if not os.path.isfile( pathfilename ) :&lt;br /&gt;
        error_in_function( &amp;quot;'%s' is not a file&amp;quot; % pathfilename, niv=2 )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
=== param_isnot_dir ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def param_isnot_dir( pathdirname ):&lt;br /&gt;
    if not os.path.isdir( pathdirname ) :&lt;br /&gt;
        error_in_function( &amp;quot;'%s' is not a dir&amp;quot; % pathdirname, niv=2 )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Fichiers et répertoires ==&lt;br /&gt;
=== Obtenir le contenu d'un répertoire à la manière de Linux ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
import glob&lt;br /&gt;
for path in glob.glob(&amp;quot;/home/C07138/.*&amp;quot;)+glob.glob( &amp;quot;/home/C07138/*&amp;quot; ) : &lt;br /&gt;
    print path&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Liste des répertoires ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: ISO8859-1 -*-&lt;br /&gt;
import os, sys, re&lt;br /&gt;
&lt;br /&gt;
def tofile( filename, text ) :&lt;br /&gt;
    f = open(filename, &amp;quot;w&amp;quot;)&lt;br /&gt;
    f.write(text)&lt;br /&gt;
    f.close()&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__' :    &lt;br /&gt;
    fs0 = os.listdir('.')&lt;br /&gt;
    fs=list()&lt;br /&gt;
    for x in fs0 :&lt;br /&gt;
        fs.append(x.lower())&lt;br /&gt;
    &lt;br /&gt;
    fs.sort()&lt;br /&gt;
    s=''&lt;br /&gt;
    for x in fs :&lt;br /&gt;
        if os.path.isdir( x ) :&lt;br /&gt;
            s+=x.lower()+&amp;quot; &amp;quot;&lt;br /&gt;
    tofile( 'dir_list.txt', s ) &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Personnaliser &amp;quot;file object&amp;quot; ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
class myFileObject :&lt;br /&gt;
    def __init__( self, filename, mode=&amp;quot;r&amp;quot; ) :&lt;br /&gt;
        self.f = open(filename,mode)&lt;br /&gt;
&lt;br /&gt;
    def close(self) :&lt;br /&gt;
        return self.f.close()&lt;br /&gt;
&lt;br /&gt;
    def read( self ) :&lt;br /&gt;
        txt = self.f.read().replace('\n\r','\n').replace('\r\n','\n').replace('\r','\n')&lt;br /&gt;
        return txt&lt;br /&gt;
&lt;br /&gt;
    def write( self, txt ) :&lt;br /&gt;
        #txt = txt.replace('\n','\r')&lt;br /&gt;
        return self.f.write( txt )&lt;br /&gt;
&lt;br /&gt;
def omypen( filename, mode=&amp;quot;r&amp;quot; ) :&lt;br /&gt;
    return myFileObject( filename, mode )&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Lire un fichier caractère  par caractère ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
with open(filename,  &amp;quot;r&amp;quot;, &amp;quot;UTF-8&amp;quot;) as f:&lt;br /&gt;
    while True:&lt;br /&gt;
        c = f.read(1)&lt;br /&gt;
        if not c:&lt;br /&gt;
            print(&amp;quot;End of file&amp;quot;)&lt;br /&gt;
            break&lt;br /&gt;
        print(&amp;quot;Read a character:&amp;quot;, c)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Lire un fichier ligne par ligne ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
import codecs&lt;br /&gt;
ENCODING = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
with codecs.open(param.csvFileName, &amp;quot;r&amp;quot;, ENCODING) as csvSrc:&lt;br /&gt;
    with codecs.open(csvDstName, &amp;quot;w&amp;quot;, ENCODING) as csvDst:&lt;br /&gt;
        lineNumber = 0&lt;br /&gt;
        for line in csvSrc:&lt;br /&gt;
            line = line.replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).replace(&amp;quot;\r&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
            lineNumber += 1&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== tofile fromfile ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
encoding = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
def toTextFile(filename, text):&lt;br /&gt;
    with open(filename, &amp;quot;w&amp;quot;, encoding=encoding) as fileDesc:&lt;br /&gt;
        fileDesc.write(text)&lt;br /&gt;
&lt;br /&gt;
def fromTextFile(filename):&lt;br /&gt;
    text = None&lt;br /&gt;
    with open(filename, &amp;quot;r&amp;quot;, encoding=encoding) as fileDesc:&lt;br /&gt;
        text = fileDesc.read()&lt;br /&gt;
    return text&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def fromTextFileWin(filename):&lt;br /&gt;
    text = None&lt;br /&gt;
    try : &lt;br /&gt;
        with codecs.open(filename, &amp;quot;r&amp;quot;, ENCODING) as fileDesc:&lt;br /&gt;
            text = fileDesc.read()&lt;br /&gt;
    except Exception as e :&lt;br /&gt;
        print(&amp;quot;Warning %s&amp;quot; % e)&lt;br /&gt;
        print(&amp;quot;try %s&amp;quot; % ENCODING2)&lt;br /&gt;
        with codecs.open(filename, &amp;quot;r&amp;quot;, ENCODING2) as fileDesc:&lt;br /&gt;
            text = fileDesc.read()&lt;br /&gt;
    return text&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Lire des fichiers ini ===&lt;br /&gt;
&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
#***********************************************************&lt;br /&gt;
# Author:   Arthur TOROSSIAN&lt;br /&gt;
# Date:    30.10.2017&lt;br /&gt;
#***********************************************************/&lt;br /&gt;
import configparser&lt;br /&gt;
ABSTRACT_MSG = &amp;quot;call of abstract method&amp;quot;&lt;br /&gt;
################################################################################&lt;br /&gt;
class CIniFileError(Exception):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
    the main exception class of the module&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
&lt;br /&gt;
def str2bool(v):&lt;br /&gt;
    v = v.strip().lower()&lt;br /&gt;
    if not v in [&amp;quot;true&amp;quot;, &amp;quot;false&amp;quot;, &amp;quot;vrai&amp;quot;, &amp;quot;faux&amp;quot;]:&lt;br /&gt;
        raise CIniFileError(&amp;quot;v='%s' is not a valid boolean&amp;quot; % v)&lt;br /&gt;
    return (v in [&amp;quot;true&amp;quot;, &amp;quot;vrai&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
# CIniParam in order to read ini files&lt;br /&gt;
################################################################################&lt;br /&gt;
class CIniParam:&lt;br /&gt;
    ############################################################################&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.fileName = None&lt;br /&gt;
        self.config = None&lt;br /&gt;
        self._currentSection = None&lt;br /&gt;
    ############################################################################&lt;br /&gt;
    def loadParam(self, fileName):&lt;br /&gt;
        self.fileName = fileName&lt;br /&gt;
        self.config = configparser.ConfigParser()&lt;br /&gt;
        self.config.read(fileName)&lt;br /&gt;
        self.getParamFromConfig()&lt;br /&gt;
&lt;br /&gt;
    def getParamFromConfig(self):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
        (API) abstract required API method&lt;br /&gt;
        Check all options and attributes validity.&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        raise CIniFileError(ABSTRACT_MSG)&lt;br /&gt;
&lt;br /&gt;
    def checkVersion(self, formatSection, v01, v02, v03):&lt;br /&gt;
        self.setCurrentSection(formatSection)&lt;br /&gt;
        v1 = self.getInt(&amp;quot;v1&amp;quot;)&lt;br /&gt;
        v2 = self.getInt(&amp;quot;v2&amp;quot;)&lt;br /&gt;
        v3 = self.getInt(&amp;quot;v3&amp;quot;)&lt;br /&gt;
        if v1 != v01 :&lt;br /&gt;
            errMsg = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ERROR the file named '%s', in section named '%s', has no the right file format&lt;br /&gt;
version. The version must be %d.x.x and the current version is %d.%d.%d&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot; % (self.fileName, formatSection, v01, v1, v2, v3)&lt;br /&gt;
            raise CIniFileError(errMsg)&lt;br /&gt;
&lt;br /&gt;
    def hasTheSection(self):&lt;br /&gt;
        return self.config.has_section(self._currentSection)&lt;br /&gt;
&lt;br /&gt;
    def hasOption(self, optionName):&lt;br /&gt;
        return self.config.has_option(self._currentSection, optionName)&lt;br /&gt;
    ############################################################################&lt;br /&gt;
    def setCurrentSection(self, currentSection):&lt;br /&gt;
        self._currentSection = currentSection&lt;br /&gt;
        if not self.hasTheSection():&lt;br /&gt;
            errMsg = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ERROR the file named '%s', has no section named '%s'&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot; % (&lt;br /&gt;
                    self.fileName, self._currentSection)&lt;br /&gt;
            raise CIniFileError(errMsg)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    def getFloat(self, varName):&lt;br /&gt;
        val = self.loadParamFloat(self._currentSection, varName)&lt;br /&gt;
        return val&lt;br /&gt;
&lt;br /&gt;
    def getFloatList(self, varName):&lt;br /&gt;
        valList = eval(self.loadParamStr(self._currentSection, varName))&lt;br /&gt;
        newVal = list()&lt;br /&gt;
        for sf in valList :&lt;br /&gt;
            newVal.append(float(sf))&lt;br /&gt;
        return newVal&lt;br /&gt;
&lt;br /&gt;
    def getFloatOrNoneList(self, varName):&lt;br /&gt;
        valList = eval(self.loadParamStr(self._currentSection, varName))&lt;br /&gt;
        newVal = list()&lt;br /&gt;
        for sf in valList :&lt;br /&gt;
            if sf == None :&lt;br /&gt;
                newVal.append(sf)&lt;br /&gt;
            else:&lt;br /&gt;
                newVal.append(float(sf))&lt;br /&gt;
        return newVal&lt;br /&gt;
&lt;br /&gt;
    def getStrList(self, varName):&lt;br /&gt;
        valList = eval(self.loadParamStr(self._currentSection, varName))&lt;br /&gt;
        newVal = list()&lt;br /&gt;
        for sf in valList :&lt;br /&gt;
            newVal.append(sf)&lt;br /&gt;
        return newVal&lt;br /&gt;
&lt;br /&gt;
    def getInt(self, varName):&lt;br /&gt;
        val = self.loadParamInt(self._currentSection, varName)&lt;br /&gt;
        return val&lt;br /&gt;
&lt;br /&gt;
    def getBool(self, varName):&lt;br /&gt;
        val = self.loadParamBool(self._currentSection, varName)&lt;br /&gt;
        return val&lt;br /&gt;
&lt;br /&gt;
    def getStr(self, varName):&lt;br /&gt;
        val = self.loadParamStr(self._currentSection, varName)&lt;br /&gt;
        return val&lt;br /&gt;
&lt;br /&gt;
    ############################################################################&lt;br /&gt;
    def checkNoParam(self, paramName):&lt;br /&gt;
        if not self.hasOption(paramName):&lt;br /&gt;
            errMsg = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ERROR the file named '%s', in section named '%s', has no parameter named '%s'&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot; % (self.fileName, self._currentSection, paramName)&lt;br /&gt;
            raise CIniFileError(errMsg)&lt;br /&gt;
&lt;br /&gt;
    def loadParamFloat(self, sectionName, varName):&lt;br /&gt;
        self.checkNoParam(varName)&lt;br /&gt;
        xs = self.config.get(sectionName, varName).split(&amp;quot;#&amp;quot;)[0]&lt;br /&gt;
        x = float(eval(xs))&lt;br /&gt;
        return x&lt;br /&gt;
&lt;br /&gt;
    def loadParamInt(self, sectionName, varName):&lt;br /&gt;
        self.checkNoParam(varName)&lt;br /&gt;
        x = int(self.config.get(sectionName, varName).split(&amp;quot;#&amp;quot;)[0])&lt;br /&gt;
        return x&lt;br /&gt;
&lt;br /&gt;
    def loadParamBool(self, sectionName, varName):&lt;br /&gt;
        self.checkNoParam(varName)&lt;br /&gt;
        dat = self.config.get(sectionName, varName)&lt;br /&gt;
        x = str2bool(dat.split(&amp;quot;#&amp;quot;)[0])&lt;br /&gt;
        return x&lt;br /&gt;
&lt;br /&gt;
    def loadParamStr(self, sectionName, varName):&lt;br /&gt;
        self.checkNoParam(varName)&lt;br /&gt;
        x = self.config.get(sectionName, varName).split(&amp;quot;#&amp;quot;)[0]&lt;br /&gt;
        return x&lt;br /&gt;
}}&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
class CParams(CIniParam) :&lt;br /&gt;
    def getParamFromConfig(pm):&lt;br /&gt;
        pm.setCurrentSection(&amp;quot;param&amp;quot;)&lt;br /&gt;
        pm.tMax = pm.getFloat(&amp;quot;p1&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== fichiers temporaires, tmp, temp ===&lt;br /&gt;
&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
tmp_file=tempfile.NamedTemporaryFile( delete=False )&lt;br /&gt;
tmp_file.close()&lt;br /&gt;
print tmp_file.name&lt;br /&gt;
print os.path.exists(tmp_file.name)&lt;br /&gt;
tgzs=fromfile( tmp_file.name )&lt;br /&gt;
s.unlink(tmp_file.name)&lt;br /&gt;
print os.path.exists(tmp_file.name)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Lire et écrire des binaires (endianness; little-endian et big-endian) dans des fichiers ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
On utilise le module {{m|struct}} avec les méthodes {{m|unpack}} et {{m|pack}} :&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def scanDatFile( fileName, fileDestinationName, endianness='&amp;lt;', ee1WaterDeep=5, ee1LandHeight=10 ) :&lt;br /&gt;
    bs = os.path.getsize( fileName ) &lt;br /&gt;
    fsize = 0    &lt;br /&gt;
    fic = open( fileName , 'rb')&lt;br /&gt;
    ficDest = open( fileDestinationName , 'wb')&lt;br /&gt;
    # &amp;lt; little-endian BYTEORDER LSBFIRST&lt;br /&gt;
    # &amp;gt; big-endian&lt;br /&gt;
    # h short integer 2 bytes &lt;br /&gt;
    fmt = &amp;quot;%sh&amp;quot; % endianness&lt;br /&gt;
    min = 60000&lt;br /&gt;
    max = -60000&lt;br /&gt;
    noval=-32768&lt;br /&gt;
    while fsize &amp;lt; bs :&lt;br /&gt;
        fsize += 2&lt;br /&gt;
        tmp = fic.read( struct.calcsize(fmt) )&lt;br /&gt;
        val, = struct.unpack( fmt , tmp  )    &lt;br /&gt;
        valBin = struct.pack( fmt , func.hcorection( val )  )   &lt;br /&gt;
        ficDest.write( valBin )        &lt;br /&gt;
        #print val&lt;br /&gt;
        if val != noval :&lt;br /&gt;
            if val &amp;lt; min :&lt;br /&gt;
                min = val&lt;br /&gt;
            if val &amp;gt; max :&lt;br /&gt;
                max = val&lt;br /&gt;
    print min, max&lt;br /&gt;
    ee1 = ee1WaterDeep + ee1LandHeight&lt;br /&gt;
    map = float(max-min+1)&lt;br /&gt;
    ee2map = map / ee1&lt;br /&gt;
    ee1WaterDeep = round( min/ee2map )&lt;br /&gt;
    ee1LandHeight = round( max/ee2map )&lt;br /&gt;
    print &amp;quot;Water Deep:%s Land height: %s&amp;quot; %( round( min/ee2map ), round( max/ee2map )  )&lt;br /&gt;
    print &amp;quot;Water Cutoff:%s Land Cutoff: %s&amp;quot; %( round( ee1WaterDeep*ee2map ), round( ee1LandHeight*ee2map )  )&lt;br /&gt;
    ficDest.close()&lt;br /&gt;
    fic.close()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Lire et écrire des fichiers netCDF ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
}}&lt;br /&gt;
* Read and Write netCDF Files&lt;br /&gt;
*: https://pythonhosted.org/landlab/landlab.io.netcdf.html&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Copier les dates d'un fichier à un autre ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
st=os.stat( file1 )&lt;br /&gt;
os.utime( file2, (st.st_atime, st.st_mtime) )&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== trace ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def get_datetime_str():&lt;br /&gt;
    return time.strftime(&amp;quot;%Y-%m-%d_%H-%M-%S&amp;quot;,time.localtime())&lt;br /&gt;
&lt;br /&gt;
trace_file_name=&amp;quot;trace.txt&amp;quot;&lt;br /&gt;
def trace( msg, init=0 ) :&lt;br /&gt;
    filename = trace_file_name&lt;br /&gt;
    if (os.path.exists( filename ) and (init==0) ):&lt;br /&gt;
        f = open( filename, &amp;quot;a&amp;quot;  )&lt;br /&gt;
    else :&lt;br /&gt;
        f = open( filename, &amp;quot;w&amp;quot;  )&lt;br /&gt;
    f.write( &amp;quot;%s %s\n&amp;quot; % (get_datetime_str(),msg) )&lt;br /&gt;
    f.close()&lt;br /&gt;
trace( &amp;quot;INIT&amp;quot;, init=1 )&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== get_NewFileName ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def get_NewFileName( name, Index=1 ) :&lt;br /&gt;
    newname = name    &lt;br /&gt;
    name, ext = os.path.splitext( newname  )&lt;br /&gt;
    while os.path.exists( newname ) :        &lt;br /&gt;
        newname = name + (&amp;quot;%03d&amp;quot; % Index) + ext&lt;br /&gt;
        Index += 1&lt;br /&gt;
    return newname, Index&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== get_NewDictName ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
patName = re.compile(&amp;quot;^(.*?)(\d*)$&amp;quot;)&lt;br /&gt;
def normName( name  ) :&lt;br /&gt;
    nname, ni = patName.findall( name )[0]&lt;br /&gt;
    if ni != &amp;quot;&amp;quot; :&lt;br /&gt;
        i = int( ni )&lt;br /&gt;
        newname = nname + (&amp;quot;%03d&amp;quot; % i)&lt;br /&gt;
&lt;br /&gt;
    else :&lt;br /&gt;
        newname = name&lt;br /&gt;
    return newname&lt;br /&gt;
&lt;br /&gt;
def normDictNames( namedict ) :&lt;br /&gt;
    newD = dict()&lt;br /&gt;
    for name, val in namedict.items() :&lt;br /&gt;
        newname = normName( name  )&lt;br /&gt;
        newD[ newname ] = val&lt;br /&gt;
    return newD&lt;br /&gt;
&lt;br /&gt;
def get_NewDictName( name, namedict, Index=1 ) :&lt;br /&gt;
    newname = name&lt;br /&gt;
    name, i = patName.findall( newname )[0]&lt;br /&gt;
    while newname in namedict :&lt;br /&gt;
        newname = name + (&amp;quot;%03d&amp;quot; % Index)&lt;br /&gt;
        Index += 1&lt;br /&gt;
    return newname, Index&lt;br /&gt;
}}&lt;br /&gt;
utilisation possible  :&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
dd0 = {&amp;quot;otto&amp;quot;:1,&amp;quot;toto3&amp;quot;:2, &amp;quot;toto02&amp;quot;:4, &amp;quot;tata&amp;quot;:5, &amp;quot;toto&amp;quot; :1 }&lt;br /&gt;
print dd0&lt;br /&gt;
dd = normDictNames( dd0 )&lt;br /&gt;
print dd&lt;br /&gt;
name, index = get_NewDictName( &amp;quot;toto&amp;quot;, dd  )&lt;br /&gt;
dd[name] = 30&lt;br /&gt;
print name, index, dd&lt;br /&gt;
name, index = get_NewDictName( &amp;quot;toto&amp;quot;, dd  )&lt;br /&gt;
dd[name] = 15&lt;br /&gt;
print name, index, dd&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
{'tata': 5, 'toto': 1, 'toto02': 4, 'toto3': 2, 'otto': 1}&lt;br /&gt;
{'toto': 1, 'tata': 5, 'toto002': 4, 'toto003': 2, 'otto': 1}&lt;br /&gt;
toto001 2 {'toto003': 2, 'tata': 5, 'toto': 1, 'toto002': 4, 'toto001': 30, 'otto': 1}&lt;br /&gt;
toto004 5 {'toto003': 2, 'tata': 5, 'toto004': 15, 'toto': 1, 'toto002': 4, 'toto001': 30, 'otto': 1}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== path_split ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def path_split( pathnameext ):&lt;br /&gt;
    path, name = os.path.split( pathnameext )&lt;br /&gt;
    name , ext = os.path.splitext( name )&lt;br /&gt;
    return (path, name, ext,)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== change_path_and_suffix ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def change_path_and_suffix(  pathnameext, newpath, suffix ) :&lt;br /&gt;
    path, nameext = os.path.split( pathnameext )&lt;br /&gt;
    name, ext = os.path.splitext( nameext )&lt;br /&gt;
    return newpath + os.sep + name+suffix+ext&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== change_path_and_ext ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def change_path_and_ext(  pathnameext, newpath, ext ) :&lt;br /&gt;
    path, nameext = os.path.split( pathnameext )&lt;br /&gt;
    name, ext0 = os.path.splitext( nameext )&lt;br /&gt;
    return newpath + os.sep + name+ext&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Get list of files ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Simple :&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def findFilesInDirectorFromPattern( path, pat ) :&lt;br /&gt;
    flist = list() &lt;br /&gt;
    fs = os.listdir(path)&lt;br /&gt;
    for x in fs :&lt;br /&gt;
        file_path = path+os.sep+x &lt;br /&gt;
        if os.path.isfile( file_path  ) :&lt;br /&gt;
            if pat.match( x ) :&lt;br /&gt;
                flist.append( file_path  )&lt;br /&gt;
    return flist     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Évoluée :&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def find( flist, path, file_pattern,  subdir, file_exclude_pattern=None, dir_exclude_pattern=None ) :&lt;br /&gt;
    fs = os.listdir(path)&lt;br /&gt;
    for x in fs :&lt;br /&gt;
        file_path = path+os.sep+x&lt;br /&gt;
 &lt;br /&gt;
        if os.path.isfile( file_path  ) :&lt;br /&gt;
            ok=1&lt;br /&gt;
            if file_exclude_pattern != None :&lt;br /&gt;
                ok = not file_exclude_pattern.match( x )&lt;br /&gt;
            if ok and file_pattern.match( x ) :&lt;br /&gt;
                print x&lt;br /&gt;
                flist.append( file_path  )&lt;br /&gt;
 &lt;br /&gt;
        if os.path.isdir( file_path  ) :&lt;br /&gt;
            if subdir :&lt;br /&gt;
                ok = 1&lt;br /&gt;
                if dir_exclude_pattern != None :&lt;br /&gt;
                    ok= not dir_exclude_pattern.match( x )&lt;br /&gt;
                if ok :&lt;br /&gt;
                    find( flist, file_path, file_pattern,  subdir, file_exclude_pattern, dir_exclude_pattern)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Lire et écrire des fichiers HTML ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Il ne faut pas utiliser {{m|html.parser}},  {{m|Simple HTML}} ou {{m|XHTML parser}} mais il est largement recommandé d'utiliser {{m|sgmllib}} ou {{m|Simple SGML parser}}.&lt;br /&gt;
}}&lt;br /&gt;
=== Générer une fichier html à partir d'une liste de fichiers sur disques gen_list_html ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
import re&lt;br /&gt;
import os&lt;br /&gt;
def gen_list_html( path, file_pattern_txt ) :&lt;br /&gt;
    file_pattern = re.compile( file_pattern_txt )&lt;br /&gt;
    fs = os.listdir(path)&lt;br /&gt;
    fs.sort()&lt;br /&gt;
    print &amp;quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;ol&amp;gt;&amp;quot;&lt;br /&gt;
    for x in fs :&lt;br /&gt;
        file_path = path+os.sep+x&lt;br /&gt;
        if os.path.isfile( file_path  ) :&lt;br /&gt;
            if file_pattern.match( x ) :&lt;br /&gt;
                print &amp;quot;&amp;lt;li&amp;gt;&amp;lt;a href='%s'&amp;gt;%s&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;quot; %(x,x)&lt;br /&gt;
&lt;br /&gt;
    print &amp;quot;&amp;lt;/ol&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;&lt;br /&gt;
if __name__ == '__main__' :&lt;br /&gt;
    gen_list_html( &amp;quot;.&amp;quot;, &amp;quot;.*\.avi$&amp;quot; )&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Générer une fichier html à partir d'une liste d'images/photo sur disques ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
import os, sys, re, codecs, time, shutil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srcPath = &amp;quot;.&amp;quot;&lt;br /&gt;
fl = os.listdir(srcPath)&lt;br /&gt;
sorted(fl)&lt;br /&gt;
&lt;br /&gt;
f = codecs.open(&amp;quot;index.html&amp;quot;, &amp;quot;w&amp;quot;, encoding = &amp;quot;UTF-8&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
f.write(&amp;quot;&amp;lt;html style='background-color:#a0a0a0;margin:auto;'&amp;gt;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
f.write(&amp;quot;&amp;quot;&amp;quot;&amp;lt;body &lt;br /&gt;
style='width:210mm;margin:auto;padding:5mm;background-color:#ffffff;'&amp;gt;&lt;br /&gt;
&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
p.p {&lt;br /&gt;
width:180mm;background-color:#ffffff;margin:auto;&lt;br /&gt;
}&lt;br /&gt;
td.g {&lt;br /&gt;
width:30mm; vertical-align:middle;&lt;br /&gt;
}&lt;br /&gt;
td.d {&lt;br /&gt;
width:150mm; vertical-align:top; background-color:#ffffff;font-size:10pt;&lt;br /&gt;
}&lt;br /&gt;
img{&lt;br /&gt;
width:28mm;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;p&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table align=center&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
for img in fl :&lt;br /&gt;
    name, ext = os.path.splitext(img)&lt;br /&gt;
    print(name.lower())&lt;br /&gt;
    if ext.lower() == &amp;quot;.jpg&amp;quot; :&lt;br /&gt;
        f.write(&amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td class='g'&amp;gt; &amp;lt;img src='%s'&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td class='d'&amp;gt; TODO &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot; % img)&lt;br /&gt;
&lt;br /&gt;
f.write(&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
f.write(&amp;quot;&amp;lt;/html&amp;gt;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
f.close()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== gen m3u8 - liste de mp3 - player list - utilisable par Rhythmbox ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
voir [https://atoross@at.bht.fr/svn/atTools/trunk/playList playList (svn atTools)]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== genNewNames  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
import os, sys, re, random&lt;br /&gt;
&lt;br /&gt;
def get_NewFileName( name, Index=1 ) :&lt;br /&gt;
    newname = name    &lt;br /&gt;
    name, ext = os.path.splitext( newname  )&lt;br /&gt;
    while os.path.exists( newname ) :        &lt;br /&gt;
        newname = name + (&amp;quot;%03d&amp;quot; % Index) + ext&lt;br /&gt;
        Index += 1&lt;br /&gt;
    return newname, Index&lt;br /&gt;
&lt;br /&gt;
def genNewNames( path ) :&lt;br /&gt;
    index=1&lt;br /&gt;
    fs = os.listdir(path)&lt;br /&gt;
    nb = len(fs)&lt;br /&gt;
    num = 0&lt;br /&gt;
    while nb &amp;gt; 0 :&lt;br /&gt;
        i = random.randint(0, nb-1 )&lt;br /&gt;
        nname = path+os.sep+fs[i]&lt;br /&gt;
        del fs[i]&lt;br /&gt;
        if os.path.isfile( nname ) :&lt;br /&gt;
            nname0, ext = os.path.splitext(nname)&lt;br /&gt;
            pname, nname0 = os.path.split(nname)&lt;br /&gt;
            rname = pname + os.sep+&amp;quot;im%05d%s&amp;quot; % (num,ext)&lt;br /&gt;
            print &amp;quot;  &amp;quot;,nname, rname&lt;br /&gt;
            rname, index = get_NewFileName( rname, index )&lt;br /&gt;
            os.rename( nname , rname )        &lt;br /&gt;
        num += 1&lt;br /&gt;
        nb -= 1&lt;br /&gt;
        &lt;br /&gt;
def genNewNamesInSubDirs( path ) :    &lt;br /&gt;
    fs = os.listdir(path)&lt;br /&gt;
    for ff in fs :&lt;br /&gt;
        pathff = path+os.sep+ff&lt;br /&gt;
        print &amp;quot;[%s]&amp;quot; % pathff&lt;br /&gt;
        if os.path.isdir( pathff ) :&lt;br /&gt;
            genNewNames( pathff )&lt;br /&gt;
if __name__ == u'__main__' :    &lt;br /&gt;
    genNewNamesInSubDirs( &amp;quot;./Images/listes&amp;quot;)   &lt;br /&gt;
    genNewNames( &amp;quot;./Images/listeAll&amp;quot; )&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== unix2dos ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
###############&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
for fname in sys.argv[1:]:&lt;br /&gt;
    infile = open( fname, &amp;quot;rb&amp;quot; )&lt;br /&gt;
    instr = infile.read()&lt;br /&gt;
    infile.close()&lt;br /&gt;
    outstr = instr.replace( &amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot; ).replace( &amp;quot;\n\r&amp;quot;, &amp;quot;\n&amp;quot; ).replace( &amp;quot;\r&amp;quot;, &amp;quot;\n&amp;quot; ).replace( &amp;quot;\n&amp;quot;, &amp;quot;\r\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
    if len(outstr) == len(instr):&lt;br /&gt;
        continue&lt;br /&gt;
    &lt;br /&gt;
    outfile = open( fname, &amp;quot;wb&amp;quot; )&lt;br /&gt;
    outfile.write( outstr )&lt;br /&gt;
    outfile.close()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== clean_rep.py ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
# -*- coding: iso-8859-1 -*-&lt;br /&gt;
import os&lt;br /&gt;
import re&lt;br /&gt;
pat_adir = re.compile( &amp;quot;\d{4}&amp;quot; )&lt;br /&gt;
pat_mdir = re.compile( &amp;quot;\d{4}-\d{2}&amp;quot; )&lt;br /&gt;
def clean_dirs() :&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Delete empty directories with name like AAAA/AAAA-MM or AAAA.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    adirs = os.listdir(&amp;quot;.&amp;quot;)&lt;br /&gt;
    for adir in adirs :&lt;br /&gt;
        if pat_adir.match( adir ) :&lt;br /&gt;
            mdirs = os.listdir(adir)&lt;br /&gt;
            for mdir in mdirs :&lt;br /&gt;
                if pat_mdir.match( mdir ) :&lt;br /&gt;
                    files = os.listdir( adir+os.sep+mdir )&lt;br /&gt;
                    if len(files)==0 :&lt;br /&gt;
                        os.rmdir( adir+os.sep+mdir )&lt;br /&gt;
            mdirs = os.listdir(adir)&lt;br /&gt;
            if len( mdirs )==0 :&lt;br /&gt;
                os.rmdir( adir )&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__' :&lt;br /&gt;
    clean_dirs()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== gen_rep.py ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
# -*- coding: iso-8859-1 -*-&lt;br /&gt;
&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
def gen_dirs() :&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Generate directory with name like AAAA/AAAA-MM if it does not exist.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    for an in range(2000,2012) :&lt;br /&gt;
        dir_a = &amp;quot;%04d&amp;quot; %(an)&lt;br /&gt;
        if not os.path.exists( dir_a ) :&lt;br /&gt;
            os.mkdir( dir_a )&lt;br /&gt;
        for m in range(1,13) :&lt;br /&gt;
            dir_name = &amp;quot;%s%s%04d-%02d&amp;quot; %(dir_a,os.sep,an,m)&lt;br /&gt;
            print dir_name&lt;br /&gt;
            if not os.path.exists( dir_name ) :&lt;br /&gt;
                os.mkdir( dir_name )&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__' :&lt;br /&gt;
    gen_dirs()&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== size_on_system ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def size_on_system( sf, sector_size ):&lt;br /&gt;
    if sector_size != None :&lt;br /&gt;
        s=0&lt;br /&gt;
        ns = sf % sector_size&lt;br /&gt;
        if ns == 0 :&lt;br /&gt;
            s = sf&lt;br /&gt;
        else :&lt;br /&gt;
            s = (sf / sector_size) * sector_size  + sector_size&lt;br /&gt;
    else :&lt;br /&gt;
      s=sf&lt;br /&gt;
    return s&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== size_of_dir ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def size_of_dir( path, sector_size=None  ):&lt;br /&gt;
    fs = os.listdir( path )&lt;br /&gt;
    s=0&lt;br /&gt;
    for f in fs :&lt;br /&gt;
        pf = path+os.sep+f&lt;br /&gt;
        if os.path.isfile( pf ) :&lt;br /&gt;
            statinfo = os.stat( pf )&lt;br /&gt;
            s+= size_on_system( statinfo.st_size, sector_size )&lt;br /&gt;
        if os.path.isdir( pf ) :&lt;br /&gt;
            s+=size_of_dir( pf,sector_size  )&lt;br /&gt;
    return s&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== sizeOfFile ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def sizeOfFile( pathToFile ):&lt;br /&gt;
    size = None&lt;br /&gt;
    if os.path.isfile( pathToFile ) :&lt;br /&gt;
        statinfo = os.stat( pathToFile )&lt;br /&gt;
        size = statinfo.st_size&lt;br /&gt;
    return size&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== have_subdir ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=&amp;quot;python&amp;quot;|code=&lt;br /&gt;
def have_subdir( path ) :&lt;br /&gt;
    ok = 0&lt;br /&gt;
    fs = os.listdir( path )&lt;br /&gt;
    nb = len( fs )&lt;br /&gt;
    i = 0&lt;br /&gt;
    while (i &amp;lt; nb) and (ok==0) :&lt;br /&gt;
        pathx = path + os.sep + fs[ i ]&lt;br /&gt;
        if os.path.isdir( pathx ) :&lt;br /&gt;
            ok = 1&lt;br /&gt;
        i += 1&lt;br /&gt;
    return ok&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Compte utilisateur ==&lt;br /&gt;
=== get_username ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def get_username():&lt;br /&gt;
    return getpass.getuser()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== get_hostname ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def get_hostname():&lt;br /&gt;
    return socket.gethostbyaddr(socket.gethostname())[0]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== get_homedir ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def get_homedir():&lt;br /&gt;
    homedir = os.path.expanduser('~')&lt;br /&gt;
    return homedir&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Réseau, Internet ==&lt;br /&gt;
=== fromurl ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def fromurl( cmd ) :&lt;br /&gt;
    encore = 1&lt;br /&gt;
    while encore :&lt;br /&gt;
        try :    &lt;br /&gt;
            f = urllib.urlopen( cmd )&lt;br /&gt;
            rep = f.read()&lt;br /&gt;
            f.close()&lt;br /&gt;
            encore = 0&lt;br /&gt;
        except Exception,e :&lt;br /&gt;
            #print str(e)&lt;br /&gt;
            encore = 1&lt;br /&gt;
            &lt;br /&gt;
    return rep&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* [http://code.activestate.com/recipes/456195/ urrlib2 opener for SSL proxy (CONNECT method) (Python recipe)]&lt;br /&gt;
* [http://e1ven.com/2011/04/06/how-to-use-m2crypto-tutorial/ How to use m2crypto]&lt;br /&gt;
&lt;br /&gt;
=== socket.setdefaulttimeout ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    timeout = 10&lt;br /&gt;
    socket.setdefaulttimeout(timeout)&lt;br /&gt;
    text = urllib2.urlopen('http://at.bht.fr').read()&lt;br /&gt;
    print( text )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTTPBasicAuthHandler ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    auth_handler = urllib2.HTTPBasicAuthHandler()&lt;br /&gt;
    auth_handler.add_password(&lt;br /&gt;
                          realm='My Application',&lt;br /&gt;
                          uri='',&lt;br /&gt;
                          user='',&lt;br /&gt;
                          passwd=''&lt;br /&gt;
                          )&lt;br /&gt;
    opener = urllib2.build_opener( auth_handler )&lt;br /&gt;
    # ...and install it globally so it can be used with urlopen.&lt;br /&gt;
    urllib2.install_opener( opener )    &lt;br /&gt;
    text = urllib2.urlopen('https://at.bht.fr/DisEvtSim').read()&lt;br /&gt;
    print( text )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ProxyBasicAuthHandler ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    proxy_handler = urllib2.ProxyHandler({'http': 'http://proxypac.edf.fr:3128/','https': 'https://proxypac.edf.fr:3128/'})&lt;br /&gt;
    proxy_auth_handler = urllib2.ProxyBasicAuthHandler()&lt;br /&gt;
    proxy_auth_handler.add_password('realm', 'proxypac.edf.fr', '', '')&lt;br /&gt;
    opener = urllib2.build_opener(proxy_handler, proxy_auth_handler)    &lt;br /&gt;
    # ...and install it globally so it can be used with urlopen.&lt;br /&gt;
    urllib2.install_opener(opener)    &lt;br /&gt;
    text = urllib2.urlopen('http://at.bht.fr').read()&lt;br /&gt;
    print( text )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ProxyBasicAuthHandler ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    proxy_handler = urllib2.ProxyHandler({'http': 'http://proxypac.edf.fr:3128/','https': 'https://proxypac.edf.fr:3128/'})&lt;br /&gt;
    proxy_auth_handler = urllib2.ProxyBasicAuthHandler()&lt;br /&gt;
    proxy_auth_handler.add_password('realm', 'proxypac.edf.fr', '', '')&lt;br /&gt;
    auth_handler = urllib2.HTTPBasicAuthHandler()&lt;br /&gt;
    auth_handler.add_password(realm='PDQ Application',&lt;br /&gt;
                          uri='https://at.bht.fr/DisEvtSim',&lt;br /&gt;
                          user='',&lt;br /&gt;
                          passwd='')&lt;br /&gt;
    &lt;br /&gt;
    opener = urllib2.build_opener(proxy_handler, proxy_auth_handler,auth_handler)    &lt;br /&gt;
    # ...and install it globally so it can be used with urlopen.&lt;br /&gt;
    urllib2.install_opener(opener)    &lt;br /&gt;
    text = urllib2.urlopen('https://at.bht.fr/DisEvtSim').read()&lt;br /&gt;
    print( text )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== https sans authentification ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    timeout = 10&lt;br /&gt;
    socket.setdefaulttimeout(timeout)    &lt;br /&gt;
    text = urllib2.urlopen('https://www.google.fr').read()&lt;br /&gt;
    print( text )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== {{id|id_regex}}Expressions régulières ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* voir plus généralement [[Expressions régulières]]&lt;br /&gt;
}}&lt;br /&gt;
=== Never match ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class CNeverMatch :&lt;br /&gt;
    def match( self, f ) :&lt;br /&gt;
        return 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Allways match ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class CAllwaysMatch :&lt;br /&gt;
    def match( self, f ) :&lt;br /&gt;
        return 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remplacer avec sub : replace_re.py ===&lt;br /&gt;
Un petit programme complet très utile pour traiter les fichiers (utilisation de {{m|sub}})&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: 'ISO8859-1' -*-&lt;br /&gt;
import os, sys, re&lt;br /&gt;
&lt;br /&gt;
def fromfile( filename ) :&lt;br /&gt;
    f = open(filename, &amp;quot;r&amp;quot;)&lt;br /&gt;
    text = f.read()&lt;br /&gt;
    f.close()&lt;br /&gt;
    return text&lt;br /&gt;
&lt;br /&gt;
def replace_re( exp, remplacant, txt ) :&lt;br /&gt;
    pat=re.compile( exp )&lt;br /&gt;
    newtxt= re.sub( pat, remplacant, txt) &lt;br /&gt;
    return newtxt&lt;br /&gt;
&lt;br /&gt;
def replace_re_file( exp, remplacant, filename ) :&lt;br /&gt;
    txt = fromfile( filename )&lt;br /&gt;
    return replace_re( exp, remplacant, txt ) &lt;br /&gt;
&lt;br /&gt;
def help() :&lt;br /&gt;
    print &amp;quot;HELP&amp;quot;&lt;br /&gt;
    print &amp;quot;\treplace_re.py expression_reguliere remplacant filename1 &amp;quot;&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__' :    &lt;br /&gt;
    if len( sys.argv  ) == 4 :&lt;br /&gt;
        txt = replace_re_file( sys.argv[1], sys.argv[2], sys.argv[3] )&lt;br /&gt;
        print txt&lt;br /&gt;
    else :&lt;br /&gt;
        help()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== findall et sub ===&lt;br /&gt;
Le code suivant remplace dans les lignes d'un fichier telles que&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;cursor:pointer; background-color: rgb(255, 255, 153); border: 1px solid #CCC;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
toutes le chaines {{m|&amp;amp;amp;nbsp;}} par le calcul des couleurs qui se trouvent dans {{m|rgb(XXX, XXX, XXX)}}, cela donne dans notre cas :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;cursor:pointer; background-color: rgb(255, 255, 153); border: 1px solid #CCC;&amp;quot; &amp;gt;#ffff99&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def rgb( r,v,b ) :&lt;br /&gt;
    return &amp;quot;#%02x%02x%02x&amp;quot; %(r,v,b)&lt;br /&gt;
&lt;br /&gt;
def dd( filename ) :&lt;br /&gt;
    pattern=re.compile(&amp;quot;.*(rgb\(\d+, *\d+, *\d+\));.*&amp;quot;)&lt;br /&gt;
    pat = re.compile( &amp;quot;&amp;amp;nbsp;&amp;quot; )&lt;br /&gt;
    txt = fromfile( filename ).split(&amp;quot;\n&amp;quot;)&lt;br /&gt;
    newtxt=&amp;quot;&amp;quot;&lt;br /&gt;
    for l in txt :&lt;br /&gt;
        tr=re.findall( pattern, l) &lt;br /&gt;
        if len(tr)&amp;gt;0 :&lt;br /&gt;
            code=eval(tr[0])&lt;br /&gt;
            newl= re.sub( pat, code, l)&lt;br /&gt;
        else :&lt;br /&gt;
            newl=l&lt;br /&gt;
        print newl&lt;br /&gt;
        newtxt+=newl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hashage ==&lt;br /&gt;
=== crc32 : hashage de lignes de texte ou  de binaires ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#===============================================================================&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
#===============================================================================&lt;br /&gt;
import binascii&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;b:&amp;quot;)&lt;br /&gt;
print( &amp;quot; &amp;quot;, b&amp;quot;hello&amp;quot; )&lt;br /&gt;
print( &amp;quot; &amp;quot;, &amp;quot;crc32: %0x&amp;quot; % binascii.crc32(b&amp;quot;hello&amp;quot;) )  # bad way -&amp;gt; bytearray&lt;br /&gt;
print(&amp;quot;bytearray:&amp;quot;)&lt;br /&gt;
print( &amp;quot; &amp;quot;, bytearray(&amp;quot;hello&amp;quot;, &amp;quot;utf8&amp;quot; ) )&lt;br /&gt;
print( &amp;quot; &amp;quot;, &amp;quot;crc32: %0x&amp;quot; % binascii.crc32( bytearray(&amp;quot;hello&amp;quot;, &amp;quot;utf8&amp;quot; )))&lt;br /&gt;
print(&amp;quot;b:&amp;quot;)&lt;br /&gt;
print( &amp;quot; &amp;quot;, b&amp;quot;barba-papa&amp;quot; )&lt;br /&gt;
print( &amp;quot; &amp;quot;, &amp;quot;crc32: %0x&amp;quot; % binascii.crc32 (b&amp;quot;barba-papa&amp;quot; ) )  # bad way -&amp;gt; bytearray&lt;br /&gt;
print(&amp;quot;bytearray:&amp;quot;)&lt;br /&gt;
print( &amp;quot; &amp;quot;, bytearray(&amp;quot;barba-papa&amp;quot;,&amp;quot;utf8&amp;quot; ) )&lt;br /&gt;
print( &amp;quot; &amp;quot;, &amp;quot;crc32: %0x&amp;quot; % binascii.crc32(  bytearray(&amp;quot;barba-papa&amp;quot;, &amp;quot;utf8&amp;quot; ) ) )&lt;br /&gt;
print()&lt;br /&gt;
print( &amp;quot; &amp;quot;, bytearray(&amp;quot;Installation on Linux (Obsolète)&amp;quot;, &amp;quot;utf8&amp;quot; ) )&lt;br /&gt;
print( &amp;quot; &amp;quot;, &amp;quot;crc32: %0x&amp;quot; % binascii.crc32( bytearray(&amp;quot;Installation on Linux (Obsolète)&amp;quot;, &amp;quot;utf8&amp;quot; )))&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
== Les conversions ==&lt;br /&gt;
=== {{id|roundToSignificantDigitNumber}}Limiter le nombre de chiffres significatifs ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def roundToSignificantDigitNumber( x , nbDigit ):&lt;br /&gt;
    if x != 0.0 :&lt;br /&gt;
        ten = round(math.log10(x))&lt;br /&gt;
        tenFac = 10 ** ten&lt;br /&gt;
        x = round(x / tenFac,  nbDigit-1)&lt;br /&gt;
        x = x * tenFac&lt;br /&gt;
    return x   &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Convertir les None en nan ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
On utilise les liste en compréhension :&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
a = ( None, 1.2, -4 )&lt;br /&gt;
b = [ x  if x is not None else float(&amp;quot;nan&amp;quot;) for x in a ]&lt;br /&gt;
}}&lt;br /&gt;
on obtient:&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
[nan, 1.2, -4]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== hexadécimal ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def hextoint( x ):&lt;br /&gt;
    return int(x,16)&lt;br /&gt;
def inttohex( x ):&lt;br /&gt;
    return hex(x)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== binaire ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
a= &amp;quot;{0:08b}&amp;quot;.format( a )&lt;br /&gt;
}}&lt;br /&gt;
ou&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def bintoint( x ):&lt;br /&gt;
    return int(x,2)&lt;br /&gt;
&lt;br /&gt;
def inttobin( x ):&lt;br /&gt;
    return bin(x)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Couleur vers int (alpha, red, green, blue) ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def argbToInt( a, r, g, b ):&lt;br /&gt;
    st=struct.pack(&amp;quot;&amp;gt;BBBB&amp;quot;, a, r, g, b )&lt;br /&gt;
    i= struct.unpack(&amp;quot;&amp;gt;I&amp;quot;, st)[0] &lt;br /&gt;
    return i &lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def intToArgb( i ):&lt;br /&gt;
    print i&lt;br /&gt;
    st=struct.pack(&amp;quot;&amp;gt;I&amp;quot;, i ) &lt;br /&gt;
    return struct.unpack(&amp;quot;&amp;gt;BBBB&amp;quot;, st)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Formatage de texte ==&lt;br /&gt;
=== Le principe de la méthode {{mm|.format}} ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Un exemple pour comprendre rapidement :&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
&amp;quot;{name1:1.2f} bla bla {name2:02d} {name1:f}&amp;quot;.format(name1=3.14, name2=456)&lt;br /&gt;
}}&lt;br /&gt;
Ce qui produit :&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
'3.14 bla bla 456 3.140000'&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Physique ==&lt;br /&gt;
=== Nombre de chiffres significatifs  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
voir [[#roundToSignificantDigitNumber|Comment limiter le nombre de chiffres significatifs]].&lt;br /&gt;
}}&lt;br /&gt;
=== Rationnels et calculs symboliques / formels ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [http://docs.sympy.org/latest/tutorial/intro.html#what-is-symbolic-computation What is Symbolic Computation?] &lt;br /&gt;
* [https://github.com/sympy/sympy/wiki/Number-Theory-in-SymPy Number Theory in SymPy]&lt;br /&gt;
* [https://github.com/sympy sympy]&lt;br /&gt;
* [http://mpmath.org/ mpmath]&lt;br /&gt;
* [http://mpmath.org/doc/current/ Welcome to mpmath’s documentation!]&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
from sympy import Rational&lt;br /&gt;
a = Rational(2,3)&lt;br /&gt;
print(a)&lt;br /&gt;
b = Rational(4,3)&lt;br /&gt;
print(a+b)&lt;br /&gt;
&lt;br /&gt;
a=Rational(2*3*5*7*7,2*7*31)&lt;br /&gt;
print(a)&lt;br /&gt;
&lt;br /&gt;
sympy.factorint(105)&lt;br /&gt;
a = 2*3*5*7*7&lt;br /&gt;
b= 2*7*31&lt;br /&gt;
sympy.factorint(a)&lt;br /&gt;
sympy.factorint(b)&lt;br /&gt;
pgcd = sympy.gcd(a,b)&lt;br /&gt;
print(pgcd)&lt;br /&gt;
&lt;br /&gt;
aa= a / pgcd&lt;br /&gt;
bb= b / pgcd&lt;br /&gt;
sympy.factorint(aa)&lt;br /&gt;
sympy.factorint(bb)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{code|colNb=70|lang=text|code=&lt;br /&gt;
2/3&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
105&lt;br /&gt;
───&lt;br /&gt;
 31&lt;br /&gt;
&lt;br /&gt;
{3: 1, 5: 1, 7: 1}&lt;br /&gt;
{2: 1, 3: 1, 5: 1, 7: 2}&lt;br /&gt;
{2: 1, 7: 1, 31: 1}&lt;br /&gt;
&lt;br /&gt;
14&lt;br /&gt;
&lt;br /&gt;
{3: 1, 5: 1, 7: 1}&lt;br /&gt;
{31: 1}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
from sympy import symbol&lt;br /&gt;
from sympy import symbols&lt;br /&gt;
x = symbols(&amp;quot;x&amp;quot;)&lt;br /&gt;
sympy.init_printing(use_unicode=True)&lt;br /&gt;
sympy.integrate(sympy.sin(x**2), x)&lt;br /&gt;
sympy.integrate(sympy.sin(x**2), (x,-sympy.oo,sympy.oo))&lt;br /&gt;
}}&lt;br /&gt;
{{code|colNb=70|lang=text|code=&lt;br /&gt;
Intégrale :&lt;br /&gt;
&lt;br /&gt;
                ⎛√2⋅x⎞       &lt;br /&gt;
3⋅√2⋅√π⋅fresnels⎜────⎟⋅Γ(3/4)&lt;br /&gt;
                ⎝ √π ⎠       &lt;br /&gt;
─────────────────────────────&lt;br /&gt;
           8⋅Γ(7/4)          &lt;br /&gt;
&lt;br /&gt;
√2⋅√π&lt;br /&gt;
─────&lt;br /&gt;
  2  &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Unités ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* Voir [http://docs.sympy.org/latest/modules/physics/units/quantities.html]&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
from sympy.physics.units import *&lt;br /&gt;
a = 254 * m / s&lt;br /&gt;
b =  convert_to(a, [minute])&lt;br /&gt;
print(b)&lt;br /&gt;
find_unit(kg)&lt;br /&gt;
}}&lt;br /&gt;
{{code|colNb=70|lang=text|code=&lt;br /&gt;
15240*meter/minute&lt;br /&gt;
&lt;br /&gt;
[g, kg, mg, ug, amu, mmu, amus, gram, mmus, grams, pound, pounds, &lt;br /&gt;
kilogram, kilograms, microgram, milligram, micrograms, milligrams, &lt;br /&gt;
planck_mass, milli_mass_unit, atomic_mass_unit, atomic_mass_constant]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Listes des unités ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
# Dimensionless&lt;br /&gt;
&lt;br /&gt;
percent = percents = Rational(1, 100)&lt;br /&gt;
permille = permille = Rational(1, 1000)&lt;br /&gt;
&lt;br /&gt;
ten = Rational(10)&lt;br /&gt;
&lt;br /&gt;
yotta = ten**24&lt;br /&gt;
zetta = ten**21&lt;br /&gt;
exa = ten**18&lt;br /&gt;
peta = ten**15&lt;br /&gt;
tera = ten**12&lt;br /&gt;
giga = ten**9&lt;br /&gt;
mega = ten**6&lt;br /&gt;
kilo = ten**3&lt;br /&gt;
deca = ten**1&lt;br /&gt;
deci = ten**-1&lt;br /&gt;
centi = ten**-2&lt;br /&gt;
milli = ten**-3&lt;br /&gt;
micro = ten**-6&lt;br /&gt;
nano = ten**-9&lt;br /&gt;
pico = ten**-12&lt;br /&gt;
femto = ten**-15&lt;br /&gt;
atto = ten**-18&lt;br /&gt;
zepto = ten**-21&lt;br /&gt;
yocto = ten**-24&lt;br /&gt;
&lt;br /&gt;
rad = radian = radians = 1&lt;br /&gt;
deg = degree = degrees = pi/180&lt;br /&gt;
sr = steradian = steradians = 1&lt;br /&gt;
&lt;br /&gt;
# Base units&lt;br /&gt;
&lt;br /&gt;
length = m = meter = meters = Unit('meter', 'm')&lt;br /&gt;
mass = kg = kilogram = kilograms = Unit('kilogram', 'kg')&lt;br /&gt;
time = s = second = seconds = Unit('second', 's')&lt;br /&gt;
current = A = ampere = amperes = Unit('ampere', 'A')&lt;br /&gt;
temperature = K = kelvin = kelvins = Unit('kelvin', 'K')&lt;br /&gt;
amount = mol = mole = moles = Unit('mole', 'mol')&lt;br /&gt;
luminosity = cd = candela = candelas = Unit('candela', 'cd')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Derived units&lt;br /&gt;
volume = meter**3&lt;br /&gt;
frequency = Hz = hz = hertz = 1/s&lt;br /&gt;
force = N = newton = newtons = m*kg/s**2&lt;br /&gt;
energy = J = joule = joules = N*m&lt;br /&gt;
power = W = watt = watts = J/s&lt;br /&gt;
pressure = Pa = pa = pascal = pascals = N/m**2&lt;br /&gt;
charge = C = coulomb = coulombs = s*A&lt;br /&gt;
voltage = v = V = volt = volts = W/A&lt;br /&gt;
resistance = ohm = ohms = V/A&lt;br /&gt;
conductance = S = siemens = mho = mhos = A/V&lt;br /&gt;
capacitance = F = farad = farads = C/V&lt;br /&gt;
magnetic_flux = Wb = wb = weber = webers = J/A&lt;br /&gt;
magnetic_flux_density = T = tesla = teslas = V*s/m**2&lt;br /&gt;
inductance = H = henry = henrys = V*s/A&lt;br /&gt;
speed = m/s&lt;br /&gt;
acceleration = m/s**2&lt;br /&gt;
density = kg/m**3&lt;br /&gt;
optical_power = dioptre = D = 1/m&lt;br /&gt;
illuminance = lux = lx = sr*cd/m**2&lt;br /&gt;
&lt;br /&gt;
# Common length units&lt;br /&gt;
&lt;br /&gt;
km = kilometer = kilometers = kilo*m&lt;br /&gt;
dm = decimeter = decimeters = deci*m&lt;br /&gt;
cm = centimeter = centimeters = centi*m&lt;br /&gt;
mm = millimeter = millimeters = milli*m&lt;br /&gt;
um = micrometer = micrometers = micron = microns = micro*m&lt;br /&gt;
nm = nanometer = nanometers = nano*m&lt;br /&gt;
pm = picometer = picometers = pico*m&lt;br /&gt;
&lt;br /&gt;
ft = foot = feet = Rational('0.3048')*m&lt;br /&gt;
inch = inches = Rational('25.4')*mm&lt;br /&gt;
yd = yard = yards = 3*ft&lt;br /&gt;
mi = mile = miles = 5280*ft&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Common volume and area units&lt;br /&gt;
&lt;br /&gt;
l = liter = liters = m**3 / 1000&lt;br /&gt;
dl = deciliter = deciliters = deci*l&lt;br /&gt;
cl = centiliter = centiliters = centi*l&lt;br /&gt;
ml = milliliter = milliliters = milli*l&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Common time units&lt;br /&gt;
&lt;br /&gt;
ms = millisecond = milliseconds = milli*s&lt;br /&gt;
us = microsecond = microseconds = micro*s&lt;br /&gt;
ns = nanosecond = nanoseconds = nano*s&lt;br /&gt;
ps = picosecond = picoseconds = pico*s&lt;br /&gt;
&lt;br /&gt;
minute = minutes = 60*s&lt;br /&gt;
h = hour = hours = 60*minute&lt;br /&gt;
day = days = 24*hour&lt;br /&gt;
&lt;br /&gt;
anomalistic_year = anomalistic_years = Rational('365.259636')*day&lt;br /&gt;
sidereal_year = sidereal_years = Rational('31558149.540')*s&lt;br /&gt;
tropical_year = tropical_years = Rational('365.24219')*day&lt;br /&gt;
common_year = common_years = Rational('365')*day&lt;br /&gt;
julian_year = julian_years = Rational('365.25')*day&lt;br /&gt;
draconic_year = draconic_years = Rational('346.62')*day&lt;br /&gt;
gaussian_year = gaussian_years = Rational('365.2568983')*day&lt;br /&gt;
full_moon_cycle = full_moon_cycles = Rational('411.78443029')*day&lt;br /&gt;
&lt;br /&gt;
year = years = tropical_year&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Common mass units&lt;br /&gt;
&lt;br /&gt;
g = gram = grams = kilogram / kilo&lt;br /&gt;
mg = milligram = milligrams = milli * g&lt;br /&gt;
ug = microgram = micrograms = micro * g&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
# Physical constants&lt;br /&gt;
#&lt;br /&gt;
c = speed_of_light = 299792458 * m/s&lt;br /&gt;
G = gravitational_constant = Rational('6.67428') * ten**-11 * m**3 / kg / s**2&lt;br /&gt;
u0 = magnetic_constant = 4*pi * ten**-7 * N/A**2&lt;br /&gt;
e0 = electric_constant = 1/(u0 * c**2)&lt;br /&gt;
Z0 = vacuum_impedance = u0 * c&lt;br /&gt;
&lt;br /&gt;
planck = Rational('6.62606896') * ten**-34 * J*s&lt;br /&gt;
hbar = planck / (2*pi)&lt;br /&gt;
&lt;br /&gt;
avogadro_number = Rational('6.02214179') * 10**23&lt;br /&gt;
avogadro = avogadro_constant = avogadro_number / mol&lt;br /&gt;
boltzmann = Rational('1.3806505') * ten**-23 * J / K&lt;br /&gt;
&lt;br /&gt;
gee = gees = Rational('9.80665') * m/s**2&lt;br /&gt;
atmosphere = atmospheres = atm = 101325 * pascal&lt;br /&gt;
&lt;br /&gt;
kPa = kilo*Pa&lt;br /&gt;
bar = bars = 100*kPa&lt;br /&gt;
pound = pounds = 0.45359237 * kg * gee  # exact&lt;br /&gt;
psi = pound / inch ** 2&lt;br /&gt;
dHg0 = 13.5951  # approx value at 0 C&lt;br /&gt;
mmHg = dHg0 * 9.80665 * Pa&lt;br /&gt;
amu = amus = gram / avogadro / mol&lt;br /&gt;
mmu = mmus = gram / mol&lt;br /&gt;
quart = quarts = Rational(231, 4) * inch**3&lt;br /&gt;
eV = 1.602176487e-19 * J&lt;br /&gt;
&lt;br /&gt;
# Other convenient units and magnitudes&lt;br /&gt;
&lt;br /&gt;
ly = lightyear = lightyears = c*julian_year&lt;br /&gt;
au = astronomical_unit = astronomical_units = 149597870691*m&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Math ==&lt;br /&gt;
=== Équation de second degré  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
def secondDegreeEquation(a,b,c):&lt;br /&gt;
    # a*x*x + b*y + c = 0&lt;br /&gt;
    x1 = None&lt;br /&gt;
    x2 = None&lt;br /&gt;
    det = b*b - 4 * a * c&lt;br /&gt;
    if det&amp;gt;= 0.0 :&lt;br /&gt;
        sqDet = math.sqrt(det)&lt;br /&gt;
        a2 = a * 2.0&lt;br /&gt;
        x1 = (-b - sqDet ) / a2 &lt;br /&gt;
        x2 = (-b + sqDet ) / a2&lt;br /&gt;
    return x1, x2&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Régression linéaire  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
source [https://www.science-emergence.com/Articles/R%C3%A9gression-lin%C3%A9aire-simple-avec-python/ www.science-emergence.com]&lt;br /&gt;
{{figc|Régression linéaire|linearRegressionInPython.png}}&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
from sklearn import linear_model&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
x,y = np.loadtxt(&amp;quot;test.txt&amp;quot;, unpack='true')&lt;br /&gt;
&lt;br /&gt;
plt.scatter(x,y)&lt;br /&gt;
&lt;br /&gt;
regr = linear_model.LinearRegression()&lt;br /&gt;
regr.fit(x[:,np.newaxis], y)&lt;br /&gt;
&lt;br /&gt;
x_test = np.linspace(np.min(x), np.max(x), 100)&lt;br /&gt;
&lt;br /&gt;
plt.plot(x_test, regr.predict(x_test[:,np.newaxis]), color='blue', linewidth=3)&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
}}&lt;br /&gt;
Pour obtenir le coefficient directeur et l'ordonnée à l'origine de la droite:&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
print 'slope', regr.coef_&lt;br /&gt;
print 'intercept', regr.intercept_&lt;br /&gt;
}}&lt;br /&gt;
donne ici&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
slope [ 0.80723367]&lt;br /&gt;
intercept -0.623011727604&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Décomposition d'un nombre en facteurs premiers ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=70|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
 &lt;br /&gt;
def facteurs(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;facteurs(n): décomposition d'un nombre entier n en facteurs premiers&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    F = []&lt;br /&gt;
    if n==1:&lt;br /&gt;
        return F&lt;br /&gt;
    # recherche de tous les facteurs 2 s'il y en a&lt;br /&gt;
    while n&amp;gt;=2:&lt;br /&gt;
        x,r = divmod(n,2)&lt;br /&gt;
        if r!=0:&lt;br /&gt;
            break&lt;br /&gt;
        F.append(2)&lt;br /&gt;
        n = x&lt;br /&gt;
    # recherche des facteurs 1er &amp;gt;2&lt;br /&gt;
    i=3&lt;br /&gt;
    rn = lsqrt(n)+1&lt;br /&gt;
    while i&amp;lt;=n:&lt;br /&gt;
        if i&amp;gt;rn:&lt;br /&gt;
            F.append(n)&lt;br /&gt;
            break&lt;br /&gt;
        x,r = divmod(n,i)&lt;br /&gt;
        if r==0:&lt;br /&gt;
            F.append(i)&lt;br /&gt;
            n=x&lt;br /&gt;
            rn = lsqrt(n)+1&lt;br /&gt;
        else:&lt;br /&gt;
            i += 2&lt;br /&gt;
    return F&lt;br /&gt;
 &lt;br /&gt;
# exemple d'utilisation:&lt;br /&gt;
print facteurs(100)  # affiche [2,2,5,5]&lt;br /&gt;
print facteurs(123456789)  # affiche [3,3,3607,3803]&lt;br /&gt;
print facteurs(12345678901234567890) # affiche [2,3,3,5,101,3541,3607,3803,27961L]&lt;br /&gt;
 &lt;br /&gt;
# et test avec un nombre premier&lt;br /&gt;
print facteurs(4291979)  # affiche [4291979]&lt;br /&gt;
}}&lt;br /&gt;
source: http://python.jpvweb.com/python/mesrecettespython/doku.php?id=decomposition_en_facteurs_premiers&lt;br /&gt;
}}&lt;br /&gt;
=== Histogram - densité de probabilité ===&lt;br /&gt;
==== Numpy ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Utilisation la fonction d’histogramme de numpy  voir [https://numpy.org/doc/stable/reference/generated/numpy.histogram.html]&lt;br /&gt;
&lt;br /&gt;
Avec l’option {{mm|density = True}} :&lt;br /&gt;
&lt;br /&gt;
Soit n Intervalles I(i) de longueur L(i) &lt;br /&gt;
et Q(i) la quantité de valeurs incluse dans I(i)&lt;br /&gt;
&lt;br /&gt;
Soit Qt = somme des Qi&lt;br /&gt;
&lt;br /&gt;
Alors l’histogramme avec density=True est la suite des H(i) = Q(i)/L(i)/Qt&lt;br /&gt;
&lt;br /&gt;
Et ainsi l’intégrale de de l’histogramme vaut 1 car c’est la somme de  des H(i)*L(i) =  somme de Q(i)/Qt = 1&lt;br /&gt;
&lt;br /&gt;
Voici un petit code python pour illustrer : &lt;br /&gt;
&lt;br /&gt;
{{code|colNb=80|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
import numpy as np&lt;br /&gt;
interval = np.linspace(-0.5,1.5,20)&lt;br /&gt;
print(interval)&lt;br /&gt;
intervalD = np.diff(interval)&lt;br /&gt;
print(intervalD)&lt;br /&gt;
vals = [ -0.2, 0.1, 0.4, -0.8, 2.8, 0.4 , 6.8, 1.3  ]&lt;br /&gt;
hist0 = np.histogram( vals, bins=interval )&lt;br /&gt;
hist = np.histogram(  vals, bins=interval , density=True)&lt;br /&gt;
print(&amp;quot;quantity&amp;quot;)&lt;br /&gt;
print(hist0[0].tolist())&lt;br /&gt;
print(&amp;quot;density&amp;quot;)&lt;br /&gt;
print(hist[0].tolist())&lt;br /&gt;
print(&amp;quot;integral&amp;quot;)&lt;br /&gt;
print( np.sum(hist[0]*intervalD)  )&lt;br /&gt;
}}&lt;br /&gt;
ce qui donne :&lt;br /&gt;
{{code|colNb=80|lang=text|code=&lt;br /&gt;
[-0.5        -0.39473684 -0.28947368 -0.18421053 -0.07894737  0.02631579&lt;br /&gt;
  0.13157895  0.23684211  0.34210526  0.44736842  0.55263158  0.65789474&lt;br /&gt;
  0.76315789  0.86842105  0.97368421  1.07894737  1.18421053  1.28947368&lt;br /&gt;
  1.39473684  1.5       ]&lt;br /&gt;
[0.10526316 0.10526316 0.10526316 0.10526316 0.10526316 0.10526316&lt;br /&gt;
0.10526316 0.10526316 0.10526316 0.10526316 0.10526316 0.10526316&lt;br /&gt;
0.10526316 0.10526316 0.10526316 0.10526316 0.10526316 0.10526316&lt;br /&gt;
0.10526316]&lt;br /&gt;
quantity&lt;br /&gt;
[0, 0, 1, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0]&lt;br /&gt;
density&lt;br /&gt;
[0.0, 0.0, 1.9, 0.0, 0.0, 1.9, 0.0, 0.0, 3.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.8999999999999981, 0.0]&lt;br /&gt;
integral&lt;br /&gt;
1.0&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Parallélisme  ==&lt;br /&gt;
=== multiprocessing ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding: UTF-8 -*-&lt;br /&gt;
#***********************************************************&lt;br /&gt;
&lt;br /&gt;
import time&lt;br /&gt;
import math&lt;br /&gt;
import sys&lt;br /&gt;
from multiprocessing import Pool&lt;br /&gt;
&lt;br /&gt;
def getPoreccessorNumber():&lt;br /&gt;
    return multiprocessing.cpu_count()&lt;br /&gt;
&lt;br /&gt;
def parallelCall(params):  # a helper for calling 'remote' instances&lt;br /&gt;
    &lt;br /&gt;
    # get our class type&lt;br /&gt;
    cls = getattr(sys.modules[__name__], params[0])  &lt;br /&gt;
    &lt;br /&gt;
    # create a new instance without invoking __init__&lt;br /&gt;
    instance = cls.__new__(cls)  &lt;br /&gt;
    &lt;br /&gt;
    # apply the passed state to the new instance&lt;br /&gt;
    instance.__dict__ = params[1]  &lt;br /&gt;
    &lt;br /&gt;
    # get the requested method&lt;br /&gt;
    method = getattr(instance, params[2])  &lt;br /&gt;
    args = params[3] if isinstance(params[3], (list, tuple)) else [params[3]]&lt;br /&gt;
    &lt;br /&gt;
    # expand arguments, call our method and return the result&lt;br /&gt;
    return method(*args)  &lt;br /&gt;
&lt;br /&gt;
class CMultiProc(object):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.val = None&lt;br /&gt;
&lt;br /&gt;
    def calc(self, num,  i1, i2):&lt;br /&gt;
        self.num = num        &lt;br /&gt;
        val = 0        &lt;br /&gt;
        for i in range(i1, i2) :&lt;br /&gt;
                #val += math.cos(math.sqrt(i*i))&lt;br /&gt;
                val += i*i&lt;br /&gt;
        self.val = val&lt;br /&gt;
        return ( self.num, val )&lt;br /&gt;
&lt;br /&gt;
    def do(self, data):&lt;br /&gt;
        t = Pool(processes=len(data))&lt;br /&gt;
        rs = t.map(parallelCall, self.prepareCall(&amp;quot;calc&amp;quot;, (data) ))&lt;br /&gt;
        t.close()&lt;br /&gt;
        return rs&lt;br /&gt;
&lt;br /&gt;
    # creates a 'remote call' package for each argument&lt;br /&gt;
    def prepareCall(self, name, args):  &lt;br /&gt;
        for arg in args:&lt;br /&gt;
            yield [self.__class__.__name__, self.__dict__, name, arg]&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:  # important protection for cross-platform use&lt;br /&gt;
    &lt;br /&gt;
    ############################################################################&lt;br /&gt;
    data = [ &lt;br /&gt;
            (1,0       ,10000000), &lt;br /&gt;
            (2,10000000,20000000), &lt;br /&gt;
            (3,20000000,30000000), &lt;br /&gt;
            (4,30000000,40000000), &lt;br /&gt;
            (5,40000000,50000000),&lt;br /&gt;
            (6,50000000,60000000), &lt;br /&gt;
            (7,60000000,70000000), &lt;br /&gt;
            (8,70000000,80000000), &lt;br /&gt;
            (9,80000000,90000000), &lt;br /&gt;
            (10,90000000,100000000), &lt;br /&gt;
            (11,100000000,110000000),&lt;br /&gt;
            (12,110000000,120000000),&lt;br /&gt;
            (13,120000000,130000000),&lt;br /&gt;
            (14,130000000,140000000),&lt;br /&gt;
            (15,140000000,150000000),&lt;br /&gt;
            (16,150000000,160000000),  &lt;br /&gt;
            ]&lt;br /&gt;
    ############################################################################&lt;br /&gt;
    # parallel    &lt;br /&gt;
    print(&amp;quot;parallèle&amp;quot;)&lt;br /&gt;
    t0 = time.time()&lt;br /&gt;
    multiProc = CMultiProc(  )    &lt;br /&gt;
    res =  multiProc.do( data  )&lt;br /&gt;
    vp = 0&lt;br /&gt;
    for num, val in res :&lt;br /&gt;
        vp += val&lt;br /&gt;
        print(&amp;quot;% 5d % 5.1f &amp;quot; % (num, val) )&lt;br /&gt;
    print(vp)                &lt;br /&gt;
    pt = time.time()-t0           &lt;br /&gt;
    print(&amp;quot;t=% 5.1f&amp;quot; % (pt),&amp;quot;s&amp;quot; )&lt;br /&gt;
    ############################################################################    &lt;br /&gt;
    # serial&lt;br /&gt;
    print(&amp;quot;série&amp;quot;)&lt;br /&gt;
    t0 = time.time()&lt;br /&gt;
    vs = 0&lt;br /&gt;
    for i in range(0,160000000) :&lt;br /&gt;
        # v += math.cos((math.sqrt(i*i)) )&lt;br /&gt;
        vs += i*i&lt;br /&gt;
    st = time.time()-t0&lt;br /&gt;
    print(vs)    &lt;br /&gt;
    print(&amp;quot;t=% 5.1f&amp;quot; % (st),&amp;quot;s&amp;quot; )&lt;br /&gt;
    ############################################################################    &lt;br /&gt;
    # diff&lt;br /&gt;
    print(&amp;quot;Diff&amp;quot;, vp -vs )&lt;br /&gt;
    print(&amp;quot;Gain&amp;quot;, st / pt  )&lt;br /&gt;
}}&lt;br /&gt;
Résultats:&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
parallèle&lt;br /&gt;
    1  333333283333335023616.0&lt;br /&gt;
    2  2333333183333335040000.0&lt;br /&gt;
    3  6333333083333335187456.0&lt;br /&gt;
    4  12333332983333334810624.0&lt;br /&gt;
    5  20333332883333336530944.0&lt;br /&gt;
    6  30333332783333336154112.0&lt;br /&gt;
    7  42333332683333335777280.0&lt;br /&gt;
    8  56333332583333331206144.0&lt;br /&gt;
    9  72333332483333330829312.0&lt;br /&gt;
   10  90333332383333334646784.0&lt;br /&gt;
   11  110333332283333334269952.0&lt;br /&gt;
   12  132333332183333329698816.0&lt;br /&gt;
   13  156333332083333337710592.0&lt;br /&gt;
   14  182333331983333341528064.0&lt;br /&gt;
   15  210333331883333324374016.0&lt;br /&gt;
   16  240333331783333319802880.0&lt;br /&gt;
1365333320533333360000000&lt;br /&gt;
t=  1.9 s&lt;br /&gt;
série&lt;br /&gt;
1365333320533333360000000&lt;br /&gt;
t= 12.0 s&lt;br /&gt;
Diff 0&lt;br /&gt;
Gain 6.214744302379906&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Timer (onsolète voir multiprocessing) ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80|lang=python|code=&lt;br /&gt;
import threading&lt;br /&gt;
prLock = threading.RLock()&lt;br /&gt;
# ...&lt;br /&gt;
        # initialization&lt;br /&gt;
        self.timer = None&lt;br /&gt;
        self.executing = False&lt;br /&gt;
        self.wating = False&lt;br /&gt;
# ...&lt;br /&gt;
    ############################################################################&lt;br /&gt;
    def doSomeThing(self):&lt;br /&gt;
        global prLock&lt;br /&gt;
        prLock.acquire()&lt;br /&gt;
        if self.executing:&lt;br /&gt;
&lt;br /&gt;
            # ... do someThing in parallel thread&lt;br /&gt;
&lt;br /&gt;
        prLock.release()&lt;br /&gt;
        self.launchTimer()&lt;br /&gt;
    ############################################################################&lt;br /&gt;
    def launchTimer(self):&lt;br /&gt;
        global prLock&lt;br /&gt;
        if self.executing:&lt;br /&gt;
            self.timer = threading.Timer(10, self.doSomeThing)&lt;br /&gt;
            self.timer.start()&lt;br /&gt;
        else:&lt;br /&gt;
            prLock.acquire()&lt;br /&gt;
            self.wating = False&lt;br /&gt;
            prLock.release()&lt;br /&gt;
# ...&lt;br /&gt;
    # start the main process&lt;br /&gt;
    prLock.acquire()&lt;br /&gt;
    param.wating = True&lt;br /&gt;
    param.executing = True&lt;br /&gt;
    prLock.release()&lt;br /&gt;
&lt;br /&gt;
    # ... do things in the main thread&lt;br /&gt;
&lt;br /&gt;
    prLock.acquire()&lt;br /&gt;
    param.executing = False&lt;br /&gt;
&lt;br /&gt;
    print &amp;quot;wait ...&amp;quot;&lt;br /&gt;
    prLock.release()&lt;br /&gt;
&lt;br /&gt;
    waiting = True&lt;br /&gt;
    while waiting:&lt;br /&gt;
        prLock.acquire()&lt;br /&gt;
        waiting = param.wating&lt;br /&gt;
        prLock.release()&lt;br /&gt;
    # the end of all&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Aller plus loin avec le langage ==&lt;br /&gt;
&lt;br /&gt;
=== Obtenir le nom ou les noms de la variable ===&lt;br /&gt;
&lt;br /&gt;
{{Todo|texte=A tester et valider :}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def find_names(obj):&lt;br /&gt;
    frame = sys._getframe()&lt;br /&gt;
    for frame in iter(lambda: frame.f_back, None):&lt;br /&gt;
        frame.f_locals&lt;br /&gt;
    result = []&lt;br /&gt;
    for referrer in gc.get_referrers(obj):&lt;br /&gt;
        if isinstance(referrer, dict):&lt;br /&gt;
            for k, v in referrer.iteritems():&lt;br /&gt;
                if v is obj:&lt;br /&gt;
                    result.append(k)&lt;br /&gt;
    return result&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Obtenir le nom de la fonction ===&lt;br /&gt;
&lt;br /&gt;
==== Nom de fichier,  n° de ligne, nom de fonction sur plusieurs niveaux ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
import sys&lt;br /&gt;
import inspect&lt;br /&gt;
&lt;br /&gt;
def getFrameStr( fr  ):&lt;br /&gt;
    _, fileName = os.path.split( fr.f_code.co_filename )&lt;br /&gt;
    fname = fr.f_code.co_name&lt;br /&gt;
    line = fr.f_lineno&lt;br /&gt;
    return &amp;quot;%s(%d).%s&amp;quot; % (fileName,line,  fname)&lt;br /&gt;
 &lt;br /&gt;
def pfname():&lt;br /&gt;
    src1 = &amp;quot;&amp;quot;&lt;br /&gt;
    src2 = &amp;quot;&amp;quot;&lt;br /&gt;
    src3 = &amp;quot;&amp;quot;    &lt;br /&gt;
    nb = len(inspect.stack())&lt;br /&gt;
    print( nb )&lt;br /&gt;
    if nb &amp;gt; 2 :&lt;br /&gt;
        src1 = getFrameStr( sys._getframe(3) )&lt;br /&gt;
    if nb &amp;gt; 1 :    &lt;br /&gt;
        src2 = getFrameStr( sys._getframe(2) )&lt;br /&gt;
    if nb &amp;gt; 0 :    &lt;br /&gt;
        src3 = getFrameStr( sys._getframe(1) ) &lt;br /&gt;
    print( &amp;quot;%s %s %s : &amp;quot; %(src1,src2,src3), end=&amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Fonction courante ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pfname( self ):&lt;br /&gt;
    print self.__class__.__name__,sys._getframe().f_code.co_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def func_name():&lt;br /&gt;
    return sys._getframe(1).f_code.co_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fonction appelante ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pfname( self ):&lt;br /&gt;
    print self.__class__.__name__,sys._getframe(1).f_code.co_name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi [[#error_in_function|error_in_function]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Liens ====&lt;br /&gt;
*[http://code.activestate.com/recipes/66062/ www.activestate.com (Recipe 66062: Determining Current Function Name) ]&lt;br /&gt;
&lt;br /&gt;
== utilisation des feuilles excel ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* Lien vers les modules (source) :&lt;br /&gt;
*: http://www.python-excel.org/&lt;br /&gt;
}}{{parW|1=&lt;br /&gt;
Working with Excel Files in Python&lt;br /&gt;
This site contains pointers to the best information available about working with Excel files in the Python programming language.&lt;br /&gt;
}}{{parW|1=&lt;br /&gt;
The Packages&lt;br /&gt;
There are python packages available to work with Excel files that will run on any Python platform and that do not require either Windows or Excel to be used. They are fast, reliable and open source:&lt;br /&gt;
&lt;br /&gt;
Download | Documentation | Bitbucket&lt;br /&gt;
&lt;br /&gt;
* openpyxl&lt;br /&gt;
*: The recommended package for reading and writing Excel 2010 files (ie: .xlsx)&lt;br /&gt;
*: Download https://pypi.python.org/pypi/openpyxl&lt;br /&gt;
*: Documentation https://openpyxl.readthedocs.io/en/default/&lt;br /&gt;
*: Bitbucket https://bitbucket.org/openpyxl/openpyxl &lt;br /&gt;
&lt;br /&gt;
* xlsxwriter&lt;br /&gt;
* An alternative package for writing data, formatting information and, in particular, charts in the Excel 2010 format (ie: .xlsx)&lt;br /&gt;
*: Download&lt;br /&gt;
*: Documentation&lt;br /&gt;
*: Bitbucket&lt;br /&gt;
&lt;br /&gt;
* xlrd&lt;br /&gt;
*: This package is for reading data and formatting information from older Excel files (ie: .xls)&lt;br /&gt;
*:&lt;br /&gt;
&lt;br /&gt;
* xlwt&lt;br /&gt;
*: This package is for writing data and formatting information to older Excel files (ie: .xls)&lt;br /&gt;
*: &lt;br /&gt;
&lt;br /&gt;
* xlutils&lt;br /&gt;
*: This package collects utilities that require both xlrd and xlwt, including the ability to copy and modify or filter existing excel files. &lt;br /&gt;
*: NB: In general, these use cases are now covered by openpyxl!&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== clipboard - presse-papier ==&lt;br /&gt;
=== le module clipboard ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
import clipboard&lt;br /&gt;
&lt;br /&gt;
clipboard.copy(&amp;quot;abc&amp;quot;)  # now the clipboard content will be string &amp;quot;abc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text = clipboard.paste()  # text will have the content of clipboard&lt;br /&gt;
}}&lt;br /&gt;
source  : https://pypi.python.org/pypi/clipboard/0.0.4&lt;br /&gt;
il faut aussi : https://pypi.python.org/pypi/pyperclip&lt;br /&gt;
}}&lt;br /&gt;
=== Exemple d'application : copier le chemin du fond d'écran de gnome dans le clipboard  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
the_bash_file=$0&lt;br /&gt;
the_bash_file_dir_name=$(realpath `dirname &amp;quot;$the_bash_file&amp;quot;`)&lt;br /&gt;
the_bash_file_base_name=`basename &amp;quot;$the_bash_file&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
imgpath=$(gsettings get org.gnome.desktop.background picture-uri)&lt;br /&gt;
&lt;br /&gt;
python ${the_bash_file_dir_name}/toClipBoard.py &amp;quot;${imgpath}&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
#!/bin/python&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
import clipboard&lt;br /&gt;
clipboard.copy(sys.argv[1][1:-1]) &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Texte ==&lt;br /&gt;
=== Supprimer les accents ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import unicodedata&lt;br /&gt;
&lt;br /&gt;
def strip_accents(ss):&lt;br /&gt;
   s=ss&lt;br /&gt;
   return ''.join(c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rearrange_text ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
patWordSep=re.compile(&amp;quot;\s+&amp;quot;, re.DOTALL )&lt;br /&gt;
def rearrange_text( text, tab, rearrange_lf=0 ):&lt;br /&gt;
    lines = list()&lt;br /&gt;
    if rearrange_lf :&lt;br /&gt;
        txt = ''&lt;br /&gt;
        ww = text.split('\n')&lt;br /&gt;
        if len(ww) == 0 :&lt;br /&gt;
            txt = text&lt;br /&gt;
        else :&lt;br /&gt;
            for w in ww :&lt;br /&gt;
                txt += w.strip()+' '&lt;br /&gt;
        words = patWordSep.split( txt )&lt;br /&gt;
        if len(words) &amp;gt; 0 :&lt;br /&gt;
            txt = &amp;quot;&amp;quot;            &lt;br /&gt;
            line = ''&lt;br /&gt;
            for w in words :&lt;br /&gt;
                w=w.strip()&lt;br /&gt;
                if len(w) &amp;gt; 0 :&lt;br /&gt;
                    if len(line) + len(w) &amp;gt; 80 :&lt;br /&gt;
                        lines.append( line )&lt;br /&gt;
                        line = w + &amp;quot; &amp;quot;&lt;br /&gt;
                    else :&lt;br /&gt;
                        line=line+w+&amp;quot; &amp;quot;&lt;br /&gt;
            if len( line )&amp;gt;0 :&lt;br /&gt;
                lines.append( line )&lt;br /&gt;
&lt;br /&gt;
    else :&lt;br /&gt;
        ww = text.split('\n')&lt;br /&gt;
        if len(ww) == 0 :&lt;br /&gt;
            lines.append( text )&lt;br /&gt;
        else :&lt;br /&gt;
            for w in ww :&lt;br /&gt;
                lines.append( w )&lt;br /&gt;
&lt;br /&gt;
    txt = ''&lt;br /&gt;
    for line in lines :&lt;br /&gt;
        txt += tab+line+&amp;quot;\n&amp;quot;&lt;br /&gt;
    return txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[XML avec xml.dom.minidom]] ==&lt;br /&gt;
== [[XML avec xml.sax.xmlreader]] ==&lt;br /&gt;
&lt;br /&gt;
== Tkinter : la bibliothèque graphique ==&lt;br /&gt;
* [[Tkinter:Index]]&lt;br /&gt;
&lt;br /&gt;
== {{id|install}}Installation ==&lt;br /&gt;
=== Installation de librairies  ===&lt;br /&gt;
==== Seulement pour un utilisateur ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
python setup.py install --user&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== {{id|compile}}Installation avec compilation des modules écrits en C ===&lt;br /&gt;
==== Sous WINDOWS ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Le mieux est d'installer Visual Studio avec l'option {{dq|Python tools ...}} en choisissant l'option {{dq|Installation personnalisée}}&lt;br /&gt;
}}&lt;br /&gt;
==== Sous Linux ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [[Compilation:Index#Exemple_:_compilation_aes_pour_python_2.5| Exemple : compilation aes pour python 2.5]]&lt;br /&gt;
* [[alo-aes]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== pylint ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
pylint --generate-rcfile  &amp;gt; ~/.pylintrc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
== Annotation des functions - typage des arguments  ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Il est recommandé d'adopter les conventions suivantes pour améliorer la lisibilité du code :&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
def send_email(address,     # type: Union[str, List[str]]&lt;br /&gt;
               sender,      # type: str&lt;br /&gt;
               cc,          # type: Optional[List[str]]&lt;br /&gt;
               bcc,         # type: Optional[List[str]]&lt;br /&gt;
               subject='',&lt;br /&gt;
               body=None    # type: List[str]&lt;br /&gt;
               ):&lt;br /&gt;
    # type: (...) -&amp;gt; bool&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Send an email message.  Return True if successful.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=python|code=&lt;br /&gt;
from typing import List&lt;br /&gt;
&lt;br /&gt;
class Example:&lt;br /&gt;
    def method(self,&lt;br /&gt;
               lst,      # type: List[str]&lt;br /&gt;
               opt=0,    # type: int&lt;br /&gt;
               *args,    # type: str&lt;br /&gt;
               **kwargs  # type: bool&lt;br /&gt;
               ):&lt;br /&gt;
        # type: (...) -&amp;gt; int&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Docstring comes after type comment.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        ...&lt;br /&gt;
}}&lt;br /&gt;
* source &lt;br /&gt;
*: http://mypy.readthedocs.io/en/latest/python2.html#multi-line-python-2-function-annotations&lt;br /&gt;
* pep-0484&lt;br /&gt;
*: https://www.python.org/dev/peps/pep-0484&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== PyHelp ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [[PhHelp]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Utilisation de python dans le monde du web (World Wide Web) ==&lt;br /&gt;
=== [[mod_python|Apache/Python Integration (mod_python)]] ===&lt;br /&gt;
=== [[mod_wsgi|Apache/Python Integration (mod_wsgi)]] ===&lt;br /&gt;
=== [[Twisted||Apache/Python Integration Twited]] ===&lt;br /&gt;
=== Liens ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [http://docs.python.org/howto/webservers.html?highlight=mysql HOWTO Use Python in the web]&lt;br /&gt;
* [http://wiki.python.org/moin/WebProgramming Web Programming in Python]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Adaptateur Pyhton (wrapper, banding) pour d'autres langages - Bindings - Wrapping  ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [https://realpython.com/python-bindings-overview Python Bindings: Calling C or C++ From Python]&lt;br /&gt;
* [https://docs.python.org/3/extending/extending.html Extending Python with C or C++]&lt;br /&gt;
* [https://pypi.org/project/dlsym/ dlsym – A cross-platform symbol locator]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== mp3play ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [[mp3play]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== debuguer Python ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* pylint&lt;br /&gt;
* pychecker&lt;br /&gt;
* pyflakes&lt;br /&gt;
* flake8&lt;br /&gt;
*: http://www.scipy-lectures.org/advanced/debugging/index.html#debugging-segmentation-faults-using-gdb&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Différences entre Python 2 et 3  ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* The key differences between Python 2.7.x and Python 3.x with examples&lt;br /&gt;
*: http://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html&lt;br /&gt;
}}&lt;br /&gt;
== Lines pour débuter ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Par ordre de priorité décroissante :&lt;br /&gt;
* Pour débuter en Python pour le calcul scientifique :&lt;br /&gt;
*: Cours CEA, une introduction pour débutant (en principe) : http://iramis.cea.fr/Phocea/file.php?class=cours&amp;amp;file=/olivier.tache/Utilisation_scientifique_de_Python.pdf&lt;br /&gt;
* Complément (CEA) pour les graphiques (toujours pour débutants) :&lt;br /&gt;
*: https://calcul.math.cnrs.fr/attachments/spip/Documents/Ecoles/2010/cours_visu2d_python-v2.pdf&lt;br /&gt;
* Cours vidéo en anglais plus général :&lt;br /&gt;
*: https://open.cs.uwaterloo.ca/python-from-scratch/&lt;br /&gt;
* Cours très complet sur le langage Python :&lt;br /&gt;
*: https://inforef.be/swi/download/apprendre_python3_5.pdf&lt;br /&gt;
}}&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [[PyOpenGL]]&lt;br /&gt;
}}&lt;br /&gt;
== Liens ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* ★★ Cours pour débuter en python scientifique&lt;br /&gt;
*: http://iramis.cea.fr/Phocea/file.php?class=cours&amp;amp;file=/olivier.tache/Utilisation_scientifique_de_Python.pdf&lt;br /&gt;
* ctypes&lt;br /&gt;
** Calling C++ Classes from Python, with ctypes…&lt;br /&gt;
**: http://www.auctoris.co.uk/2017/04/29/calling-c-classes-from-python-with-ctypes/&lt;br /&gt;
** Speeding up element-wise array multiplication in python&lt;br /&gt;
**: https://stackoverflow.com/questions/19263879/speeding-up-element-wise-array-multiplication-in-python/19458585#19458585&lt;br /&gt;
** f2py import Fortran code in Python &lt;br /&gt;
**: https://www.scivision.co/f2py-running-fortran-code-in-python-on-windows/&lt;br /&gt;
* wrapper C/C++ avec du Python&lt;br /&gt;
** Calling C++ Classes from Python, with ctypes…&lt;br /&gt;
**: http://www.auctoris.co.uk/2017/04/29/calling-c-classes-from-python-with-ctypes&lt;br /&gt;
**: https://github.com/Auctoris/ctypes_demo&lt;br /&gt;
** Extending and Embedding the Python 3 Interpreter&lt;br /&gt;
**: https://docs.python.org/3/extending/index.html&lt;br /&gt;
* 10+ Best Python IDES for Software Development (ide Environnement de développement)&lt;br /&gt;
*: http://hative.com/best-python-ides-for-software-development/&lt;br /&gt;
* ★★★ Python From Scratch&lt;br /&gt;
*: Cours sous forme de videos&lt;br /&gt;
*: https://open.cs.uwaterloo.ca/python-from-scratch/&lt;br /&gt;
* Projet Euler&lt;br /&gt;
*: https://fr.wikipedia.org/wiki/Project_Euler&lt;br /&gt;
*: https://projecteuler.net/about&lt;br /&gt;
* Computer Science Circles (tutoriel)&lt;br /&gt;
*: This website teaches computer programming. This skill is very useful: with programming you can automate computer tasks, make art and music, interpret and analyze survey results, build tools for other people, create custom websites, write games, examine genetic data, connect people with each other, and the list goes on and on.&lt;br /&gt;
*: https://cscircles.cemc.uwaterloo.ca/&lt;br /&gt;
* Apprendre à programmer avec Python 3 - Gérard Swinnen&lt;br /&gt;
*: https://inforef.be/swi/download/apprendre_python3_5.pdf&lt;br /&gt;
* How to Think Like a Computer Scientist - thinkpython - Allen Downey, Jerey Elkner, Chris Meyers&lt;br /&gt;
*: http://www.greenteapress.com/thinkpython/thinkCSpy.pdf&lt;br /&gt;
* Domptage de serpent pour les enfants - Apprendre à programmer avec Python - Écrit par Jason R. Briggs et Traduit et adapté par Michel Weinachter&lt;br /&gt;
*: http://anper95.valdoise.fr/sites/anper/files/document/loisirs/swfk-fr_0.0.9.pdf&lt;br /&gt;
* Python for Non-Programmers&lt;br /&gt;
*: https://wiki.python.org/moin/BeginnersGuide/NonProgrammers&lt;br /&gt;
* Repl.it&lt;br /&gt;
*: Simple, reliable, and portable cloud coding interface. A community of teachers, students and engineers.&lt;br /&gt;
*: https://repl.it/languages/python&lt;br /&gt;
* ANACONDA&lt;br /&gt;
*: Anaconda is the leading open data science platform powered by Python&lt;br /&gt;
*: https://www.continuum.io/downloads&lt;br /&gt;
* The 10 Most Common Mistakes That Python Developers Make&lt;br /&gt;
*: https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make&lt;br /&gt;
*  PEP 3107 -- Function Annotations&lt;br /&gt;
: http://legacy.python.org/dev/peps/pep-3107/&lt;br /&gt;
* [http://code.activestate.com/recipes/456195/ urrlib2 opener for SSL proxy (CONNECT method) (Python recipe)]&lt;br /&gt;
* [[PyQt]]&lt;br /&gt;
* [http://www.python.org/doc/ python doc]&lt;br /&gt;
* [http://www.pythonware.com/library/pil/handbook/ PIL (doc)]&lt;br /&gt;
*  konrad hinsen&lt;br /&gt;
: http://khinsen.wordpress.com/&lt;br /&gt;
: http://onclojure.com/2009/03/05/a-monad-tutorial-for-clojure-programmers-part-1/&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Aide_m%C3%A9moire_d%27Arthur_pour_l%27utilisation_de_Git&amp;diff=4876</id>
		<title>Aide mémoire d'Arthur pour l'utilisation de Git</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Aide_m%C3%A9moire_d%27Arthur_pour_l%27utilisation_de_Git&amp;diff=4876"/>
		<updated>2024-12-18T12:06:32Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Introduction&lt;br /&gt;
|texte=&lt;br /&gt;
|index=Informatique:Index&lt;br /&gt;
}}&lt;br /&gt;
== L'essentiel ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{fig|Diagramme de flux de git|gitFlowDiagram.svg||10cm}}&lt;br /&gt;
}}&lt;br /&gt;
== Le problème des gros fichiers  ==&lt;br /&gt;
=== Git Push Fails - fatal: The remote end hung up unexpectedly ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
l'un des solution est de faire des {{mmm|push}} par commits successifs :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git log # or 'gslg' or 'glg'&lt;br /&gt;
# git push origin sha:remote-branch&lt;br /&gt;
# example :&lt;br /&gt;
git push origin 84143f1:master&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Git Large File Storage (LFS) - Le stockage des gros fichiers  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{m|{{dq|Large File Storage}}}} pour Git est une extension permettant d'indexer des fichiers volumineux à un référentiel Git, en stockant ces fichiers sur des espaces spécifiques.&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
apt install git-lfs&lt;br /&gt;
git lfs install &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Traiter/suivre  certains fichier&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git lfs track &amp;quot;*.iso&amp;quot;&lt;br /&gt;
git add .gitattributes # les informations précédentes sont stockées dans .gitattributes &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* [https://medium.com/slickteam/pourquoi-et-comment-utiliser-git-lfs-771bcda478d0  Pourquoi et comment utiliser Git LFS ?]&lt;br /&gt;
* [https://manpages.debian.org/unstable/git-lfs/git-lfs.1.en.html debian man]&lt;br /&gt;
}}&lt;br /&gt;
=== Ajout au suivi du contenu d'un répertoire  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
$ git lfs track &amp;quot;assets/*&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Ajout au suivi toute l'arborescence du contenu d'un répertoire  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
$ git lfs track &amp;quot;assets/**/*&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Ajout au suivi un fichier particulier  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
$ git lfs track &amp;quot;path/to/file.example&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Ajout au suivi un type de fichiers  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
$ git lfs track &amp;quot;*.tar.gz&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Liens ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [https://medium.com/@sangeethkumar.tvm.kpm/cleaning-up-a-git-repo-for-reducing-the-repository-size-d11fa496ba48 Cleaning up a git repo for reducing the repository size]&lt;br /&gt;
* [https://medium.com/slickteam/pourquoi-et-comment-utiliser-git-lfs-771bcda478d0 Pourquoi et comment utiliser Git LFS ?]&lt;br /&gt;
* [https://git-lfs.com/ Git Large File Storage (LFS)]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Las variables ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
;{{m|&amp;lt;rem…&amp;gt;}} remote&lt;br /&gt;
:distant, une base git distante, sur une autre machine&lt;br /&gt;
;{{m|&amp;lt;loc…&amp;gt;}} local&lt;br /&gt;
:local, une base git locale, sur la machine utilisée&lt;br /&gt;
;{{m|&amp;lt;dep…&amp;gt;}} depository&lt;br /&gt;
:depository (repository ne sera pas utilisé pour ne pas confondre avec repertoire)&lt;br /&gt;
;{{m|&amp;lt;wrk…&amp;gt;}} work&lt;br /&gt;
:work, de travail, ce qui correspond en général au répertoire de travail&lt;br /&gt;
;{{m|&amp;lt;…Url&amp;gt;}} url&lt;br /&gt;
:uniform resource locator, adresse web d'une base git&lt;br /&gt;
;{{m|&amp;lt;…Dir&amp;gt;}} {{m|&amp;lt;…Rep&amp;gt;}}  directory&lt;br /&gt;
:répertoire physique sur le disque dur.&lt;br /&gt;
;{{m|&amp;lt;…ParentDir&amp;gt;}} {{m|&amp;lt;…ParentRep&amp;gt;}} parent directory&lt;br /&gt;
:répertoire parent sur le disque dur.&lt;br /&gt;
;{{m|&amp;lt;…GitName…&amp;gt;}}&lt;br /&gt;
:nom de la base git&lt;br /&gt;
}}&lt;br /&gt;
{{Ex|&lt;br /&gt;
Exemples de &amp;lt;remGitNameUrl&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 atoross@claumep1:/home/var/git/loco&lt;br /&gt;
 file:///home/atoross/dvlp/gitTests/remGitBase &lt;br /&gt;
 https://anomnymous@git.salome-platform.org/gitpub/modules/med.git&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Les différentes espaces de Git ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
stash        wrkDir        stgArea        locDep        remDep&lt;br /&gt;
}}&lt;br /&gt;
}} &lt;br /&gt;
=== stash ===&lt;br /&gt;
{{parW|1=L'espace {{m|stash}} ({{mm|stash}}) (cachette) est une espace de stockage temporaire des données qui ne sont pas encore enregistrées (not commited); c'est une sauvegarde de l'espace {{m|staging area}}.&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Tools-Stashing it Tools - Stashing]&lt;br /&gt;
}}&lt;br /&gt;
=== staging area - index ===&lt;br /&gt;
{{parW|1=L'espace {{m|staging area}} ({{mm|stgArea}}) est une espace de stockage des données qui ne sont pas encore enregistrées (not commited).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== working directory ===&lt;br /&gt;
{{parW|1=L'espace {{m|working directory}} ({{mm|wrkDir}}) est un répertoire sur un système de fichier qui contient les fichiers de travails. Tous les fichiers et sous répertoires ne sont pas forcément versionnés.&lt;br /&gt;
}}&lt;br /&gt;
=== local depository ===&lt;br /&gt;
{{parW|1=L'espace {{m|local depository}} ({{mm|locDep}}) est une espace de stockage des données versionnées, une base de données git, qui se trouve dans le répertoire nommé {{mm|.git}} qui lui même est dans le répertoire racine de {{m|working directory}}. Ces données sont enregistrées (commited).&lt;br /&gt;
}}&lt;br /&gt;
=== remote depository ===&lt;br /&gt;
{{parW|1=L'espace {{m|remote depository}} ({{mm|remDep}}) est une espace de stockage des données versionnées, une base de données git, qui n'est pas le répertoire nommé {{mm|.git}} de {{m|working directory}}. Il est soit sur le même système de fichier ou sur une autre machines. Ces données sont enregistrées (commited and pushed). Un espace ({{mm|locDep}} peut avoir plusieurs ({{mm|remDep}}.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
=== fichier  ===&lt;br /&gt;
==== Longueur du chemain fichier trop long ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --global core.longpaths true&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Hosts ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{m|{{mm|/etc/hosts}}}} n'est pas utilisé mais c'est {{m|{{mm|/c/Windows/System32/drivers/etc/hosts}} }} qui est utilisé.&lt;br /&gt;
{{code|lang=hosts|code=&lt;br /&gt;
# Copyright (c) 1993-2009 Microsoft Corp.&lt;br /&gt;
#&lt;br /&gt;
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.&lt;br /&gt;
#&lt;br /&gt;
# This file contains the mappings of IP addresses to host names. Each&lt;br /&gt;
# entry should be kept on an individual line. The IP address should&lt;br /&gt;
# be placed in the first column followed by the corresponding host name.&lt;br /&gt;
# The IP address and the host name should be separated by at least one&lt;br /&gt;
# space.&lt;br /&gt;
#&lt;br /&gt;
# Additionally, comments (such as these) may be inserted on individual&lt;br /&gt;
# lines or following the machine name denoted by a '#' symbol.&lt;br /&gt;
#&lt;br /&gt;
# For example:&lt;br /&gt;
#&lt;br /&gt;
#      102.54.94.97     rhino.acme.com          # source server&lt;br /&gt;
#       38.25.63.10     x.acme.com              # x client host&lt;br /&gt;
&lt;br /&gt;
# localhost name resolution is handled within DNS itself.&lt;br /&gt;
#       127.0.0.1       localhost&lt;br /&gt;
#       ::1             localhost&lt;br /&gt;
192.168.20.108  hdedibox3&lt;br /&gt;
192.168.20.100  compaqmini&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== L'essentiel ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
*{{mm|git config}}&lt;br /&gt;
:*{{mm|--system}}&lt;br /&gt;
:: ⟼ {{mm|/etc/gitconfig}}&lt;br /&gt;
::Pour tous les utilisateurs &lt;br /&gt;
:*{{mm|--global}}&lt;br /&gt;
:: ⟼ {{mm|~/.gitconfig}}&lt;br /&gt;
::Pour l'utilsateur courant&lt;br /&gt;
:*{{mm|{{cadreG|}}}}&lt;br /&gt;
:: ⟼ {{mm|&amp;lt;locGitNameRep&amp;gt;/.git/config}}&lt;br /&gt;
::Seuelement pour la base locale (quand on est dans &amp;lt;locGitNameRep&amp;gt;)&lt;br /&gt;
Voir ses paramètres :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --list&lt;br /&gt;
}}&lt;br /&gt;
ou&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config core.autocrlf&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
=== system : {{m|1=/etc/git…}} ===&lt;br /&gt;
==== Certificat auto-certifié ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Solution 1 :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su -&lt;br /&gt;
git config --system http.sslVerify false&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Solution 2 :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export GIT_SSL_NO_VERIFY=true &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== Editer le contenu de la configuration au niveau du system ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --system --edit # /etc/gitconfig&lt;br /&gt;
}}&lt;br /&gt;
ce qui peut donner sous windows à ({{mm|/etc/gitconfig}}) :&lt;br /&gt;
{{code|lang=cfg|code=&lt;br /&gt;
[diff &amp;quot;astextplain&amp;quot;]&lt;br /&gt;
        textconv = astextplain&lt;br /&gt;
[filter &amp;quot;lfs&amp;quot;]&lt;br /&gt;
        clean = git-lfs clean -- %f&lt;br /&gt;
        smudge = git-lfs smudge -- %f&lt;br /&gt;
        process = git-lfs filter-process&lt;br /&gt;
        required = true&lt;br /&gt;
[http]&lt;br /&gt;
        sslBackend = openssl&lt;br /&gt;
        sslCAInfo = C:/pf/git/mingw64/ssl/certs/ca-bundle.crt&lt;br /&gt;
        sslVerify = false&lt;br /&gt;
[core]&lt;br /&gt;
        fscache = false&lt;br /&gt;
        symlinks = false&lt;br /&gt;
[pull]&lt;br /&gt;
        rebase = true&lt;br /&gt;
[credential]&lt;br /&gt;
        helper = manager-core&lt;br /&gt;
[credential &amp;quot;https://dev.azure.com&amp;quot;]&lt;br /&gt;
        useHttpPath = true&lt;br /&gt;
[init]&lt;br /&gt;
        defaultBranch = master&lt;br /&gt;
}}&lt;br /&gt;
old:&lt;br /&gt;
{{code|lang=cfg|code=&lt;br /&gt;
[diff &amp;quot;astextplain&amp;quot;]&lt;br /&gt;
        textconv = astextplain&lt;br /&gt;
[filter &amp;quot;lfs&amp;quot;]&lt;br /&gt;
        clean = git-lfs clean -- %f&lt;br /&gt;
        smudge = git-lfs smudge -- %f&lt;br /&gt;
        process = git-lfs filter-process&lt;br /&gt;
        required = true&lt;br /&gt;
[http]&lt;br /&gt;
        sslBackend = openssl&lt;br /&gt;
        sslCAInfo = C:/pf/git/mingw64/ssl/certs/ca-bundle.crt&lt;br /&gt;
        sslVerify = false&lt;br /&gt;
[core]&lt;br /&gt;
        autocrlf = true&lt;br /&gt;
        fscache = true&lt;br /&gt;
        symlinks = false&lt;br /&gt;
[pull]&lt;br /&gt;
        rebase = true&lt;br /&gt;
[credential]&lt;br /&gt;
        helper = manager-core&lt;br /&gt;
[credential &amp;quot;https://dev.azure.com&amp;quot;]&lt;br /&gt;
        useHttpPath = true&lt;br /&gt;
[init]&lt;br /&gt;
        defaultBranch = master&lt;br /&gt;
[diff]&lt;br /&gt;
        tool = diff -Bb&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== global : {{m|1=~/.git…}} ===&lt;br /&gt;
==== Identification de l'utilisateur ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;Arthur TOROSSIAN&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;arthur.torossian@edf.fr&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== Exemple de fichier config ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --edit --global # ~/.gitconfig  &lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=ini|code=&lt;br /&gt;
[http]&lt;br /&gt;
        sslVerify = false&lt;br /&gt;
[user]&lt;br /&gt;
        name = Arthur Torossian&lt;br /&gt;
        email = arthur.torossian@edf.fr&lt;br /&gt;
[credential &amp;quot;https://at.bht.fr&amp;quot;]&lt;br /&gt;
        provider = generic&lt;br /&gt;
[credential &amp;quot;http://pac-ad-edf.proxy.edf.fr:3131&amp;quot;]&lt;br /&gt;
        provider = generic&lt;br /&gt;
[credential &amp;quot;https://git.forge.pleiade.edf.fr&amp;quot;]&lt;br /&gt;
        provider = generic&lt;br /&gt;
[core]&lt;br /&gt;
        attributesfile = C:/Users/C07138/.gitattributes_global&lt;br /&gt;
        excludesfile = C:/Users/C07138/.gitignore_global&lt;br /&gt;
        ignorecase = true&lt;br /&gt;
        attributesfile = C:/Users/C07138/.gitattributes_global&lt;br /&gt;
        whitespace = trailing-space,-space-before-tab,indent-with-non-tab,cr-at-eol&lt;br /&gt;
        blank-at-eof = false&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Old:&lt;br /&gt;
{{code|lang=ini|code=&lt;br /&gt;
[http]&lt;br /&gt;
        sslVerify = false&lt;br /&gt;
[user]&lt;br /&gt;
        name = Arthur Torossian&lt;br /&gt;
        email = arthur.torossian@edf.fr&lt;br /&gt;
[credential &amp;quot;https://at.bht.fr&amp;quot;]&lt;br /&gt;
        provider = generic&lt;br /&gt;
[credential &amp;quot;http://pac-ad-edf.proxy.edf.fr:3131&amp;quot;]&lt;br /&gt;
        provider = generic&lt;br /&gt;
[credential &amp;quot;https://git.forge.pleiade.edf.fr&amp;quot;]&lt;br /&gt;
        provider = generic&lt;br /&gt;
[core]&lt;br /&gt;
        excludesfile = C:/Users/C07138/.gitignore_global&lt;br /&gt;
        ignorecase = true&lt;br /&gt;
        attributesfile = C:/Users/C07138/.gitattributes_global&lt;br /&gt;
        whitespace = trailing-space,-space-before-tab,indent-with-non-tab,cr-at-eol&lt;br /&gt;
        blank-at-eof = false&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Las attributs .gitattributes - fin de ligne CR LF CRLF LFCR line endings ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Pour régler les problèmes d'espace, de tabulation ou de code de fin de ligne des fichiers textes il faut ajouter la configuration des attributs des formats des fichiers (voir ci-après) et configurer les deux variables suivantes localement comme ici ou globalement :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config core.eol lf&lt;br /&gt;
git config core.autocrlf input &lt;br /&gt;
}}&lt;br /&gt;
{{CadreR|1=Si des fichiers sont marqués modifiés pour les problèmes d'espaces et de fin de lignes alors il&lt;br /&gt;
faut les ajouter et commiter, après quoi le bonne configuration se mettront en place :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git add -u&lt;br /&gt;
git commit -m &amp;quot;nomralisation eof whitespace&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
voir : &lt;br /&gt;
* [https://stackoverflow.com/questions/9976986/force-lf-eol-in-git-repo-and-working-copy Force LF eol in git repo and working copy]&lt;br /&gt;
* [https://git-scm.com/book/en/v2 Pro Git book 2nd Edition (2014)]&lt;br /&gt;
* [https://docs.github.com/fr/get-started/getting-started-with-git/configuring-git-to-handle-line-endings#refreshing-a-repository-after-changing-line-endings Configuration de Git pour traiter les fins de ligne]&lt;br /&gt;
* [https://git-scm.com/docs/gitattributes gitattributes]&lt;br /&gt;
* [https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes 8.2 Customizing Git - Git Attributes]&lt;br /&gt;
&lt;br /&gt;
On peut le configurer en global ou en local {{mm|.gitattributes}} crée à la racine en le versionnant dans la base même si l'on veut le retrouver sur d'autres machines.&lt;br /&gt;
&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --global core.attributesfile ~/.gitattributes_global &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Contenus possible :&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
* text=auto&lt;br /&gt;
*.bat    text eol=crlf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2&lt;br /&gt;
*.csv    text &lt;br /&gt;
*.doc    -text diff&lt;br /&gt;
*.docx   -text diff &lt;br /&gt;
*.html   text &lt;br /&gt;
*.idx    -text diff &lt;br /&gt;
*.ini    text&lt;br /&gt;
*.jpg    -text diff&lt;br /&gt;
*.mov    -text diff &lt;br /&gt;
*.mp4    -text diff&lt;br /&gt;
*.pack   -text diff&lt;br /&gt;
*.pdf    -text diff&lt;br /&gt;
*.png    -text diff&lt;br /&gt;
*.ppt    -text diff&lt;br /&gt;
*.pptx   -text diff&lt;br /&gt;
*.py     text  eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=python&lt;br /&gt;
*.pyc    -text diff&lt;br /&gt;
*.sample -text diff&lt;br /&gt;
*.sh     text  whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=bash&lt;br /&gt;
*.svg    text&lt;br /&gt;
*.tx     text&lt;br /&gt;
*.txt    text&lt;br /&gt;
*.uml    -text diff &lt;br /&gt;
*.xls    -text diff&lt;br /&gt;
*.xlsm   -text diff&lt;br /&gt;
*.xlsx   -text diff&lt;br /&gt;
*.xml    text&lt;br /&gt;
}}&lt;br /&gt;
voir(old) [https://stackoverflow.com/questions/1510798/trying-to-fix-line-endings-with-git-filter-branch-but-having-no-luck/1511273#1511273 Trying to fix line-endings]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Ignorer les fichiers .gitignore ====&lt;br /&gt;
===== .gitignore_global =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Ajouter le ~/.gitignore_global aux fichiers exclus en tapant, {{m|y compris sous WINDOWS}}:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.excludesfile ~/.gitignore_global&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===== la casse de la configuration =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Rendre la configuration non sensible à la casse :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.ignorecase true&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Cette option se retrouve alors dans le fichier {{mm|wrkDir/.git/config}}&lt;br /&gt;
}}&lt;br /&gt;
===== .gitignore =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Pour un répertoire spécifique, créer ce fichier nommé {{mm|.gitignore}} dans le répertoire à filtrer (en général la racine qui est {{mm|wrkDir}}) en le complétant par l'exemple se trouvant dans :&lt;br /&gt;
*  ☞ git/gitignore.txt de https://atoross@at.bht.fr/git/textDoc.git&lt;br /&gt;
Vous avez ici une copie :&lt;br /&gt;
{{code|lang=config|code=&lt;br /&gt;
.gitignore&lt;br /&gt;
.project&lt;br /&gt;
.pydevproject&lt;br /&gt;
.settings&lt;br /&gt;
noPull&lt;br /&gt;
noPush&lt;br /&gt;
*chenal3.cfg*&lt;br /&gt;
modAtTool&lt;br /&gt;
&lt;br /&gt;
# local config&lt;br /&gt;
###################&lt;br /&gt;
python*bat&lt;br /&gt;
python*sh&lt;br /&gt;
&lt;br /&gt;
# My generated #&lt;br /&gt;
###################&lt;br /&gt;
tmp*&lt;br /&gt;
gen*&lt;br /&gt;
old*&lt;br /&gt;
external*&lt;br /&gt;
*generated*&lt;br /&gt;
*Copie*&lt;br /&gt;
*Copy*&lt;br /&gt;
*.puml&lt;br /&gt;
*PlantUml.png&lt;br /&gt;
&lt;br /&gt;
# Editor generted #&lt;br /&gt;
###################&lt;br /&gt;
.project&lt;br /&gt;
.pydevproject&lt;br /&gt;
.settings&lt;br /&gt;
*~&lt;br /&gt;
*bak&lt;br /&gt;
*back.py&lt;br /&gt;
&lt;br /&gt;
# Compiled source #&lt;br /&gt;
###################&lt;br /&gt;
*.com&lt;br /&gt;
*.class&lt;br /&gt;
*.dll&lt;br /&gt;
*.exe&lt;br /&gt;
*.o&lt;br /&gt;
*.so&lt;br /&gt;
*.pyc&lt;br /&gt;
__pycache__&lt;br /&gt;
&lt;br /&gt;
# External executable #&lt;br /&gt;
#######################&lt;br /&gt;
plantuml.jar&lt;br /&gt;
&lt;br /&gt;
# External git base #&lt;br /&gt;
#####################&lt;br /&gt;
exe/textTool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Packages #&lt;br /&gt;
############&lt;br /&gt;
# it's better to unpack these files and commit the raw source&lt;br /&gt;
# git has its own built in compression methods&lt;br /&gt;
*.7z&lt;br /&gt;
*.dmg&lt;br /&gt;
*.gz&lt;br /&gt;
*.iso&lt;br /&gt;
*.jar&lt;br /&gt;
*.rar&lt;br /&gt;
*.tar&lt;br /&gt;
*.zip&lt;br /&gt;
&lt;br /&gt;
# Logs and databases #&lt;br /&gt;
######################&lt;br /&gt;
*.log&lt;br /&gt;
&lt;br /&gt;
# OS generated files #&lt;br /&gt;
######################&lt;br /&gt;
.DS_Store&lt;br /&gt;
.DS_Store?&lt;br /&gt;
._*&lt;br /&gt;
.Spotlight-V100&lt;br /&gt;
.Trashes&lt;br /&gt;
ehthumbs.db&lt;br /&gt;
Thumbs.dbatoross@hpOmen:~/git/textDoc/git:master$cd ..&lt;br /&gt;
atoross@hpOmen:~/git/textDoc:master$cd git/&lt;br /&gt;
atoross@hpOmen:~/git/textDoc/git:master$cat gitignore.txt &lt;br /&gt;
.gitignore&lt;br /&gt;
.project&lt;br /&gt;
.pydevproject&lt;br /&gt;
.settings&lt;br /&gt;
noPull&lt;br /&gt;
noPush&lt;br /&gt;
*chenal3.cfg*&lt;br /&gt;
modAtTool&lt;br /&gt;
&lt;br /&gt;
# local config&lt;br /&gt;
###################&lt;br /&gt;
python*bat&lt;br /&gt;
python*sh&lt;br /&gt;
&lt;br /&gt;
# My generated #&lt;br /&gt;
###################&lt;br /&gt;
tmp*&lt;br /&gt;
gen*&lt;br /&gt;
old*&lt;br /&gt;
external*&lt;br /&gt;
*generated*&lt;br /&gt;
*Copie*&lt;br /&gt;
*Copy*&lt;br /&gt;
*.puml&lt;br /&gt;
*PlantUml.png&lt;br /&gt;
&lt;br /&gt;
# Editor generted #&lt;br /&gt;
###################&lt;br /&gt;
.project&lt;br /&gt;
.pydevproject&lt;br /&gt;
.settings&lt;br /&gt;
*~&lt;br /&gt;
*bak&lt;br /&gt;
*back.py&lt;br /&gt;
&lt;br /&gt;
# Compiled source #&lt;br /&gt;
###################&lt;br /&gt;
*.com&lt;br /&gt;
*.class&lt;br /&gt;
*.dll&lt;br /&gt;
*.exe&lt;br /&gt;
*.o&lt;br /&gt;
*.so&lt;br /&gt;
*.pyc&lt;br /&gt;
__pycache__&lt;br /&gt;
&lt;br /&gt;
# External executable #&lt;br /&gt;
#######################&lt;br /&gt;
plantuml.jar&lt;br /&gt;
&lt;br /&gt;
# External git base #&lt;br /&gt;
#####################&lt;br /&gt;
exe/textTool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Packages #&lt;br /&gt;
############&lt;br /&gt;
# it's better to unpack these files and commit the raw source&lt;br /&gt;
# git has its own built in compression methods&lt;br /&gt;
*.7z&lt;br /&gt;
*.dmg&lt;br /&gt;
*.gz&lt;br /&gt;
*.iso&lt;br /&gt;
*.jar&lt;br /&gt;
*.rar&lt;br /&gt;
*.tar&lt;br /&gt;
*.zip&lt;br /&gt;
&lt;br /&gt;
# Logs and databases #&lt;br /&gt;
######################&lt;br /&gt;
*.log&lt;br /&gt;
&lt;br /&gt;
# OS generated files #&lt;br /&gt;
######################&lt;br /&gt;
.DS_Store&lt;br /&gt;
.DS_Store?&lt;br /&gt;
._*&lt;br /&gt;
.Spotlight-V100&lt;br /&gt;
.Trashes&lt;br /&gt;
ehthumbs.db&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Rq|Ne pas laisser d'espace devant les pattern de filtrage.}}&lt;br /&gt;
&lt;br /&gt;
=== Local :  {{m|1=.git/config}} ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|code=bash|code=&lt;br /&gt;
git config --edit # .git/config&lt;br /&gt;
}}&lt;br /&gt;
{{code|code=in|code=&lt;br /&gt;
[core]&lt;br /&gt;
        repositoryformatversion = 0&lt;br /&gt;
        filemode = false&lt;br /&gt;
        bare = false&lt;br /&gt;
        logallrefupdates = true&lt;br /&gt;
        symlinks = false&lt;br /&gt;
[remote &amp;quot;old-origin&amp;quot;]&lt;br /&gt;
        url = https://git.forge.pleiade.edf.fr/git/verona.colmat.git&lt;br /&gt;
        fetch = +refs/heads/*:refs/remotes/old-origin/*&lt;br /&gt;
[gui]&lt;br /&gt;
        wmstate = zoomed&lt;br /&gt;
        geometry = 893x435+208+208 418 464&lt;br /&gt;
[submodule &amp;quot;modAtTool&amp;quot;]&lt;br /&gt;
        active = true&lt;br /&gt;
        url = https://git.forge.pleiade.edf.fr/git/verona.git&lt;br /&gt;
[remote &amp;quot;at64g&amp;quot;]&lt;br /&gt;
        url = F:/base/gitDvlp/ciclope.git/&lt;br /&gt;
        fetch = +refs/heads/*:refs/remotes/at64g/*&lt;br /&gt;
[remote &amp;quot;origin&amp;quot;]&lt;br /&gt;
        url = https://gitlab.pleiade.edf.fr/ciclope/ciclope-code.git&lt;br /&gt;
        fetch = +refs/heads/*:refs/remotes/origin/*&lt;br /&gt;
[branch &amp;quot;master&amp;quot;]&lt;br /&gt;
        remote = origin&lt;br /&gt;
        merge = refs/heads/master&lt;br /&gt;
[http]&lt;br /&gt;
        sslVerify = false&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== La complétion des commandes de git ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Copier le fichier de complétion:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cp /etc/bash_completion.d/git ~/.git-completion.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
et ajouter dans ~/.bashrc la ligne suivante :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ~/.git-completion.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
=== Un prompt affichant les branches ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
A mettre dans {{mc|.bashrc}} ⟼ [[Exemples de .bashrc]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Les outils : éditeur et fusion et différence (diff tool merge tool meld tkdiff)  ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{cadre|1= &lt;br /&gt;
Pour travailler sous windows et linux sans les problèmes de fin de ligne \lf \cr il suffit de positionner {{mm|core.autocrlf}} sur {{mm|input}} [https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration source]:&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --global core.autocrlf input&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor gedit&lt;br /&gt;
git config --global merge.tool tkdiff&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --global diff.tool meld&lt;br /&gt;
git config --global difftool.meld.path &amp;quot;/usr/bin/meld&amp;quot;&lt;br /&gt;
git config --global difftool.prompt false&lt;br /&gt;
git config --global merge.tool meld&lt;br /&gt;
git config --global mergetool.meld.path &amp;quot;/usr/bin/meld&amp;quot;&lt;br /&gt;
git config --global mergetool.prompt false&lt;br /&gt;
}}&lt;br /&gt;
Utilisation&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git difftool  HEAD^1 comMultiZone/common.py&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Dimensionner la taille des paquets d'envoi quand le protocole http est utilisé ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
SI le massage suivant est ertourné :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Expected ok/error, helper said 2004[...]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global http.postBuffer 209715200&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Le fichier bashrc pour git bash sous windows ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Se trouve dans {{mm|&amp;lt;nowiki&amp;gt;C:\Users\&amp;lt;your user name&amp;gt;&amp;lt;/nowiki&amp;gt;}}. &lt;br /&gt;
&lt;br /&gt;
Si on exécute la commande {{mm| echo ~}} on obtient par exemple {{dq|/c/Users/Arthur}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Les alias ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Lire d'abord [[Exemples de .bashrc#ref|Exemple de référence]]&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
alias gad='git add '&lt;br /&gt;
..&lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --global alias.sw   'checkout'&lt;br /&gt;
git config --global alias.ad   'add'&lt;br /&gt;
git config --global alias.br   'branch'&lt;br /&gt;
git config --global alias.cm   'commit' -m &lt;br /&gt;
git config --global alias.co   'checkout'&lt;br /&gt;
git config --global alias.cur  'symbolic-ref --short HEAD'&lt;br /&gt;
git config --global alias.lg   'log  --pretty=format:&amp;quot;[%h][%cN]%Cgreen[%s]%Cred[%d]&amp;quot; --date=iso  --graph  --abbrev-commit'&lt;br /&gt;
git config --global alias.ltag 'describe --exact-match --abbrev=0'&lt;br /&gt;
git config --global alias.pl   'pull'&lt;br /&gt;
git config --global alias.pu   'push'&lt;br /&gt;
git config --global alias.slg  'log  --pretty=format:&amp;quot;[%h]%Cgreen[%s]%Cred[%d]&amp;quot; --graph  --abbrev-commit'&lt;br /&gt;
git config --global alias.st   'status'&lt;br /&gt;
git config --global alias.sw   'checkout'&lt;br /&gt;
git config --global alias.rv  ' remote -v '&lt;br /&gt;
git config --global alias.ra  'remote add '&lt;br /&gt;
git config --global alias.me  'merge --no-ff --no-commit'&lt;br /&gt;
}}&lt;br /&gt;
Dautres alias plus spécifiques&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
alias branch-merge-point = !bash -c 'diff --old-line-format=--new-line-format= &amp;lt;(git rev-list --first-parent \&amp;quot;${1:-master}\&amp;quot;) &amp;lt;(git rev-list --first-parent \&amp;quot;${2:-HEAD}\&amp;quot;) | head -1' -&lt;br /&gt;
alias branch-diff = !sh -c \&amp;quot;git diff `git branch-merge-point`..\&amp;quot;&lt;br /&gt;
alias branch-log = !sh -c \&amp;quot;git log `git branch-merge-point`..\&lt;br /&gt;
}}&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git config -l {{!}}grep alias&lt;br /&gt;
alias.le=log --oneline --decorate&lt;br /&gt;
alias.filelog=log -u&lt;br /&gt;
alias.fl=log -u&lt;br /&gt;
alias.dl=!git ll -1&lt;br /&gt;
alias.dlc=diff --cached HEAD^&lt;br /&gt;
alias.dr=!f() { git diff $1^..$1; }; f&lt;br /&gt;
alias.lc=!f() { git ll $1^..$1; }; f&lt;br /&gt;
alias.diffr=!f() { git diff $1^..$1; }; f&lt;br /&gt;
alias.f=!git ls-files {{!}} grep -i&lt;br /&gt;
alias.grep=grep -Ii&lt;br /&gt;
alias.gr=grep -Ii&lt;br /&gt;
alias.cp=cherry-pick&lt;br /&gt;
alias.st=status -s&lt;br /&gt;
alias.cl=clone&lt;br /&gt;
alias.ci=commit&lt;br /&gt;
alias.co=checkout&lt;br /&gt;
alias.br=branch&lt;br /&gt;
alias.diff=diff --word-diff&lt;br /&gt;
alias.dc=diff --cached&lt;br /&gt;
alias.r=reset&lt;br /&gt;
alias.r1=reset HEAD^&lt;br /&gt;
alias.r2=reset HEAD^^&lt;br /&gt;
alias.rh=reset --hard&lt;br /&gt;
alias.rh1=reset HEAD^ --hard&lt;br /&gt;
alias.rh2=reset HEAD^^ --hard &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Vérifier la configuration ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list --show-origin  &lt;br /&gt;
git config user.name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Aide ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git &amp;lt;commande&amp;gt; -h&lt;br /&gt;
man git-&amp;lt;commande&amp;gt;&lt;br /&gt;
git help &amp;lt;commande&amp;gt;&lt;br /&gt;
git --help &amp;lt;commande&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
exemple :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config -h&lt;br /&gt;
man git-config&lt;br /&gt;
git help config&lt;br /&gt;
git --help config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
== Les commandes les plus utilisées ==&lt;br /&gt;
{{not|cp : copier(copy)}}&lt;br /&gt;
{{not|mv : déplacer(mv)}}&lt;br /&gt;
{{not|rec : enregistrer(record), inscrire juste le nom}}&lt;br /&gt;
{{not|unrec : dés-enregistrer(unrecord), effacer le nom}}&lt;br /&gt;
=== Désigner une révision - HEAD ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* {{m|HEAD}} désigne la dernière révision, notée N, de la branche pointée par le locRep.&lt;br /&gt;
* {{m|HEAD~}} ou {{m|HEAD^}} ou {{m|HEAD~1}} {{m|HEAD^1}} désigne la révision N-1.&lt;br /&gt;
* {{m|HEAD~2}} désigne la révision N-2.&lt;br /&gt;
* {{m|HEAD^2}} désigne la révision N-2 du deuxième parent dans le cas où on peut avoir plusieurs parents.&lt;br /&gt;
* {{m|ORIG_HEAD}} est l'état antérieur de {{m|HEAD}} pour certaines opérations critiques. Il est moins utile maintenant que git a reflog: {{mm|git reflog show}} donne par exemple : &lt;br /&gt;
*: {{code|lang=text|colNb=80|code=&lt;br /&gt;
febdfb9 (HEAD -&amp;gt; master, origin/master, origin/HEAD) HEAD@{0}: checkout: moving from at to master&lt;br /&gt;
010837a (origin/at, at) HEAD@{1}: checkout: moving from master to at&lt;br /&gt;
febdfb9 (HEAD -&amp;gt; master, origin/master, origin/HEAD) HEAD@{2}: commit: save&lt;br /&gt;
010837a (origin/at, at) HEAD@{3}: pull: Fast-forward&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Rq|Les révisions sont aussi appelées des {{dq|commit}}. Par exemple {{m|HEAD^1}} désigne le dernier {{dq|commit}} (last commit). Dans la documention de git les {{dq|commit}} sont noté {{dq|&amp;lt;commit&amp;gt;}}.&lt;br /&gt;
}}&lt;br /&gt;
{{parW|1=&lt;br /&gt;
exemples :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git lg  HEAD~1^2&lt;br /&gt;
git lg  origin/master~1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git log  --pretty=format:&amp;quot;%h&amp;quot;   --graph&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
*   1bd1d09&lt;br /&gt;
|\  &lt;br /&gt;
| *   37d48e9&lt;br /&gt;
| |\  &lt;br /&gt;
| | * edae2b9&lt;br /&gt;
| | * 42bb57e&lt;br /&gt;
| |/  &lt;br /&gt;
|/|   &lt;br /&gt;
| * 74dc61f&lt;br /&gt;
| * c43c75d&lt;br /&gt;
|/  &lt;br /&gt;
* eedbf2e&lt;br /&gt;
* 0361888&lt;br /&gt;
* 87c79ea&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git lg -1 HEAD~1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
* eedbf2e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git lg -1 HEAD^1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
* eedbf2e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git lg -1 HEAD~2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
* 0361888&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git lg -1 HEAD^2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
37d48e9&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== S'authentifier aévec mot de passe stocké temporairement ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Pour garder le mot de passe pour 3 heures &lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --global credential.helper 'cache --timeout=10800'&lt;br /&gt;
}}&lt;br /&gt;
Pour garder le mot de passe pour une heure&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --global credential.helper 'cache --timeout=3600'&lt;br /&gt;
}}&lt;br /&gt;
Pour garder le mot de passe pour un certain temps&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --global credential.helper cache&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Sous windows (pas possible de mettre un timeout):&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --global credential.helper wincred&lt;br /&gt;
}}&lt;br /&gt;
{{cadreR|&lt;br /&gt;
Si vous êtes bloqué sous windows, on peut gérer les dientifications en cherchant dans tapant {{dq|Gérer vos informations d'identification}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Rq|1=&lt;br /&gt;
Attention dans certain cas par défaut le paramétrage peut être dans {{mm|--system}}.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Copier une base locale - clone ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone &amp;lt;remGitNameUrl&amp;gt;  &amp;lt;locGitNameRep&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Cette commande créera la répertoire &amp;lt;locGitNameRep&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
==== Cloner une branche ou un tag particulier ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code= &lt;br /&gt;
# pour une branche&lt;br /&gt;
git clone -b &amp;lt;branchName&amp;gt; &amp;lt;remGitNameUrl&amp;gt;  &amp;lt;locGitNameRep&amp;gt;&lt;br /&gt;
# ou pour un tag&lt;br /&gt;
git clone -b &amp;lt;tagName&amp;gt; &amp;lt;remGitNameUrl&amp;gt;  &amp;lt;locGitNameRep&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Cette commande créera la répertoire &amp;lt;locGitNameRep&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Pour une base locale existante modifier l'emplacement du répertoire {{dq|.git}} ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Utilisation de {{dq|{{mm|--separate-git-dir}}}}&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git clone &amp;lt;remGitNameRep&amp;gt; &amp;lt;locGitNameRep&amp;gt; \&lt;br /&gt;
                 --separate-git-dir=&amp;lt;newPathOfLocGitRep&amp;gt; &lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git clone /c/chenal3/chenal /c/chenal3/newChenal \&lt;br /&gt;
                 --separate-git-dir=/c/chenal3/newChenalGitRep&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Ajouter/Add un fichier au «stgArea»===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git add &amp;lt;filepath&amp;gt;&lt;br /&gt;
git add &amp;lt;dirpath&amp;gt;&lt;br /&gt;
git add ./rep1/dvlp1File.txt&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Seulement les éléments déjà ajoutés:&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git add -u [--] [filepattern ...]&lt;br /&gt;
git add -u &lt;br /&gt;
git add -u &amp;quot;*.c&amp;quot; &amp;quot;../*.h&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tous les éléments:&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git add -A [--] [filepattern ...]&lt;br /&gt;
git add -A &lt;br /&gt;
git add -A &amp;quot;*.c&amp;quot; &amp;quot;../*.h&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
{{cadreR|Attention {{mmm|git add -A}} supprimera dans stgArea les fichiers qui ne sont plus dans {{mmm|wrkDir}}.}}&lt;br /&gt;
{{cadreV|Attention {{mmm|git add -n}} permet de tester sans toucher {{mmm|stgArea}}, très pratique si l'on n'est pas sûr, exemple {{mmm|git add -n -A &amp;quot;../ser*&amp;quot; &amp;quot;../inter*&amp;quot;}}.}}&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
stash        wrkDir        stgArea    locDep   remDep&lt;br /&gt;
                └────rec──────▶│&lt;br /&gt;
                   &amp;quot;add&amp;quot; ou &amp;quot;add -u&amp;quot;        &lt;br /&gt;
&lt;br /&gt;
stash        wrkDir        stgArea    locDep   remDep&lt;br /&gt;
                └────rec──────▶│&lt;br /&gt;
                              some&lt;br /&gt;
                               └unrec─▶∅&lt;br /&gt;
                   &amp;quot;add -A&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
===  Montrer les différences et comparer ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&lt;br /&gt;
Entre deux tags :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git diff tag1 tag2&lt;br /&gt;
git diff tag1 tag2 -- some/file/name&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Pour ne voir que la liste des fichiers qui comportent des différences:&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git diff tag1 tag2 --stat&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Pour une différence avec le répertoire courant:&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git diff tagX&lt;br /&gt;
git diff tagX -- some/file/name&lt;br /&gt;
git diff tagX  --stat&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
=== Enregistrer/Commiter les fichiers déjà ajoutés dans «locDep» ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git commit -m &amp;lt;message&amp;gt;&lt;br /&gt;
git commit -m &amp;quot;dvlp01-01&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
stash        wrkDir        stgArea    locDep   remDep&lt;br /&gt;
                │             └unrec─▶∅&lt;br /&gt;
                └───────────cp───────────▶&amp;lt;newSha1&amp;gt;&lt;br /&gt;
                                          &amp;lt;sha1&amp;gt;&lt;br /&gt;
                                           ...&lt;br /&gt;
                    &amp;quot;commit -m &amp;lt;message&amp;gt;&amp;quot;        &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Annuler ===&lt;br /&gt;
==== Annuler un ajout d'un fichier au «stgArea» - “unadd” - &amp;quot;reset &amp;lt;path&amp;gt;&amp;quot; ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git reset &amp;lt;filepath&amp;gt;&lt;br /&gt;
git reset HEAD &amp;lt;filepath&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{dq|wrkDir}} n'est pas impacté.&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
stash        wrkDir        stgArea    locDep   remDep&lt;br /&gt;
                     ∅◀─unrec─┘ &lt;br /&gt;
                         &amp;quot;reset &amp;lt;path&amp;gt;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Annuler/Uncommiter le dernier enregistrement dans « locDep » ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git reset --soft HEAD^&lt;br /&gt;
}}&lt;br /&gt;
{{dq|wrkDir}} et {{dq|stgArea}} ne sont pas impactés.&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
stash        wrkDir        stgArea    locDep   remDep&lt;br /&gt;
&lt;br /&gt;
                                ∅◀─mv─&amp;lt;HEAD&amp;gt;&lt;br /&gt;
                                       &amp;lt;HEAD^&amp;gt;&lt;br /&gt;
                                        ...&lt;br /&gt;
&lt;br /&gt;
                                  &amp;quot;reset --soft HEAD^&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Rq|La commande {{mm|git reset --soft HEAD}} ne fait rien}}&lt;br /&gt;
&lt;br /&gt;
==== Annuler/Uncommits plusieurs enregistrements dans « locDep » ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git reset --soft HEAD^^^&lt;br /&gt;
git reset --soft dba146f&lt;br /&gt;
}}&lt;br /&gt;
{{dq|wrkDir}} et {{dq|stgArea}} ne sont pas impactés.&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
stash        wrkDir        stgArea    locDep   remDep&lt;br /&gt;
&lt;br /&gt;
                              ∅◀─mv─ &amp;lt;HEAD&amp;gt;  &lt;br /&gt;
                              ∅◀─mv─ &amp;lt;HEAD^&amp;gt;  &lt;br /&gt;
                              ∅◀─mv─ &amp;lt;HEAD^^&amp;gt;  &lt;br /&gt;
                                     &amp;lt;HEAD^^^&amp;gt;=&amp;lt;Commit&amp;gt;&lt;br /&gt;
                                        ...   &lt;br /&gt;
&lt;br /&gt;
                         &amp;quot;reset --soft &amp;lt;Commit&amp;gt;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Annuler/unLocalyModify toutes les modifications dans « wrkDir » ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git reset --hard&lt;br /&gt;
git reset --hard HEAD&lt;br /&gt;
}}&lt;br /&gt;
{{dq|wrkDir}} et {{dq|stgArea}} sont directement impactés.&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
stash        wrkDir        stgArea    locDep    remDep&lt;br /&gt;
               │     ∅◀─unrec─┘  &lt;br /&gt;
               │◀───────────cp────────&amp;lt;HEAD&amp;gt;  &lt;br /&gt;
                                       ...   &lt;br /&gt;
&lt;br /&gt;
                    &amp;quot;reset --hard HEAD&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Annuler/unLocalyModify les modifications d'un fichier dans « wrkDir »  ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git checkout HEAD Makefile&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
stash        wrkDir        stgArea    locDep    remDep&lt;br /&gt;
               │     ∅◀─unrec─┘  &lt;br /&gt;
               │◀───────────cp────────&amp;lt;HEAD&amp;gt;  &lt;br /&gt;
                                       ...   &lt;br /&gt;
&lt;br /&gt;
                    &amp;quot;git checkout HEAD Makefile&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Dépôt distant ===&lt;br /&gt;
==== Changer le dépôt distant {{dq|{{mm|origin}}}}====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git remote rename origin origin-old&lt;br /&gt;
git remote add origin git@gitlab.pleiade.edf.fr:eelCounter/eelCounter.git&lt;br /&gt;
git branch --set-upstream-to=origin/master master&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Connaître l'url de la base distante - remote ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
origin	&amp;lt;remGitNameUrl&amp;gt;  (fetch)&lt;br /&gt;
origin	&amp;lt;remGitNameUrl&amp;gt;  (push)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Ajouter un dépôt distant - remote add ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{cadrePar|1=&lt;br /&gt;
{{mm|remoteName}} est nom (une variable) correspondant à la base distante &lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git remote add &amp;lt;remoteName&amp;gt; &amp;lt;path&amp;gt;&lt;br /&gt;
git remote add &amp;lt;remoteName&amp;gt; &amp;lt;remotePath&amp;gt;&lt;br /&gt;
git remote add &amp;lt;remoteName&amp;gt; &amp;lt;localPath&amp;gt;&lt;br /&gt;
git remote add &amp;lt;remoteName&amp;gt; &amp;lt;url&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{cadreB|cas distant :}}&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git remote add claumep1 http://claumep1.der.edf.fr/git/P112N_pivot.git&lt;br /&gt;
git remote add atorossClaui2v9 ssh://atoross@claui2v9.der.edf.fr/local01/atoross/dvlp/vishnu/github_vishnu.git&lt;br /&gt;
}}&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git pull &amp;lt;remoteName&amp;gt; [&amp;lt;remoteBranchName&amp;gt;]&lt;br /&gt;
}}&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git pull atorossClaui2v9 zmq&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{cadreB|cas local:}}&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git remote add theTrunk /home/C07138/opentelemacTrunk&lt;br /&gt;
&lt;br /&gt;
git remote -v&lt;br /&gt;
git branch &lt;br /&gt;
&lt;br /&gt;
git stash &lt;br /&gt;
git pull theTrunk master&lt;br /&gt;
&lt;br /&gt;
git pull theTrunk master&lt;br /&gt;
&lt;br /&gt;
git branch gouttedo&lt;br /&gt;
git branch &lt;br /&gt;
git checkout gouttedo &lt;br /&gt;
&lt;br /&gt;
git pull theTrunk gouttedo&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Enlever un dépôt distant - remote rm ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm claui2v6&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== Inspecter un dépôt distant - remote -v show ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v show &amp;lt;remoteName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Example :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v show origin&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
=== Merger  ===&lt;br /&gt;
==== Merger une branche (locale) dans la branche courante ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git merge multiZoneDvlp&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Merger seulement des fichiers d'une branche dans la branche courante ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git merge --no-ff --no-commit &amp;lt;branch&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
git merge --no-ff --no-commit at&lt;br /&gt;
git status&lt;br /&gt;
}}&lt;br /&gt;
* {{mm|--no-ff}} : pas de  fast-forward&lt;br /&gt;
* {{mm|--no-commit}} : pas de commit&lt;br /&gt;
&lt;br /&gt;
Vous aurez alors une liste de fichiers automatiquement fusionnés(merged) et d'autres avec des fusions comportant des conflits.&lt;br /&gt;
&lt;br /&gt;
Pour les fichiers auto-fusionnés on peut inspecter le fusion avec la commande :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git diff --cached &amp;lt;filepath&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Pour fusions avec conflit il faut les éditer et faire le choix soi-même, sinon on peut choisir entre la branche et la branche courante.&lt;br /&gt;
&lt;br /&gt;
Choix de la branche courante :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git checkout HEAD &amp;lt;filepath&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Choix de la branche à fusionner :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git checkout &amp;lt;branch&amp;gt;  &amp;lt;filepath&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Merger une branche distante - branch merge ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git checkout master&lt;br /&gt;
git branch -a -v&lt;br /&gt;
git merge remotes/origin/BOU/addStudyExamples&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== gérer les conflits lors des merges/fusions ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Le cas imprévu :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git pull lex256 master&lt;br /&gt;
git checkout --theirs facture/facture.ods&lt;br /&gt;
git add -facture/facture.ods&lt;br /&gt;
git pull lex256&lt;br /&gt;
}}&lt;br /&gt;
Le cas prévisible :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git pull -s ours&lt;br /&gt;
git pull -X theirs&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Branches ===&lt;br /&gt;
==== Supprimer une branche ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
exemple :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git branch -d sph_rpa-1.0.0.0&lt;br /&gt;
git branch -D sph_rpa-1.0.0.0 # sans confirmation&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Lister les branches - fetch, branch ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
exemple :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git fetch -p&lt;br /&gt;
git branch -a -v&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Récupérer / changer une branche distante - fetch, checkout --track ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch &amp;lt;remoteName&amp;gt;&lt;br /&gt;
git checkout --track &amp;lt;remoteName&amp;gt;/&amp;lt;remoteBrancheName&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* checkout : http://git-scm.com/docs/git-checkout&lt;br /&gt;
}}&lt;br /&gt;
{{parW|1=&lt;br /&gt;
exemple :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git fetch -p&lt;br /&gt;
git branch -a -v&lt;br /&gt;
git checkout remotes/origin/BOU/addStudyExamples&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Créer une nouvelle branche - branch ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch &amp;lt;newBranchName&amp;gt; &amp;lt;refBranchName&amp;gt; &lt;br /&gt;
git branch v0.1 master&lt;br /&gt;
git checkout v0.1&lt;br /&gt;
git push origin at/v0.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Partager une nouvelle branche - push &amp;lt;remoteName&amp;gt; &amp;lt;xx&amp;gt;/&amp;lt;topic&amp;gt; ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch &amp;lt;xx&amp;gt;/&amp;lt;topic&amp;gt;&lt;br /&gt;
git co &amp;lt;xx&amp;gt;/&amp;lt;topic&amp;gt; &lt;br /&gt;
git branch&lt;br /&gt;
...&lt;br /&gt;
git push &amp;lt;remoteName&amp;gt; &amp;lt;xx&amp;gt;/&amp;lt;topic&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== Renomer une branche - git branch -m &amp;lt;new-name&amp;gt; ====&lt;br /&gt;
===== Rename your local branch =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
If you are on the branch you want to rename:&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git branch -m new-name&lt;br /&gt;
}}&lt;br /&gt;
If you are on a different branch:&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git branch -m old-name new-name&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=====  Delete the old-name remote branch and push the new-name local branch =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git push origin :old-name new-name&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=====  Reset the upstream branch for the new-name local branch =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git push origin -u new-name&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Tag ===&lt;br /&gt;
==== Taguer une version d'application (pushable) ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git tag -a  cloggingGridModel_rpa-1.0.0 -m &amp;quot;cloggingGridModel version rpa-1.0.0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Le dernier commit - tag -s -a v0.1 -m &amp;quot;FPL 0.1&amp;quot; ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Préparer une clé gpg&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
gpg --gen-key&lt;br /&gt;
gpg --list-keys&lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
Real name: Arthur Torossian&lt;br /&gt;
Email address: arthur.torossian@edf.fr&lt;br /&gt;
You selected this USER-ID:&lt;br /&gt;
    &amp;quot;Arthur Torossian &amp;lt;arthur.torossian@edf.fr&amp;gt;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
/home/atoross/.gnupg/pubring.gpg&lt;br /&gt;
--------------------------------&lt;br /&gt;
pub   3072D/DDDFB557 2013-07-05&lt;br /&gt;
uid                  Arthur Torossian &amp;lt;arthur.torossian@edf.fr&amp;gt;&lt;br /&gt;
sub   3072g/999BED15 2013-07-05&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il faut créer de tag avec annotation sinon le tag est {{m|lightweight}} dans ce cas c'est juste un pointeur sur le nœud du commit.&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git tag -s -a v0.1 -m &amp;quot;FPL 0.1&amp;quot;&lt;br /&gt;
git tag -v v0.1&lt;br /&gt;
git show v0.1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
L'option {{m|{{mm|-s}}}} permet de signer avec le mail comme clé.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Un ancien commit - tag -s -a v0.1 -m &amp;quot;FPL 0.1&amp;quot; 979e98c  ==== &lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git tag -s -a &amp;quot;ciclope.py_x5-1.2.0.1&amp;quot; -m &amp;quot;ciclope.py version x5-1.2.0.1&amp;quot; 979e98c&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Lister les tags sans notations (lightweight tags, annotated tags)====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git for-each-ref refs/tags/ --format '%(objecttype) %(refname:short)' |     while read ty name; do [ $ty = commit ] &amp;amp;&amp;amp; echo $name; done&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Un ancien commit - tag -s -a v0.1 9fceb02 ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git tag -s -a v0.1 9fceb02&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== Partager les tags - push origin v0.1 ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin v0.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin --tags&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== Supprimer un tag local ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git tag -d alpha-3.0.0.0&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Supprimer un tag distant ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git push --delete origin alpha-3.0.0.0 &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Chercher (find) un mot/expression dans un fichier dans toutes les versions ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git rev-list --all | xargs git grep objToFile  | grep serafinViewer.py&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Supprimer ===&lt;br /&gt;
==== Supprimer un répertoire - rm -r  fuelCell ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm -r  fuelCell&lt;br /&gt;
git rm -r lightModel   airportsTraffic&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
==== Supprimer un répertoire / fichier dans toute l'historique - git filter-branch -f --tree-filter ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git filter-branch -f --tree-filter &amp;quot;rm -rf  ./donnees/studyExamples  &amp;quot; --prune-empty -- --all&lt;br /&gt;
git push --force&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Sous base ou module ===&lt;br /&gt;
==== Organisation ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Pour l'instant il n'y pas moyen d'ajouter plusieurs dépôts pour un sous module. Dans ce cas il vaut mieux ajouter un dépôt local avec un chemin relatif (exemple : {{mm|../modAtTool}}) et ainsi on pourra gérer les dépôts distants depuis la base locale.&lt;br /&gt;
}}&lt;br /&gt;
==== Ajouter un sous module - une autre base git dans un sous répertoire ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git submodule add  https://git.forge.pleiade.edf.fr/git/verona.git modAtTool&lt;br /&gt;
}}&lt;br /&gt;
Il faut tout de suite configurer la liaison avec une branche par exemple ici {{mm|ciclope}}. Ainsi chaque utilisateur du&lt;br /&gt;
module a sa propre version.&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config -f .gitmodules submodule.modAtTool.branch ciclope&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Configurer la branche du sous module ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config -f .gitmodules submodule.modAtTool.branch ciclope&lt;br /&gt;
more .gitmodules &lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
[submodule &amp;quot;modAtTool&amp;quot;]&lt;br /&gt;
	path = modAtTool&lt;br /&gt;
	url = https://git.forge.pleiade.edf.fr/git/verona.git&lt;br /&gt;
	branch = ciclope&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Récuprer un sous module - puller un sous module ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
La première fois :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git submodule update --init --recursive&lt;br /&gt;
}}&lt;br /&gt;
Après on peut utiliser la commande {{mm|pull}} lui-même :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git pull --recurse-submodules&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Changer l'url du sous module ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git config --file=.gitmodules submodule.modAtTool.url ../modAtTool&lt;br /&gt;
git config --file=.gitmodules submodule.modAtTool.branch chenal3&lt;br /&gt;
git submodule sync&lt;br /&gt;
git submodule update --init --recursive --remote&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Renommer un sous module ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git mv modAtTool/ modExtTool&lt;br /&gt;
gcm &amp;quot;rename extern tool&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Supprimer un sous module ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git rm modExtTool&lt;br /&gt;
gcm &amp;quot;delete extern tool&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Cloner une base avec les sous modules ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Pour une version {{M|≥ 2.13}} :&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git clone --recurse-submodules  https://...myBase.git myBase&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Voir l'historique - git-log ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* La doc en ligne : [https://git-scm.com/docs/git-log]&lt;br /&gt;
D'un fichier donné:&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
git log --pretty=format:&amp;quot;%h %cd %Cgreen%s %Cred%d&amp;quot; \&lt;br /&gt;
        --graph  --abbrev-commit  --date=&amp;quot;format:%Y/%m/%d %Hh%M&amp;quot; \&lt;br /&gt;
        --follow ciclopeM3z.py&lt;br /&gt;
}}&lt;br /&gt;
Globalement:&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
# court&lt;br /&gt;
git log --pretty=format:&amp;quot;%h %cd %Cgreen%s %Cred%d&amp;quot; --graph  --abbrev-commit  --date=&amp;quot;format:%Y/%m/%d %Hh%M&amp;quot;&lt;br /&gt;
# long&lt;br /&gt;
$git log --pretty=format:&amp;quot;%h %cd %cn %Cgreen%s %Cred%d&amp;quot; --graph  --abbrev-commit --date=&amp;quot;format:%Y/%m/%d %Hh%M&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Comment s'organiser ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{fig|le graph|gitCycleGtaph.png}}&lt;br /&gt;
}}&lt;br /&gt;
=== Créer une nouvelle base ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
cd &amp;lt;locGitBaseRep&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
touch README&lt;br /&gt;
git add README&lt;br /&gt;
git commit -m &amp;quot;init&amp;quot;&lt;br /&gt;
git branch&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Exporter ou archiver hors base - archive ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git archive --format=tar HEAD  ./pivotLanguage/ | gzip &amp;gt; test.tar.gz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Créer un dépôt commun ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{id|distantGit}}Sur le serveur distant:&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
mkdir &amp;lt;remGitBaseRep&amp;gt;&lt;br /&gt;
cd &amp;lt;remGitBaseRep&amp;gt;&lt;br /&gt;
git init --bare&lt;br /&gt;
git update-server-info&lt;br /&gt;
cd ..&lt;br /&gt;
chown -R www-data:atoross &amp;lt;remGitBaseRep&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
L'option {{mm|--bare}} évite d'avoir les fichiers locaux de travail.&lt;br /&gt;
}}&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Sur l'une des machines de travail ou  base de travail:&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git clone https://claumep1.der.edf.fr/git/hydro myHydro&lt;br /&gt;
git br&lt;br /&gt;
}}&lt;br /&gt;
La commande {{mm|git br}} ne renvoie aucune branche. Il faut au minimum {{m|ajouter}}({{mm|add}}) un fichier et enregistrer l'ajout ({{mm|commit}}) afin que la branche par défaut {{m|{{mm|master}}}} apparaisse :&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git add conv.py&lt;br /&gt;
git cm -m  &amp;quot;test python file reading med file&amp;quot; conv.py&lt;br /&gt;
git br&lt;br /&gt;
}}&lt;br /&gt;
Cette fois-ci nous avons bien la branche {{m|{{mm|master}}}} :&lt;br /&gt;
{{codeTr|lang=text|code=&lt;br /&gt;
* master&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
{{Rq|Je ne sais toujours pas pourquoi il faut ajouter absolument un fichier pour que la branche {{m|{{mm|master}}}} puisse exister localement !}}&lt;br /&gt;
{{cadrePar|1={{parW|1=&lt;br /&gt;
{{cadreR|Attention tout n'est pas fini}}&lt;br /&gt;
&lt;br /&gt;
Si on utilise {{mm|https/http}}, pour pusher il faut ajouter son login dans {{mm|.git/config}} sinon le push ne passe pas ! &lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
[remote &amp;quot;origin&amp;quot;]&lt;br /&gt;
	url = https://atoross@at.bht.fr/git/atTools.git&lt;br /&gt;
}}&lt;br /&gt;
Finallement on peut pusher :&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git push --set-upstream  origin  master&lt;br /&gt;
}}&lt;br /&gt;
Pour pouvoir {{dq|pusher}} et {{dq|puller}} il faut également ajouter au moins un fichier :&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git add readme.txt&lt;br /&gt;
gcm &amp;quot;init&amp;quot;&lt;br /&gt;
git push&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Le rôle de l'intégrateur ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd integratorLocGitBase/&lt;br /&gt;
evim intFile.txt&lt;br /&gt;
git add intFile.txt&lt;br /&gt;
git cm -m &amp;quot;int-01&amp;quot;&lt;br /&gt;
git lg origin/master&lt;br /&gt;
git push&lt;br /&gt;
git lg origin/master&lt;br /&gt;
git add intFile.txt&lt;br /&gt;
git cm -m &amp;quot;int-02&amp;quot;&lt;br /&gt;
git push&lt;br /&gt;
git lg origin/master&lt;br /&gt;
git fetch&lt;br /&gt;
git co --track origin/ar/topic-u2-01 &lt;br /&gt;
git co master&lt;br /&gt;
git branch &lt;br /&gt;
git merge ar/topic-u2-01 &lt;br /&gt;
#git merge --log --no-ff ar/topic-u2-01 &lt;br /&gt;
git push &lt;br /&gt;
git co ar/topic-u2-01 &lt;br /&gt;
git pull&lt;br /&gt;
more dvlp2File.txt &lt;br /&gt;
git co master&lt;br /&gt;
git merge --log --no-ff ar/topic-u2-01 &lt;br /&gt;
git push&lt;br /&gt;
git config user.name &amp;quot;Integrator&amp;quot;&lt;br /&gt;
git config --list&lt;br /&gt;
git status&lt;br /&gt;
more intFile.txt &lt;br /&gt;
git add intFile.txt&lt;br /&gt;
git commit -m &amp;quot;int-03&amp;quot;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git lg origin/master&lt;br /&gt;
git remote show origin&lt;br /&gt;
git lg&lt;br /&gt;
git st&lt;br /&gt;
git add intFile.txt&lt;br /&gt;
git cm -m &amp;quot;int-04&amp;quot;&lt;br /&gt;
git push&lt;br /&gt;
git lg&lt;br /&gt;
git add intFile.txt&lt;br /&gt;
git cm -m &amp;quot;int-05&amp;quot;&lt;br /&gt;
git push&lt;br /&gt;
git lg&lt;br /&gt;
git fetch origin&lt;br /&gt;
git co --track origin/at/topic-u1-01 &lt;br /&gt;
git br&lt;br /&gt;
git status&lt;br /&gt;
git br&lt;br /&gt;
git sw master&lt;br /&gt;
git br&lt;br /&gt;
git merge --log --no-ff at/topic-u1-01 &lt;br /&gt;
git status&lt;br /&gt;
git push&lt;br /&gt;
git slg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
=== Rôle de l'utilisateur 1 ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd dvlp1GitBase/&lt;br /&gt;
git lg  origin/master&lt;br /&gt;
git pull&lt;br /&gt;
branch at/topic-u1-01&lt;br /&gt;
git sw at/topic-u1-01 &lt;br /&gt;
git branch&lt;br /&gt;
git add dvlp1File.txt&lt;br /&gt;
git status&lt;br /&gt;
git cm -m &amp;quot;dvlp01-01&amp;quot;&lt;br /&gt;
git lg&lt;br /&gt;
branch&lt;br /&gt;
push origin at/topic-u1-01 &lt;br /&gt;
git co master&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
=== Rôle de l'utilisateur 2 ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git clone   file:///home/atoross/dvlp/gitTests/remGitBase dvlp2GitBase&lt;br /&gt;
cd dvlp2GitBase/&lt;br /&gt;
git br ar/topicu2-01&lt;br /&gt;
git sw ar/topicu2-01 &lt;br /&gt;
git br&lt;br /&gt;
git config user.name &amp;quot;Arturo Torossiani&amp;quot;&lt;br /&gt;
git pull&lt;br /&gt;
git lg&lt;br /&gt;
git branch ar/topic-u2-01&lt;br /&gt;
git branch&lt;br /&gt;
git checkout ar/topic-u2-01 &lt;br /&gt;
git branch&lt;br /&gt;
git cm -am &amp;quot;dvlp02-01&amp;quot;&lt;br /&gt;
git add dvlp2File.txt&lt;br /&gt;
git cm -am &amp;quot;dvlp02-01&amp;quot;&lt;br /&gt;
git push origin ar/topic-u2-01 &lt;br /&gt;
git branch&lt;br /&gt;
git cm -am &amp;quot;dvlp02-02&amp;quot;&lt;br /&gt;
git push origin ar/topic-u2-01&lt;br /&gt;
git lg&lt;br /&gt;
more dvlp2File.txt &lt;br /&gt;
git slg&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
==== Créer un patch ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
;-&amp;lt;n&amp;gt;&lt;br /&gt;
:Prepare patches from the topmost &amp;lt;n&amp;gt; commits.&lt;br /&gt;
{{codeTr|lang=bash|code=&lt;br /&gt;
git format-patch master -1&lt;br /&gt;
}}&lt;br /&gt;
[https://git-scm.com/docs/git-format-patch]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== git-svn ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [[git-svn]]&lt;br /&gt;
}}&lt;br /&gt;
== Mes bases Git ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [[Mes bases Git]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Git servi par apache ==&lt;br /&gt;
==== Créer une base sans les fichiers locaux - Create a bare repository ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
;bare&lt;br /&gt;
: nue, sans la partie de travail&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd &amp;lt;remGitNameRep&amp;gt;&lt;br /&gt;
git init --bare&lt;br /&gt;
git update-server-info&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{parW|1=&lt;br /&gt;
ou à partir d'une base existante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd &amp;lt;remGitNameParentRep&amp;gt;&lt;br /&gt;
git clone --bare &amp;lt;remGitNameUrl&amp;gt; &amp;lt;GitName&amp;gt;.git&lt;br /&gt;
git update-server-info&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Configurer apache ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* source&lt;br /&gt;
*:  http://blog.freelan.org/2011/09/02/installation-dun-serveur-git-avec-apache-sous-linux/&lt;br /&gt;
 &lt;br /&gt;
on peut ajouter un fichier {{mm|git}} :&lt;br /&gt;
{{code|lang=apache|code=&lt;br /&gt;
################################################################################&lt;br /&gt;
# git&lt;br /&gt;
################################################################################&lt;br /&gt;
Alias /git/ &amp;quot;/local01/www/arth/git/&amp;quot;&lt;br /&gt;
&amp;lt;Location /git&amp;gt;&lt;br /&gt;
    DAV on&lt;br /&gt;
    Options -Indexes&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;RequireAll&amp;gt;&lt;br /&gt;
    Require all granted&lt;br /&gt;
    SSLRequireSSL&lt;br /&gt;
&lt;br /&gt;
    AuthType Basic&lt;br /&gt;
    AuthName &amp;quot;Git&amp;quot;&lt;br /&gt;
    AuthBasicProvider file&lt;br /&gt;
    AuthUserFile &amp;quot;/etc/apache2/passwd/passwords_admin&amp;quot;&lt;br /&gt;
    &amp;lt;RequireAll&amp;gt;&lt;br /&gt;
        Require valid-user&lt;br /&gt;
    &amp;lt;/RequireAll&amp;gt;&lt;br /&gt;
    &amp;lt;/RequireAll&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{code|lang=bash|code=&lt;br /&gt;
a2ensite git&lt;br /&gt;
a2enmod dav&lt;br /&gt;
a2enmod dav_fs&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
}}&lt;br /&gt;
{{cadreR|&lt;br /&gt;
Pour terminer il faut lire [[#distantGit|Créer une base commune distante]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
== Problèmes rencontrés ==&lt;br /&gt;
=== Le problème de dev.azure.com IMPOSSIBLE de désactiver ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
Voir globalDoc/gitlab.txt.&lt;br /&gt;
&lt;br /&gt;
Solution : &lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
git config --edit --system&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
=== Manque de mémoire ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
remote: Counting objects: 11191, done.&lt;br /&gt;
remote: warning: suboptimal pack - out of memory&lt;br /&gt;
remote: fatal: Out of memory, malloc failed (tried to allocate 348936731 bytes)&lt;br /&gt;
remote: aborting due to possible repository corruption on the remote side.&lt;br /&gt;
fatal: protocol error: bad pack header&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Résolution : &lt;br /&gt;
&lt;br /&gt;
Git LFS (Large File Storage) est une extension de Git développée par Atlassian, GitHub, et quelques autres contributeurs open source, qui réduit l'impact des fichiers volumineux dans votre dépôt en téléchargeant paresseusement les versions de ces fichiers. [https://www.atlassian.com/fr/git/tutorials/git-lfs]&lt;br /&gt;
&lt;br /&gt;
Installation :&lt;br /&gt;
{{code|lang=text|code=&lt;br /&gt;
git lfs install &lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Liens ==&lt;br /&gt;
=== Rsync avec git bash sous windows ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* Voir [[Rsync#MSYS2|RSync]]&lt;br /&gt;
}}&lt;br /&gt;
=== Autres ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* Les commandes GIT que vous devez absolument connaître !&lt;br /&gt;
*: https://www.hostinger.fr/tutoriels/commandes-git/&lt;br /&gt;
* Gloassary - Git commands&lt;br /&gt;
*: https://www.atlassian.com/git/glossary&lt;br /&gt;
* git-cheatsheet&lt;br /&gt;
*: http://ndpsoftware.com/git-cheatsheet.html&lt;br /&gt;
* svn basic commands to git commands &lt;br /&gt;
*: http://aliceinfo.cern.ch/Offline/node/2912/&lt;br /&gt;
* La dernière version de mon .bash-scm est disponible sur le dépot Git suivant:&lt;br /&gt;
*: {{m|{{mm|$ git clone http://repo.or.cz/r/git-scripts.git }} }}&lt;br /&gt;
* Enfin, le dépôt sima utilisé pour la démo ainsi que le script de la démo sont récupérable ici si vous voulez expérimenter.&lt;br /&gt;
*: {{m|{{mm|$ git clone git://cln46mr/home/git/sima }} }}&lt;br /&gt;
* Main Web Site - Site officiel&lt;br /&gt;
*: http://git-scm.com/&lt;br /&gt;
* commandes&lt;br /&gt;
*: http://git-scm.com/book/commands &lt;br /&gt;
* Référence rapide &lt;br /&gt;
*: http://gitref.org/index.html&lt;br /&gt;
* Référence &lt;br /&gt;
*: http://git-scm.com/docs&lt;br /&gt;
* Community Book&lt;br /&gt;
*: http://book.git-scm.com&lt;br /&gt;
*: http://git-scm.com/book&lt;br /&gt;
* Livre Pro Git - Scott Chacon - Apress&lt;br /&gt;
*: http://progit.org&lt;br /&gt;
* Tutoriel officiel &lt;br /&gt;
*: http://schacon.github.com/git/gittutorial.html&lt;br /&gt;
* Autres tutoriels&lt;br /&gt;
*: https://www.atlassian.com/git/workflows&lt;br /&gt;
* Manuel officiel &lt;br /&gt;
*: http://schacon.github.com/git/user-manual.html&lt;br /&gt;
* Pour les scientifiques http://eagain.net/articles/git-for-computer-scientists/&lt;br /&gt;
* Les  commandes http://schacon.github.com/git/everyday.html&lt;br /&gt;
* 8 ways to share your git repository&lt;br /&gt;
*: http://www.jedi.be/blog/2009/05/06/8-ways-to-share-your-git-repository/&lt;br /&gt;
* Setting up GIT with Apache Smart HTTP/S and LDAP &lt;br /&gt;
*: http://loutilities.wordpress.com/2011/08/12/setting-up-git-with-apache-smart-https-and-ldap/&lt;br /&gt;
* Topic branches&lt;br /&gt;
*: https://github.com/dchelimsky/rspec/wiki/Topic-Branches&lt;br /&gt;
* A successful Git branching model &lt;br /&gt;
*: http://nvie.com/posts/a-successful-git-branching-model/&lt;br /&gt;
* Mercurial for Git users&lt;br /&gt;
*: [http://mercurial.selenic.com/wiki/GitConcepts mercurial.selenic.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Clients ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* gitk&lt;br /&gt;
*: le projet : http://gitk.sourceforge.net/&lt;br /&gt;
*: la doc : http://git-scm.com/docs/gitk&lt;br /&gt;
* Smart  Git (smartgit)&lt;br /&gt;
*:http://www.syntevo.com/smartgithg/index.html&lt;br /&gt;
}}&lt;br /&gt;
=== Serveur web ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* How To Install A Public Git Repository On A Debian Server&lt;br /&gt;
*: https://www.howtoforge.com/how-to-install-a-public-git-repository-on-a-debian-server&lt;br /&gt;
* How to setup Git server on Linux Container in Debian&lt;br /&gt;
*: http://unix.stackexchange.com/questions/85929/how-to-setup-git-server-on-linux-container-in-debian&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Windows_Explorer_et_utilisation_de_Windows&amp;diff=4874</id>
		<title>Windows Explorer et utilisation de Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Windows_Explorer_et_utilisation_de_Windows&amp;diff=4874"/>
		<updated>2024-12-18T12:06:01Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Introduction&lt;br /&gt;
|texte=WE Windows Explorer - Explorateur de Windows&lt;br /&gt;
}}&lt;br /&gt;
= Abus de pouvoir de Microsoft :  =&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* Voir aussi textDoc/os/windows.reg&lt;br /&gt;
Bug et Grand problème de Windows avec edge son explorateur de m.&lt;br /&gt;
on ne peut dé-associer edge de pdf et de html par exemple et aucun moyens de&lt;br /&gt;
de le faire dans les paramètres car html n'y est même pas !&lt;br /&gt;
* Voici une solution porposé sur :[https://onedrive.live.com/?authkey=%21AEaYdQ3ixJSUV50&amp;amp;id=941538346C2C5835%218110&amp;amp;cid=941538346C2C5835&amp;amp;parId=root&amp;amp;parQt=sharedby&amp;amp;o=OneUp] et [https://answers.microsoft.com/en-us/windows/forum/all/how-to-change-default-app-for-html-extension/f7aa3f26-ad64-44fd-928f-5347d1b9774e]&lt;br /&gt;
&lt;br /&gt;
Le contenu de windows.reg :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;reg&amp;quot;&amp;gt;&lt;br /&gt;
Windows Registry Editor Version 5.00&lt;br /&gt;
&lt;br /&gt;
[-HKEY_CLASSES_ROOT\MSEdgeHTM]&lt;br /&gt;
&lt;br /&gt;
[-HKEY_CURRENT_USER\Software\Classes\MSEdgeHTM]&lt;br /&gt;
&lt;br /&gt;
[HKEY_CLASSES_ROOT\MSEdgeHTM]&lt;br /&gt;
@=&amp;quot;Microsoft Edge HTML Document&amp;quot;&lt;br /&gt;
&amp;quot;AppUserModelId&amp;quot;=&amp;quot;MSEdge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[HKEY_CLASSES_ROOT\MSEdgeHTM\Application]&lt;br /&gt;
&amp;quot;AppUserModelId&amp;quot;=&amp;quot;MSEdge&amp;quot;&lt;br /&gt;
&amp;quot;ApplicationIcon&amp;quot;=&amp;quot;C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe,0&amp;quot;&lt;br /&gt;
&amp;quot;ApplicationName&amp;quot;=&amp;quot;Microsoft Edge&amp;quot;&lt;br /&gt;
&amp;quot;ApplicationDescription&amp;quot;=&amp;quot;Browse the web&amp;quot;&lt;br /&gt;
&amp;quot;ApplicationCompany&amp;quot;=&amp;quot;Microsoft Corporation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[HKEY_CLASSES_ROOT\MSEdgeHTM\DefaultIcon]&lt;br /&gt;
@=&amp;quot;C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe,0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[HKEY_CLASSES_ROOT\MSEdgeHTM\shell\open\command]&lt;br /&gt;
@=&amp;quot;\&amp;quot;C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\&amp;quot; --single-argument %1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[HKEY_CLASSES_ROOT\MSEdgeHTM\shell\runas]&lt;br /&gt;
&amp;quot;ProgrammaticAccessOnly&amp;quot;=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[HKEY_CLASSES_ROOT\MSEdgeHTM\shell\runas\command]&lt;br /&gt;
@=&amp;quot;\&amp;quot;C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\&amp;quot; --do-not-de-elevate --single-argument %1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.htm\UserChoice]&lt;br /&gt;
&lt;br /&gt;
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice]&lt;br /&gt;
&lt;br /&gt;
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Tutoriels en vidéo =&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Les éléments essentiels de l'interface: vocabulaire &lt;br /&gt;
|desc=&lt;br /&gt;
Une brève vidéo expliquant les éléments essentiels de l'interface de Windows, dont le Bureau, les fenêtres, la Barre des tâches, le menu Démarrer et la Zone de notification.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=AZIGHX2Mxzs&lt;br /&gt;
|id=AZIGHX2Mxzs&lt;br /&gt;
|onDisk=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Lancer des applications&lt;br /&gt;
|desc=Utiliser Windows efficacement : Comment lancer des applications dans Windows.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=6eVn2wDukhc&lt;br /&gt;
|id=6eVn2wDukhc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : L'Explorateur de fichiers&lt;br /&gt;
|desc=&lt;br /&gt;
Travailler effiçament avec Windows&lt;br /&gt;
&lt;br /&gt;
Principales composantes de l'Explorateur de fichiers.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=lzreYfoINFQ &lt;br /&gt;
|id=lzreYfoINFQ&lt;br /&gt;
|onDisk=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Créer une arborescence pour organiser ses cours&lt;br /&gt;
|desc=Création d'une arborescence simple, avec une structure cohérente pour chacun de vos cours.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=n0qAtu_ysj0&lt;br /&gt;
|id=n0qAtu_ysj0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Les disques durs de votre ordinateur&lt;br /&gt;
|desc=L'organisation des disques, dossiers et fichiers sur Windows.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=nu6oUUDhvR8&lt;br /&gt;
|id=nu6oUUDhvR8&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Les fenêtres&lt;br /&gt;
|desc=Les principales composantes des fenêtres sous Windows.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=_Ly2IbGRGlk&lt;br /&gt;
|id=_Ly2IbGRGlk&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Passer d'une fenêtre à l'autre&lt;br /&gt;
|desc=Techniques pour rapidement passer d'une fenêtre à l'autre dans Windows.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=oe23BN9LSWI&lt;br /&gt;
|id=oe23BN9LSWI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Redimensionner et organiser les fenêtres&lt;br /&gt;
|desc=Principales manipulations pour déplacer, redimensionner et organiser les fenêtres avec le clavier et la souris.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=8CJFZSzunss&lt;br /&gt;
|id=8CJFZSzunss&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Personnaliser le Bureau&lt;br /&gt;
|desc=Paramètres de personnalisation du Bureau de Windows.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=7g9WtYmT8PM&lt;br /&gt;
|id=7g9WtYmT8PM&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Personnaliser la Barre des tâches&lt;br /&gt;
|desc=Astuces de configuration pour personnaliser la Barre des tâches.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=yHr-lbs-P-c&lt;br /&gt;
|id=yHr-lbs-P-c&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Personnaliser le menu Démarrer&lt;br /&gt;
|desc=Astuces de personnalisation du menu Démarrer et de l'écran d'accueil de Windows.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=sKBUL7ehIiw&lt;br /&gt;
|id=sKBUL7ehIiw&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=Windows : Créer et enregistrer un document (comment ne pas perdre son travail)&lt;br /&gt;
|desc=Comment créer des documents à partir du menu contextuel de Windows, pour ne pas oublier de les enregistrer.&lt;br /&gt;
|address=https://www.youtube.com/watch?v=f4db11wTKDo&lt;br /&gt;
|id=f4db11wTKDo&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
== Configuration ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&lt;br /&gt;
{{youtube&lt;br /&gt;
|title=WE de Windows 10;  faire ressembler à celui de Windows 7, Windows 8 et 8.1&lt;br /&gt;
|desc=&lt;br /&gt;
Dans cette vidéo je vous explique comment configurer l'explorateur de fichiers sur Windows 10 afin qu'il puisse ressembler à celui de Windows 7, Windows 8 et 8.1&lt;br /&gt;
|address=https://www.youtube.com/watch?v=PPNXCKOLHPo&lt;br /&gt;
|id=PPNXCKOLHPo&lt;br /&gt;
|onDisk=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:FrEnPar&amp;diff=4872</id>
		<title>Modèle:FrEnPar</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:FrEnPar&amp;diff=4872"/>
		<updated>2024-12-18T12:03:24Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{ParW&lt;br /&gt;
|inMarge={{{inMarge|}}}&lt;br /&gt;
|margeStyle=min-width:3ch;max-width:3ch;width:3ch;&lt;br /&gt;
|textStyle=min-width:18cm;max-width:20cm;width:19cm;&lt;br /&gt;
|1={{tab2C&lt;br /&gt;
|1={{{1}}} &lt;br /&gt;
|2={{{2}}}  &lt;br /&gt;
|textColor1={{{txtCol1|#000040}}}|textColor2={{{txtCol1|#004000}}}|bgc1={{{backCol1|}}}|bgc2={{{backCol2|}}}}}|sameWidth=50%}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=§&lt;br /&gt;
|texte=Ce modèle Permet décrire des paragraphes français anglais.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{Fr§en|Français|Anglais}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification= &lt;br /&gt;
; inMarge&lt;br /&gt;
: texte en mage à gauche comme pour le modèle [[Modèle:parW|parW]]&lt;br /&gt;
;Français&lt;br /&gt;
:text en français &lt;br /&gt;
;Anglais &lt;br /&gt;
:texte en anglais &lt;br /&gt;
; txtCol1&lt;br /&gt;
:&lt;br /&gt;
; backCol1&lt;br /&gt;
:&lt;br /&gt;
; txtCol2&lt;br /&gt;
:&lt;br /&gt;
; backCol2&lt;br /&gt;
:&lt;br /&gt;
}}&lt;br /&gt;
Exemple : &lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{tab2C&lt;br /&gt;
|colonne 1&lt;br /&gt;
* élément 1&lt;br /&gt;
* élément 2&lt;br /&gt;
|colonne 2&lt;br /&gt;
* élément 1&lt;br /&gt;
* élément 2&lt;br /&gt;
}}&lt;br /&gt;
{{FrEnPar&lt;br /&gt;
|&lt;br /&gt;
* énergie&lt;br /&gt;
* élan&lt;br /&gt;
* entropie&lt;br /&gt;
* charge électrique&lt;br /&gt;
* une quantité de substance&lt;br /&gt;
|&lt;br /&gt;
* energy&lt;br /&gt;
* momentum&lt;br /&gt;
* entropy&lt;br /&gt;
* electric charge&lt;br /&gt;
* amount of substance&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;h1&amp;gt;{{FrEnParTi|Dans le titre |In the title}}&amp;lt;/h1&amp;gt;&lt;br /&gt;
{{FrEnPar&lt;br /&gt;
|Data Flow Generator est un outil qui, à partir d'une description grammaticale d'une structure de données, permet de générer des pilotes pour lire et écrire ces structures en mémoire et/ou dans un fichier.  &lt;br /&gt;
&lt;br /&gt;
Actuellement les codes générés peuvent être du {{m|c++}} ou du {{m|python}} et le format de base est le format {{m|XML}}. &lt;br /&gt;
Les pilotes en c++ utilise la bibliothèque {{m|XERCES}} et les pilotes en python utilisent le module {{m|xml.dom.minidom}}.&lt;br /&gt;
&lt;br /&gt;
Il pourra être complété avec le format {{m|HDF}} ou avec tout autre format structuré en arborescence. &lt;br /&gt;
&lt;br /&gt;
L'outil est utilisable en ligne sur Internet à l'adresse http://dfg.bht.fr pour la version 0 et sur  http://dfg1.bht.fr pour la version 1.&lt;br /&gt;
&lt;br /&gt;
|Data Flow Generator is a tool that, from a grammatical description of a data structure can generate drivers for these structures in order to read and write them into / from random-access memory and/or files. &lt;br /&gt;
&lt;br /&gt;
Currently the code can be generated from {{m|C++}} or {{m|Python}} and the basic format is {{m|XML​​}}. C++ library drivers use {{m|Xerces}} and {{m|Python}} ones use the {{m|xml.dom.minidom}} module.&lt;br /&gt;
&lt;br /&gt;
It may be supplemented with the format {{m|HDF}} or any other tree structured format. &lt;br /&gt;
&lt;br /&gt;
The tool can be used online at http://dfg.bht.fr for version 0 and http://dfg1.bht.fr for version 1. &lt;br /&gt;
}} &lt;br /&gt;
{{FrEnPar&lt;br /&gt;
|inMarge=☡&lt;br /&gt;
|1=&lt;br /&gt;
La quantité de mouvement peut passer ou aller ou circuler d'un corps à l'autre.&lt;br /&gt;
|2=&lt;br /&gt;
Momentum can pass over or go or flow from one body to another.&lt;br /&gt;
|backCol1=#ffa0a0&lt;br /&gt;
|backCol2=#a0a0ff&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
  &lt;br /&gt;
{{tab2C&lt;br /&gt;
|colonne 1&lt;br /&gt;
* élément 1&lt;br /&gt;
* élément 2&lt;br /&gt;
|colonne 2&lt;br /&gt;
* élément 1&lt;br /&gt;
* élément 2&lt;br /&gt;
}}&lt;br /&gt;
{{FrEnPar&lt;br /&gt;
|&lt;br /&gt;
* énergie&lt;br /&gt;
* élan&lt;br /&gt;
* entropie&lt;br /&gt;
* charge électrique&lt;br /&gt;
* une quantité de substance&lt;br /&gt;
|&lt;br /&gt;
* energy&lt;br /&gt;
* momentum&lt;br /&gt;
* entropy&lt;br /&gt;
* electric charge&lt;br /&gt;
* amount of substance&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;h1&amp;gt;{{FrEnParTi|Dans le titre |In the title}}&amp;lt;/h1&amp;gt;&lt;br /&gt;
{{FrEnPar&lt;br /&gt;
|Data Flow Generator est un outil qui, à partir d'une description grammaticale d'une structure de données, permet de générer des pilotes pour lire et écrire ces structures en mémoire et/ou dans un fichier.  &lt;br /&gt;
&lt;br /&gt;
Actuellement les codes générés peuvent être du {{m|c++}} ou du {{m|python}} et le format de base est le format {{m|XML}}. &lt;br /&gt;
Les pilotes en c++ utilise la bibliothèque {{m|XERCES}} et les pilotes en python utilisent le module {{m|xml.dom.minidom}}.&lt;br /&gt;
&lt;br /&gt;
Il pourra être complété avec le format {{m|HDF}} ou avec tout autre format structuré en arborescence. &lt;br /&gt;
&lt;br /&gt;
L'outil est utilisable en ligne sur Internet à l'adresse http://dfg.bht.fr pour la version 0 et sur  http://dfg1.bht.fr pour la version 1.&lt;br /&gt;
&lt;br /&gt;
|Data Flow Generator is a tool that, from a grammatical description of a data structure can generate drivers for these structures in order to read and write them into / from random-access memory and/or files. &lt;br /&gt;
&lt;br /&gt;
Currently the code can be generated from {{m|C++}} or {{m|Python}} and the basic format is {{m|XML​​}}. C++ library drivers use {{m|Xerces}} and {{m|Python}} ones use the {{m|xml.dom.minidom}} module.&lt;br /&gt;
&lt;br /&gt;
It may be supplemented with the format {{m|HDF}} or any other tree structured format. &lt;br /&gt;
&lt;br /&gt;
The tool can be used online at http://dfg.bht.fr for version 0 and http://dfg1.bht.fr for version 1. &lt;br /&gt;
}} &lt;br /&gt;
{{FrEnPar&lt;br /&gt;
|inMarge=☡&lt;br /&gt;
|1=&lt;br /&gt;
La quantité de mouvement peut passer ou aller ou circuler d'un corps à l'autre.&lt;br /&gt;
|2=&lt;br /&gt;
Momentum can pass over or go or flow from one body to another.&lt;br /&gt;
|backCol1=#ffa0a0&lt;br /&gt;
|backCol2=#a0a0ff&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Ligne_exergue&amp;diff=4870</id>
		<title>Modèle:Ligne exergue</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Ligne_exergue&amp;diff=4870"/>
		<updated>2024-12-18T12:03:23Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;margin-top:1em; margin-bottom:1em;&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%;margin:0.1em&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:{{{gaucheW|16px}}}; padding-right:0.0em;&amp;quot;|{{{gauche|Partie gauche}}} &lt;br /&gt;
| style=&amp;quot;text-align:justify;width:*;padding:1em;margin-right:0em&amp;quot;|{{{texte|paramètre « texte » non renseigné}}}&lt;br /&gt;
|}&amp;lt;/div&amp;gt; &amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=§&lt;br /&gt;
|texte=Ce modèle met le texte en exergue en offrant une partie à gauche pour mettre une icône ou texte. Il y a saut de ligne avant et après le texte.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{Ligne_exergue |gaucheW=[]; |gauche=  |texte= |}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification= &lt;br /&gt;
;gaucheW&lt;br /&gt;
:Largeur de la partie gauche, par défaut elle vaut 16px. &lt;br /&gt;
;gauche&lt;br /&gt;
:Contenu de la partie gauche&lt;br /&gt;
;texte&lt;br /&gt;
:Le texte qui sera mis en exergue.&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Ligne_exergue |gaucheW=3em |gauche=Rq2  |texte=Remarque importante}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera : &lt;br /&gt;
&lt;br /&gt;
{{Ligne_exergue |gaucheW=3em |gauche=Rq2  |texte=Remarque importante}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Doc_Ref_titres&amp;diff=4868</id>
		<title>Modèle:Doc Ref titres</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Doc_Ref_titres&amp;diff=4868"/>
		<updated>2024-12-18T12:03:23Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;|-&lt;br /&gt;
|style=&amp;quot;text-align:left;padding:0.1em;margin:0em;&amp;quot;|Réf.&lt;br /&gt;
|style=&amp;quot;text-align:left;padding:0.1em;margin:0em;&amp;quot;|Titre&lt;br /&gt;
|style=&amp;quot;text-align:left;padding:0.1em;margin:0em;&amp;quot;|Auteurs&lt;br /&gt;
|style=&amp;quot;text-align:left;padding:0.1em;margin:0em;&amp;quot;|Autres&lt;br /&gt;
|style=&amp;quot;text-align:left;padding:0.1em;margin:0em;&amp;quot;|Réf. ext.&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=ref&lt;br /&gt;
|texte=Ce modèle sert a fixer les titres d'un tableau de références de documents externes, pour une page donnée, c.a.d. qu'elle se définit dans cette page même et non dans une page différente ou dédiée à la défintion. &lt;br /&gt;
|auteurs=&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{Doc_Ref_titres}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification= &lt;br /&gt;
}}&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{|style=&amp;quot;width:100%&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Doc_Ref_titres}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Doc_Ref|ref_doc=R1 |titre=Voyage au centre de la terre |auteurs=Jules Verne |ref_ext=ISBN : 978-2-07-061721-0}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{Doc_Ref|ref_doc=R2 |titre=L'île mystérieuse  |auteurs=Jules Verne |ref_ext=ISBN : 207063003X }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;|}&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
{{Doc_Ref_titres}}&lt;br /&gt;
{{Doc_Ref|ref_doc=R1 |titre=Voyage au centre de la terre |auteurs=Jules Verne |ref_ext=ISBN : 978-2-07-061721-0}}&lt;br /&gt;
{{Doc_Ref|ref_doc=R2 |titre=L'île mystérieuse  |auteurs=Jules Verne |ref_ext=ISBN : 207063003X }}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Doc_Ref2&amp;diff=4866</id>
		<title>Modèle:Doc Ref2</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Doc_Ref2&amp;diff=4866"/>
		<updated>2024-12-18T12:03:22Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Doc_Ref3&lt;br /&gt;
|auteurs={{{auteurs|}}}&lt;br /&gt;
|date=&lt;br /&gt;
|titre={{{titre}}}&lt;br /&gt;
|editionPlace=&lt;br /&gt;
|publishingHouse={{{edition|}}}&lt;br /&gt;
|collectionName=&lt;br /&gt;
|position=&lt;br /&gt;
|pageNumber=&lt;br /&gt;
|uniqueIdentificationCode={{{ref_ext}}}&lt;br /&gt;
|ressources={{{ressources|}}}&lt;br /&gt;
|ref_id={{{ref_doc|}}}&lt;br /&gt;
|pagename={{{pagename|}}}&lt;br /&gt;
|lecture={{{lecture|}}}&lt;br /&gt;
}}[[Category:RefExt]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=ref&lt;br /&gt;
|texte=Ce modèle (n°2) sert a référencer les documents externes sur d'autres pages, c.a.d. qu'elle se définit dans une page dédiée à sa définition et est incluse dans la liste des références des autres pages. Lire [[Références]] pour l'utilisation de ce modèle.&lt;br /&gt;
|auteurs=&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{Doc_Ref2 |pagename=|ref_doc= |titre= |auteurs= |ref_ext= |edition= |ressources= |lecture=}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=  &lt;br /&gt;
;pagename&lt;br /&gt;
: obligatoire&lt;br /&gt;
: nom de la page (permet inclure la catégorie {{dq|Références}} que dans la page de lecture)&lt;br /&gt;
;ref_doc &lt;br /&gt;
:référence interne du document.&lt;br /&gt;
;titre&lt;br /&gt;
:titres du document.  &lt;br /&gt;
;auteurs&lt;br /&gt;
:auteurs du document.&lt;br /&gt;
;ref_ext &lt;br /&gt;
:référence externe du document. &lt;br /&gt;
;edition&lt;br /&gt;
:édition du livre, facultatif&lt;br /&gt;
;ressources&lt;br /&gt;
: d'autres ressources, liens, etc.&lt;br /&gt;
;lecture&lt;br /&gt;
: si oui ou texte non vide ajoute le lien vers la page de lecture {{dq|Lecture de}}&lt;br /&gt;
}} &lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Doc_Ref2|titre=Voyage au centre de la terre |auteurs=Jules Verne |ref_ext=ISBN : 978-2-07-061721-0}}&lt;br /&gt;
&lt;br /&gt;
{{Doc_Ref2|ref_doc=Reference2|titre=L'île mystérieuse  |auteurs=Jules Verne |ref_ext=ISBN : 207063003X }}&lt;br /&gt;
&lt;br /&gt;
{{Doc_Ref2|ref_doc=wikiversityFormulaireAnalyseVectorielle|titre=Formulaire d'analyse vectorielle|auteurs=wikiversity.org|ref_ext= [http://fr.wikiversity.org/wiki/Analyse_vectorielle/Fiche/Formulaire_d%27analyse_vectorielle ] }}&lt;br /&gt;
&lt;br /&gt;
{{clink|wikiversityFormulaireAnalyseVectorielle}} &lt;br /&gt;
&lt;br /&gt;
{{clink|Reference2}}&lt;br /&gt;
&lt;br /&gt;
== Les identités des réferences ==&lt;br /&gt;
{{AtAllRef}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&lt;br /&gt;
{{Doc_Ref2|titre=Voyage au centre de la terre |auteurs=Jules Verne |ref_ext=ISBN : 978-2-07-061721-0}}&lt;br /&gt;
&lt;br /&gt;
{{Doc_Ref2|ref_doc=Reference2|titre=L'île mystérieuse  |auteurs=Jules Verne |ref_ext=ISBN : 207063003X }}&lt;br /&gt;
&lt;br /&gt;
{{Doc_Ref2|ref_doc=wikiversityFormulaireAnalyseVectorielle|titre=Formulaire d'analyse vectorielle|auteurs=wikiversity.org|ref_ext= [http://fr.wikiversity.org/wiki/Analyse_vectorielle/Fiche/Formulaire_d%27analyse_vectorielle ] }}&lt;br /&gt;
&lt;br /&gt;
{{clink|wikiversityFormulaireAnalyseVectorielle}} &lt;br /&gt;
{{clinkn|wikiversityFormulaireAnalyseVectorielle|toto}} &lt;br /&gt;
&lt;br /&gt;
{{clink|Reference2}}&lt;br /&gt;
{{clinkn|Reference2|toto}}&lt;br /&gt;
&lt;br /&gt;
== Les identités des réferences ==&lt;br /&gt;
{{AtAllRef}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Fr%C2%A7en&amp;diff=4864</id>
		<title>Modèle:Fr§en</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Fr%C2%A7en&amp;diff=4864"/>
		<updated>2024-12-18T12:03:21Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Modèle:FrEnPar]]&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Code&amp;diff=4862</id>
		<title>Modèle:Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Code&amp;diff=4862"/>
		<updated>2024-12-18T12:03:20Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{AtIfNotNul|1={{{line|}}}|2={{#tag:syntaxhighlight|{{{code|}}}|lang={{{lang|text}}}|style=&amp;quot;font-family: monospace; font-size:10pt; padding:0.1ch;margin:0.0ch;{{{colNb|80.5}}}ch;&amp;quot;|line=|lineStart={{{lineStart|1}}}}}|3={{#tag:syntaxhighlight|{{{code|}}}|lang={{{lang|text}}}|style=&amp;quot;font-family: monospace; font-size:10pt;padding:0.1ch;width:{{{colNb|80}}}ch;&amp;quot;}}}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model  &lt;br /&gt;
|class=lang &lt;br /&gt;
|texte=Ce modèle sert présenter un code programmation.    &lt;br /&gt;
|auteurs=&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{code|lang=|code=}}&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|specification=   &lt;br /&gt;
;lang= &lt;br /&gt;
:c++ php …  &lt;br /&gt;
;code=  &lt;br /&gt;
: le code &lt;br /&gt;
; colNb&lt;br /&gt;
: nombre de caractères en largeur (nombre de colonnes)&lt;br /&gt;
; line&lt;br /&gt;
: active la numérotation, mettre n'importe quelle valeur&lt;br /&gt;
; lineStart&lt;br /&gt;
: numéro de ligne de départ, par défaut 1&lt;br /&gt;
}} &lt;br /&gt;
Exemple :   &lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{parW|1=&lt;br /&gt;
{{code|colNb=80.5|lang=cpp|style=border:3px dashed blue;|code=     &lt;br /&gt;
#2345678901234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
#        1         2         3         4         5         6         7         8&lt;br /&gt;
    #include &amp;lt;time.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    void sleep( time_t nb_sec  )&lt;br /&gt;
    {&lt;br /&gt;
        time_t limit, top;            time(&amp;amp;top);          limit = top + nb_sec ;&lt;br /&gt;
        while (top &amp;lt; limit)&lt;br /&gt;
        {&lt;br /&gt;
            time(&amp;amp;top);&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    int main( int argc, char * argv[] )&lt;br /&gt;
    { &lt;br /&gt;
        time_t start, stop;  time(&amp;amp;start); sleep( 5  ) ; time(&amp;amp;stop); printf(&amp;quot;start : %ld\n&amp;quot;,start ); printf(&amp;quot;stop  : %ld\n&amp;quot;,stop ); printf(&amp;quot;in seconds: %f\n&amp;quot;,difftime(stop,start));&lt;br /&gt;
    } &lt;br /&gt;
}}&lt;br /&gt;
}}{{parW|1=&lt;br /&gt;
{{code|lang=cpp|colNb=86.5|code=     &lt;br /&gt;
#2345678901234567890123456789012345678901234567890123456789012345678901234567890123456&lt;br /&gt;
#        1         2         3         4         5         6         7         8&lt;br /&gt;
    #include &amp;lt;time.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    void sleep( time_t nb_sec  )&lt;br /&gt;
    {&lt;br /&gt;
        time_t limit, top;            time(&amp;amp;top);          limit = top + nb_sec ;&lt;br /&gt;
        while (top &amp;lt; limit)&lt;br /&gt;
        {&lt;br /&gt;
            time(&amp;amp;top);&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    int main( int argc, char * argv[] )&lt;br /&gt;
    {&lt;br /&gt;
        time_t start, stop;  time(&amp;amp;start); sleep( 5  ) ; time(&amp;amp;stop); printf(&amp;quot;start : %ld\n&amp;quot;,start ); printf(&amp;quot;stop  : %ld\n&amp;quot;,stop ); printf(&amp;quot;in seconds: %f\n&amp;quot;,difftime(stop,start));&lt;br /&gt;
    }&lt;br /&gt;
}}&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
&lt;br /&gt;
{{parW|1=&lt;br /&gt;
{{code|colNb=80.5|lang=cpp|style=border:3px dashed blue;|code=     &lt;br /&gt;
#2345678901234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
#        1         2         3         4         5         6         7         8&lt;br /&gt;
    #include &amp;lt;time.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    void sleep( time_t nb_sec  )&lt;br /&gt;
    {&lt;br /&gt;
        time_t limit, top;            time(&amp;amp;top);          limit = top + nb_sec ;&lt;br /&gt;
        while (top &amp;lt; limit)&lt;br /&gt;
        {&lt;br /&gt;
            time(&amp;amp;top);&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    int main( int argc, char * argv[] )&lt;br /&gt;
    { &lt;br /&gt;
        time_t start, stop;  time(&amp;amp;start); sleep( 5  ) ; time(&amp;amp;stop); printf(&amp;quot;start : %ld\n&amp;quot;,start ); printf(&amp;quot;stop  : %ld\n&amp;quot;,stop ); printf(&amp;quot;in seconds: %f\n&amp;quot;,difftime(stop,start));&lt;br /&gt;
    } &lt;br /&gt;
}}&lt;br /&gt;
}}{{parW|1=&lt;br /&gt;
{{code|lang=cpp|colNb=86.5|code=     &lt;br /&gt;
#2345678901234567890123456789012345678901234567890123456789012345678901234567890123456&lt;br /&gt;
#        1         2         3         4         5         6         7         8&lt;br /&gt;
    #include &amp;lt;time.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    void sleep( time_t nb_sec  )&lt;br /&gt;
    {&lt;br /&gt;
        time_t limit, top;            time(&amp;amp;top);          limit = top + nb_sec ;&lt;br /&gt;
        while (top &amp;lt; limit)&lt;br /&gt;
        {&lt;br /&gt;
            time(&amp;amp;top);&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    int main( int argc, char * argv[] )&lt;br /&gt;
    {&lt;br /&gt;
        time_t start, stop;  time(&amp;amp;start); sleep( 5  ) ; time(&amp;amp;stop); printf(&amp;quot;start : %ld\n&amp;quot;,start ); printf(&amp;quot;stop  : %ld\n&amp;quot;,stop ); printf(&amp;quot;in seconds: %f\n&amp;quot;,difftime(stop,start));&lt;br /&gt;
    }&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Figuml&amp;diff=4860</id>
		<title>Modèle:Figuml</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Figuml&amp;diff=4860"/>
		<updated>2024-12-18T12:03:18Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;center style=&amp;quot;margin:0em;padding:0.0em;&amp;quot;&amp;gt;&amp;lt;table style=&amp;quot;margin:0.5em 0em 0.5em 0em;padding:0.0em;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;&amp;quot;&amp;gt;&amp;lt;center&amp;gt;{{#tag:uml|{{{2}}}}}&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding-left:1em;padding-right:1em;&amp;quot;&amp;gt;&amp;lt;center&amp;gt;{{AtCount|name=at_fig_count|prefix=fig n°|id={{{3|}}}}}:{{{1}}}&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model &lt;br /&gt;
|class=graph&lt;br /&gt;
|texte=Ce modèle sert a définir des diagrames uml numérotés. &lt;br /&gt;
|auteurs=  &lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{fig|titre|plantuml|id}}&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|specification= &lt;br /&gt;
;titre&lt;br /&gt;
:titre du paragraphe  &lt;br /&gt;
;plantuml&lt;br /&gt;
:source de description uml&lt;br /&gt;
;id &lt;br /&gt;
:l'id est un identifiant unique dans la page, par défaut il vaut une chaîne de caractères vide&lt;br /&gt;
}}&lt;br /&gt;
Exemple :   &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{figuml|Danger|class CModel {&lt;br /&gt;
}|ref1}}&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{clink|ref1}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :  &lt;br /&gt;
   &lt;br /&gt;
{{figuml|Danger|class CModel {&lt;br /&gt;
}|ref1}} &lt;br /&gt;
{{clink|ref1}}&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:RqI&amp;diff=4858</id>
		<title>Modèle:RqI</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:RqI&amp;diff=4858"/>
		<updated>2024-12-18T12:03:17Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Rq|1={{{1}}}|2={{{2|}}}|3={{{3|}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=§&lt;br /&gt;
|texte=Ce modèle sert a définir des remarques numérotées de type importantes (encadrée). &lt;br /&gt;
|auteurs=&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{RqI|texte|id|title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification= &lt;br /&gt;
;texte&lt;br /&gt;
:texte du paragraphe&lt;br /&gt;
;id&lt;br /&gt;
: l'id est un identifiant unique dans la page.&lt;br /&gt;
;title&lt;br /&gt;
:titre&lt;br /&gt;
}}&lt;br /&gt;
Exemple :   &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{RqI|L'exigence est ...|ref1}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{clink|ref1}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :  &lt;br /&gt;
&lt;br /&gt;
{{RqI|L'exigence est ...|ref1}}&lt;br /&gt;
{{clink|ref1}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:ParW&amp;diff=4856</id>
		<title>Modèle:ParW</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:ParW&amp;diff=4856"/>
		<updated>2024-12-18T12:03:17Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{cParBase &lt;br /&gt;
|textStyle={{{textStyle|}}}&lt;br /&gt;
|margeStyle={{{margeStyle|}}}&lt;br /&gt;
|inMarge={{{inMarge|}}}&lt;br /&gt;
|{{atIfNotNul|1={{{id|}}}|2=&amp;lt;span id=&amp;quot;{{{id|}}}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;|3=}}&lt;br /&gt;
{{{1}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model  &lt;br /&gt;
|class=§ &lt;br /&gt;
|texte=Ce modèle sert a définir des paragraphes dont la largeur est fixée voir pour les styles [[MediaWiki:Common.css]]. &lt;br /&gt;
|auteurs= &lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{parW|texte|id=|inMarge=}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
; texte &lt;br /&gt;
: texte du paragraphe&lt;br /&gt;
; id &lt;br /&gt;
:&lt;br /&gt;
; inMarge &lt;br /&gt;
: texte dans la marge gauche&lt;br /&gt;
; ☛ [[Les paragraphes tagués et/ou numérotés]]&lt;br /&gt;
}}&lt;br /&gt;
Exemple :   &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donnera :&lt;br /&gt;
&lt;br /&gt;
123456789_123456789_123456789_123456789_123456789_123456789_123456789_&lt;br /&gt;
&lt;br /&gt;
{{parW|1=&lt;br /&gt;
&lt;br /&gt;
123456789_123456789_123456789_123456789_&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0;margin:0;height:10mm;width:90mm;background-color:#809080;&amp;quot;&amp;gt;90mm&amp;lt;/div&amp;gt;&lt;br /&gt;
|inMarge=&amp;lt;div style=&amp;quot;padding:0;margin:0;height:10mm;width:30mm;background-color:#808080;&amp;quot;&amp;gt;30mm&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}{{parW|1=&lt;br /&gt;
123456789_123456789_123456789_123456789_123456789_123456789_123456789_&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0;margin:0;height:10mm;width:150mm;background-color:#809080;&amp;quot;&amp;gt;150mm&amp;lt;/div&amp;gt;&lt;br /&gt;
|inMarge=&amp;lt;div style=&amp;quot;padding:0;margin:0;height:10mm;width:30mm;background-color:#808080;&amp;quot;&amp;gt;30mm&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}{{parW|1=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0;margin:0;height:10mm;width:180mm;background-color:#809080;&amp;quot;&amp;gt;180mm&amp;lt;/div&amp;gt;&lt;br /&gt;
|inMarge=&amp;lt;div style=&amp;quot;padding:0;margin:0;height:10mm;width:30mm;background-color:#808080;&amp;quot;&amp;gt;30mm&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Tex&amp;diff=4854</id>
		<title>Modèle:Tex</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:Tex&amp;diff=4854"/>
		<updated>2024-12-18T12:03:16Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class=&amp;quot;mw-content&amp;quot; style=&amp;quot;vertical-align: text-middle; background-color:#{{{bgcolor|88f}}}&amp;quot;&amp;gt;{{#tag: latex|{{{1}}}|size1={{{size1|12}}}|size2={{{size2|24}}}|bgcolor={{{bgcolor|&amp;quot;&amp;quot;}}} |usepackages={{{usepackages|}}} }}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model &lt;br /&gt;
|class=math &lt;br /&gt;
|texte=Ce modèle sert à séparer les parties du texte qui concerne le langage mathématique, écrit dans le langage LaTex.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{tex|texte [|size1=] [|size2=] [|bgcolor=] }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification= &lt;br /&gt;
;texte&lt;br /&gt;
:texte dans le langage mathématique en Latex, il faut ajouter les {{m|$}} s'il le faut. {{cadreR|Ne pas utiliser $$ car la mise en page se fait dans la page wiki !}}.&lt;br /&gt;
;size1 &lt;br /&gt;
: 10  &lt;br /&gt;
;size2 &lt;br /&gt;
: 24 &lt;br /&gt;
;bgcolor  &lt;br /&gt;
: sans le #&lt;br /&gt;
; usepackages&lt;br /&gt;
: &lt;br /&gt;
}}&lt;br /&gt;
{{Remarque|texte=l'ajout de {{m|1=1=}} permet d'utiliser le signe = dans le texte sans qu'il soit interprété comme l'assignement d'un paramètre du modèle {{m|tex}}. }}&lt;br /&gt;
   &lt;br /&gt;
Exemple :      &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Voici une expression mathématique {{matht|n \in \mathbb N}}.&lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique &lt;br /&gt;
{{tex|1=$ F_1(x) = \left&amp;amp;#124; \dfrac{ 1 }{ 1 + \dfrac{ 1 }{ 1+x } } \right&amp;amp;#124; $|bgcolor=80FF80}}.  &lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique {{tex|1=$F_2(x)=\left&amp;amp;#124;\dfrac{1}{ 1+\dfrac{1}{1+x} }\right&amp;amp;#124; $|bgcolor=808080}} }}. &lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique {{tex|1=$F_3(x)=\left&amp;amp;#124;\dfrac{1}{ 1+\dfrac{1}{1+x} }\right&amp;amp;#124;$|bgcolor=808080}} }}.&lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique {{tex|1=$ y = x + A_4 $}} {{tex|1=$ y = x + A $}} {{tex|1=$ y = \frac{x+\frac{2x+1}{2x-4} }{A+\frac{x^5}{2x^6-4} } $|bgcolor=808080}} }}&lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique {{tex|1=$y = x + A_5$}} {{tex|1=$y = x + A$}} {{tex|1=$y = \dfrac{x+\dfrac{2x+1}{2x-4} }{A+\dfrac{x^5}{2x^6-4} } $|bgcolor=808080}} }}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera : &lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique {{matht|n \in \mathbb N}}.&lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique &lt;br /&gt;
{{tex|1=$ F_1(x) = \left&amp;amp;#124; \dfrac{ 1 }{ 1 + \dfrac{ 1 }{ 1+x } } \right&amp;amp;#124; $|bgcolor=80FF80}}.  &lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique {{tex|1=$F_2(x)=\left&amp;amp;#124;\dfrac{1}{ 1+\dfrac{1}{1+x} }\right&amp;amp;#124; $|bgcolor=808080}} }}. &lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique {{tex|1=$F_3(x)=\left&amp;amp;#124;\dfrac{1}{ 1+\dfrac{1}{1+x} }\right&amp;amp;#124;$|bgcolor=808080}} }}.&lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique {{tex|1=$ y = x + A_4 $}} {{tex|1=$ y = x + A $}} {{tex|1=$ y = \frac{x+\frac{2x+1}{2x-4} }{A+\frac{x^5}{2x^6-4} } $|bgcolor=808080}} }}&lt;br /&gt;
&lt;br /&gt;
Voici une expression mathématique {{tex|1=$y = x + A_5$}} {{tex|1=$y = x + A$}} {{tex|1=$y = \dfrac{x+\dfrac{2x+1}{2x-4} }{A+\dfrac{x^5}{2x^6-4} } $|bgcolor=808080}} }}&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Symboles&amp;diff=4852</id>
		<title>Symboles</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Symboles&amp;diff=4852"/>
		<updated>2024-12-18T12:03:15Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{IntroductionInformatique&lt;br /&gt;
|texte=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Graphiques ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* [https://www.compart.com/fr/unicode/category/Sm Symbole mathématique]&lt;br /&gt;
* [https://www.compart.com/fr/unicode/bidiclass/ON Autre symbole neutre (≝)]&lt;br /&gt;
* [https://www.compart.com/fr/unicode/category/So Symbole, autre]&lt;br /&gt;
* • ◦ ⦾ ⦿ puce bullet, autres puces : ‣ ⁃ ⁌ ⁍ ∙ ◘ ◦ ⦾ ⦿&lt;br /&gt;
*  ◦ ⦾ ⦿ ‣ ⁃ ⁌ ⁍ ∙ ◘ ◦ ⦾ ⦿ ⬤ 🔴 ◯ ● &lt;br /&gt;
* ․ ou . point, ‧ point de coupure de mots &lt;br /&gt;
* ‥ 2 points&lt;br /&gt;
* … 3 points&lt;br /&gt;
* 🛈 information&lt;br /&gt;
* ⽥ field champ&lt;br /&gt;
* 🔭 télescope &lt;br /&gt;
* 🔬 microscope&lt;br /&gt;
* 🩺 stéthoscope&lt;br /&gt;
* 🧍 personne&lt;br /&gt;
* ⚙ engrenage &lt;br /&gt;
* 🎓 article&lt;br /&gt;
* 📅 calendrier, 📆 &lt;br /&gt;
* ■□ carré&lt;br /&gt;
* 💿 cd&lt;br /&gt;
* 🖮 clavier &lt;br /&gt;
* 🗄 classeur&lt;br /&gt;
* 🗸🗹☐🗵☒⮽ coche &lt;br /&gt;
* ♥♡ cœur &lt;br /&gt;
* 🗑 corbeille&lt;br /&gt;
* 💾 🖪 🖫 disquette&lt;br /&gt;
* 🖴 disque dur&lt;br /&gt;
* 🖸 disque optique&lt;br /&gt;
* 🖬 disque souple&lt;br /&gt;
* 🗎🗋🖹🖺🖻🖼🖽🖾 documents&lt;br /&gt;
* 🖿🗀🗁🗂 dossier&lt;br /&gt;
* 📀 dvd&lt;br /&gt;
* 📧 e-mail&lt;br /&gt;
* 🖵 écran&lt;br /&gt;
* 📐 équerre&lt;br /&gt;
* 📈 graphe, 📉, 📊 &lt;br /&gt;
* 🌎 internet&lt;br /&gt;
* 🖶 imprimante &lt;br /&gt;
* 📰 journal&lt;br /&gt;
* 🔗 lien &lt;br /&gt;
* 🕮 livre, 📖, 📘, 📗, 📙, 📚, 📔, 📓&lt;br /&gt;
* 📋 mémoire tampon clipboard&lt;br /&gt;
* 💻🖳🖥 ordinateur personnel&lt;br /&gt;
* 💽 mini disquette&lt;br /&gt;
* 🗅🗈🗆🗉🗇🗊🗒🗓 note&lt;br /&gt;
* 🌤🌥🌦🌧☁  nuage&lt;br /&gt;
* 🗏🗌🗍🗐 page&lt;br /&gt;
* 🖹, 📃, 📄, 📜, 📝 rapport, page  &lt;br /&gt;
* 🖿🗀🗁🗂 📁 répertoire, 📂ouvert&lt;br /&gt;
* ♔ roi&lt;br /&gt;
* ♕ reine&lt;br /&gt;
* 🌣🌤🌥🌦☀ soleil&lt;br /&gt;
* 🖱🖰🖯 souris &lt;br /&gt;
* 📞 ☎ ☏ ✆ ℡ téléphone&lt;br /&gt;
* 📣 mégaphone &lt;br /&gt;
* 🖲 trackball &lt;br /&gt;
* 🚧 travaux&lt;br /&gt;
* &amp;lt;span style='color:red;'&amp;gt;⚠&amp;lt;/span&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Indices et exposants ==&lt;br /&gt;
{{parW|&amp;lt;nowiki&amp;gt; &amp;lt;sup&amp;gt;a&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt;X &amp;lt;/nowiki&amp;gt; : &amp;lt;sup&amp;gt;a&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt;X&lt;br /&gt;
}}&lt;br /&gt;
{{parW|1= &lt;br /&gt;
* &amp;lt;nowiki&amp;gt; &amp;lt;sup&amp;gt;not&amp;lt;/sup&amp;gt;≔ ≔&amp;lt;sup&amp;gt;not&amp;lt;/sup&amp;gt; &amp;lt;/nowiki&amp;gt; : &lt;br /&gt;
*: &amp;lt;sup&amp;gt;not&amp;lt;/sup&amp;gt;≔ ≔&amp;lt;sup&amp;gt;not&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Définition et Notation&lt;br /&gt;
*: :&amp;lt;sup style=&amp;quot;font-size:60%;&amp;quot;&amp;gt;not&amp;lt;/sup&amp;gt;=&lt;br /&gt;
*: :&amp;lt;sup style=&amp;quot;font-size:60%;&amp;quot;&amp;gt;déf&amp;lt;/sup&amp;gt;=&lt;br /&gt;
*: {{math|1=&amp;amp;nbsp;:&amp;lt;sup style=&amp;quot;font-size:60%;&amp;quot;&amp;gt;not&amp;lt;/sup&amp;gt;⟺&amp;amp;nbsp;}}&lt;br /&gt;
*: {{math|1=&amp;amp;nbsp;:&amp;lt;sup style=&amp;quot;font-size:60%;&amp;quot;&amp;gt;déf&amp;lt;/sup&amp;gt;⟺&amp;amp;nbsp;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Les alphabets ==&lt;br /&gt;
=== L'alphabet grec ===&lt;br /&gt;
{{parW|&lt;br /&gt;
* Æ&lt;br /&gt;
* α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω&lt;br /&gt;
* Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω&lt;br /&gt;
* {{ms|Α α}} alpha, {{ms|Β β}} bêta, {{ms|Γ γ}} gamma, {{ms|Δ δ}} delta, {{ms|Ε ε}} epsilon, {{ms|Ζ ζ}} dzeta, {{ms|Η η}} êta, {{ms|Θ θ}} thêta, {{ms|Ι ι}} iota, {{ms|Κ κ}} kappa, {{ms|Λ λ}} lambda, {{ms|Μ μ}} mu, {{ms|Ν ν}} nu, {{ms|Ο ο}} omicron, {{ms|Ξ ξ}} xi, {{ms|Π π}} pi, {{ms|Ρ ρ}} rau, {{ms|Σ σ}} sigma, {{ms|Τ τ}} tau, {{ms|Υ υ}} upsilon, {{ms|Φ φ}} phi, {{ms|Χ χ}} khi, {{ms|Ψ ψ}} psi, {{ms|Ω ω}} oméga&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Écriture ==&lt;br /&gt;
{{parW|&lt;br /&gt;
Interpunct , also known as an interpoint,[1] middle dot, middot, centered dot or centred dot : · [https://en.wikipedia.org/wiki/Interpunct]&lt;br /&gt;
Signes de ponctuation :&lt;br /&gt;
№ * . , ; : - ? ! … ( ) [ ] « » – / {}&lt;br /&gt;
Espcaces :&lt;br /&gt;
* « » espace norma&lt;br /&gt;
* « » insécable&lt;br /&gt;
* «&amp;amp;#8203;» sans chasse code html : &amp;amp;am;#8203; A&amp;amp;#8203;B&amp;amp;#8203;C&lt;br /&gt;
&lt;br /&gt;
Guillemets :&lt;br /&gt;
* {{ms|«}}…{{ms|»}} &lt;br /&gt;
* {{ms|‘}}…{{ms|’}}  &lt;br /&gt;
* {{ms|“}}…{{ms|”}}  &lt;br /&gt;
* {{ms|'}}…{{ms|'}}  &lt;br /&gt;
* {{ms|&amp;quot;}}…{{ms|&amp;quot;}}&lt;br /&gt;
* {{ms|„}}…{{ms|“}}&lt;br /&gt;
&lt;br /&gt;
Point :&lt;br /&gt;
* {{ms|。}} (idéographique)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Lignes ==&lt;br /&gt;
{{parW|&lt;br /&gt;
{{mathJ|1=\texttt{a=x+y} }}&lt;br /&gt;
* {{ms|◀}} {{ms|─}} {{ms|▶}} ┌────┐ └──┘  ◀────▶│ ┤ ├ ┴ ┕ ↬ ↫&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
{{parW|&lt;br /&gt;
* {{ms|•}} (bullet)&lt;br /&gt;
* {{ms|☚}} {{ms|☛}} {{ms|☜}} {{ms|☝}} {{ms|☞}} {{ms|☟}}  {{ms|☠}}  {{ms|☡}} {{ms|☢}}&lt;br /&gt;
* vidéo caméra film{{ms|📹}}&lt;br /&gt;
* étoile {{ms|★}} {{ms|★}}&lt;br /&gt;
*l'espace visible : {{ms|␣}}&lt;br /&gt;
*continuité de ligne : {{ms|↳}}&lt;br /&gt;
*cartes : {{ms|♠}} {{ms|♣}} {{ms|♥}} {{ms|♦}}&lt;br /&gt;
*échecs : {{ms|♔}}, {{ms|♕}}, {{ms|♖}}, {{ms|♗}}, {{ms|♘}}, {{ms|♙}}, {{ms|♚}}, {{ms|♛}}, {{ms|♜}}, {{ms|♝}}, {{ms|♞}}, {{ms|♟}}&lt;br /&gt;
*flèches : {{ms|⇑}} {{ms|⇐}} {{ms|⇒}} {{ms|⇓}} {{ms|←}}, {{ms|↑}}, {{ms|→}}, {{ms|↓}}, {{ms|↔}}, {{ms|↕}}, {{ms|⇄}}, {{ms|⇅}}, {{ms|↲}}, {{ms|↰}} {{ms|↳}}, {{ms|↱}} {{ms|↴}}, {{ms|↵}}, {{ms|↶}}, {{ms|↷}}, {{ms|↺ }}, {{ms|↻}}, {{ms|➔}}, {{ms|➘}}, {{ms|➙}}, {{ms|➚}}, {{ms|➜}}, {{ms|➟}}, {{ms|➠}}, {{ms|➤}}, {{ms|➥}}, {{ms|➨}}, {{ms|➫}}, {{ms|➬}}, {{ms|➭}}, {{ms|➮}}, {{ms|➯}}, {{ms|➲}}, {{ms|➳}}, {{ms|➵}}, {{ms|➶}}, {{ms|➷}}, {{ms|➸}}, {{ms|➹}}, {{ms|➺}}, {{ms|➻}}, {{ms|➼}}, {{ms|➽}}, {{ms|➾}}, {{ms|◀}}, {{ms|▶}}, {{ms|▲}} {{ms|▼}} {{ms|◁}}, {{ms|▷}}, {{ms|◊}}, {{ms|↪}}, {{ms|↩}}, {{ms|⤻}}, {{ms|⤸}}, {{ms|⤾}}, {{ms|⤿}}, {{ms|⤺}}, {{ms|⤴}}, {{ms|⤵}}, {{ms|⤶}}, {{ms|⤷}}, {{ms|⤹}}, {{ms|⮍}}, {{ms|⮏}}, {{ms|⮎}}, {{ms|⮌}} {{ms|↬}}, {{ms|↫}}, &lt;br /&gt;
*: http://unicode-table.com/en/sets/arrows-symbols/&lt;br /&gt;
*: http://xahlee.info/comp/unicode_arrows.html&lt;br /&gt;
*objets : {{ms|⚑}}, {{ms|⚐}}, {{ms|☔}}, {{ms|☕}}, {{ms|☼}}, {{ms|☾}}, {{ms|❆}}, {{ms|❅}}, {{ms|❄}}, {{ms|✵}}, {{ms|✄}}, {{ms|✁}}, {{ms|✂}}, {{ms|☸}}, {{ms|✈}}, {{ms|⌚}}, {{ms|⌛}}, {{ms|⚖}}, {{ms|⚛}}, {{ms|⚡}}, {{ms|⚒}}, {{ms|⚓}}, {{ms|⚔}}, {{ms|⌨}} &lt;br /&gt;
*musique : {{ms|♭}}, {{ms|♮}}, {{ms|♯}}, {{ms|♩}}, {{ms|☊&amp;quot;}},  {{ms|♪}}, {{ms|♫}}&lt;br /&gt;
* dé : {{ms|⚀}}, {{ms|⚁}}, {{ms|⚂}}, {{ms|⚃}}, {{ms|⚄}}, {{ms|⚅}}, &lt;br /&gt;
*autres : {{ms|◊}}, {{ms|⚕}}, {{ms|⚘}}, {{ms|⚚}}, {{ms|⚠}}, {{ms|♀}}, {{ms|♂}}, {{ms|⚢}}, {{ms|⚣}}, {{ms|⚤}}, {{ms|⚰}}, {{ms|⚱}}, {{ms|☢}}, {{ms|☤}}, {{ms|✝}}, {{ms|☦}}, {{ms|☧}}, {{ms|☨}}, {{ms|☩}}, {{ms|☪}}, {{ms|☭}}, {{ms|♈}}, {{ms|♉}}, {{ms|♊}}, {{ms|♋}}, {{ms|♌}}, {{ms|♍}}, {{ms|♎}}, {{ms|♏}}, {{ms|♐}}, {{ms|♑}}, {{ms|♒}}, {{ms|♓}}, {{ms|⏎}}, {{ms|♨}}, {{ms|⚭}}, {{ms|⚮}}, {{ms|⚯}}, {{ms|✑}}, {{ms|✒}}, {{ms|÷}}, {{ms|‰}}, {{ms|√}}, {{ms|≠}}, {{ms|∞}}, {{ms|❛}}, {{ms|❜}}, {{ms|™}}, {{ms|©}}, {{ms|®}}, {{ms|✇}}, {{ms|✿}}, {{ms|❀}}, {{ms|“}}, {{ms|”}}, {{ms|„}}, {{ms|‟}}, {{ms|«}}, {{ms|»}}, {{ms|…}}, {{ms|◆}}, {{ms|◇}}, {{ms|✣}}, {{ms|✪}}, {{ms|✰}}, {{ms|✧}}, {{ms|✦}}, {{ms|♲}}, {{ms|♻}}, {{ms|♿}}, {{ms|⚅}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Symboles mathématiques ==&lt;br /&gt;
{{parW|&lt;br /&gt;
*[[Symboles mathématiques]]&lt;br /&gt;
*[[:Catégorie:Modèle-symbol|Modèle de symboles]]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Interpunct Ponctuation, Séparateur de mots, Typographie, Propriété intellectuelle, etc.]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Liens ==&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* Unicode char search on line [https://www.compart.com/en/unicode compart.com]&lt;br /&gt;
* Point&lt;br /&gt;
*: http://fr.wikipedia.org/wiki/Point_(signe)&lt;br /&gt;
* Lignes&lt;br /&gt;
*: [http://www.utf8-chartable.de/unicode-utf8-table.pl?start=9472&amp;amp;unicodeinhtml=dec]&lt;br /&gt;
* Flèches&lt;br /&gt;
*: [http://xahlee.info/comp/unicode_arrows.html xahlee.info]&lt;br /&gt;
* Welcome to the Unicode Symbol Map&lt;br /&gt;
*:[http://panmental.de/symbols/info.htm panmental.de]&lt;br /&gt;
* UTF-8 Dingbats&lt;br /&gt;
*: http://www.w3schools.com/charsets/ref_utf_dingbats.asp&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Symboles_math%C3%A9matiques&amp;diff=4850</id>
		<title>Symboles mathématiques</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Symboles_math%C3%A9matiques&amp;diff=4850"/>
		<updated>2024-12-18T12:03:14Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Introduction&lt;br /&gt;
|texte=&lt;br /&gt;
|index=Symboles&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Ponctuation ==&lt;br /&gt;
{{proj_p|&lt;br /&gt;
⦁ Z Notation &lt;br /&gt;
&lt;br /&gt;
⋅ Multiplication dot [https://en.wikipedia.org/wiki/Interpunct#In_mathematics_and_science]&lt;br /&gt;
&lt;br /&gt;
·ˑ·ּ ᛫•‧∘∙●◦⚫⦁⸰⸱⸳・ꞏ･𐄁 [https://en.wikipedia.org/wiki/Interpunct#Similar_symbols]&lt;br /&gt;
&lt;br /&gt;
point de phrase mathématique: {{ms|。}} ou {{ms|◊}}&lt;br /&gt;
&lt;br /&gt;
parce que, cause, si: {{ms|∵}}&lt;br /&gt;
&lt;br /&gt;
par conséquent, donc: {{ms|∴}}&lt;br /&gt;
&lt;br /&gt;
points de suspension: {{ms|…}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Logique ==&lt;br /&gt;
{{proj_p|&lt;br /&gt;
vrai:{{ms|⊤}}&lt;br /&gt;
faux:{{ms|⊥}}&lt;br /&gt;
non:{{ms|¬}}&lt;br /&gt;
et:{{ms|∧}} &lt;br /&gt;
ou:{{ms|∨}}&lt;br /&gt;
ou exclusif:{{ms|⊕}}&lt;br /&gt;
union:{{ms|∪}}&lt;br /&gt;
intersection:{{ms|∩}}&lt;br /&gt;
il existe:{{ms|∃}}&lt;br /&gt;
quelque soit:{{ms|∀}}&lt;br /&gt;
supérieur ou égal:{{ms|≥}}&lt;br /&gt;
inférieur ou égal:{{ms|≤}}&lt;br /&gt;
supérieur:{{ms|&amp;gt;}}&lt;br /&gt;
inférieur:{{ms|&amp;lt;}}&lt;br /&gt;
équivalence:{{ms|⇔}} {{ms|⟺}}&lt;br /&gt;
implique:{{ms|⇐}} {{ms|⟸}} {{ms|⇒}} {{ms|⟹}}&lt;br /&gt;
différent:{{ms|≠}}&lt;br /&gt;
perpendiculaire:{{ms|⊥}}&lt;br /&gt;
définition:{{ms|≝}} {{ms|≜}}&lt;br /&gt;
notation:{{ms|1=&amp;lt;sup style=&amp;quot;font-size:60%;&amp;quot;&amp;gt;not&amp;lt;/sup&amp;gt;≔}} {{ms|1=≕&amp;lt;sup style=&amp;quot;font-size:60%;&amp;quot;&amp;gt;not&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
égal?{{ms|:≟}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Êtres ==&lt;br /&gt;
{{par|{{ms|∞}}: infini&lt;br /&gt;
alef aleph:{{ms|ℵ}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Relations ==&lt;br /&gt;
{{proj_p|&lt;br /&gt;
{{ms|ℛ}} {{ms|ℜ}} {{ms|𝓡}} {{ms|↬}} {{ms|↫}} {{ms|{{mc|{{i|R}}}}}} {{ms|{{mc|{{i|P}}}}}} (utilisation du modèle {{m|mc}} et {{m|i}})  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Angles ==&lt;br /&gt;
{{proj_p|{{ms|∟}}, {{ms|∠}}, {{ms|∡}}, {{ms|∢}}}}&lt;br /&gt;
&lt;br /&gt;
== Ensembles ==&lt;br /&gt;
{{par|&lt;br /&gt;
contient:{{ms|⊃}}&lt;br /&gt;
est inclus:{{ms|⊂}}&lt;br /&gt;
est inclus ou égal:{{ms|⊆}} &lt;br /&gt;
n'est pas inclu:{{ms|⊄}}&lt;br /&gt;
est élément de:{{ms|∈}}&lt;br /&gt;
n'est pas élément :{{ms|∉}}&lt;br /&gt;
contient:{{ms|∋}}&lt;br /&gt;
ensemble:{{ms|&amp;lt;nowiki&amp;gt;{|}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
ensemble vide :{{ms|∅}}&lt;br /&gt;
ensemble des entiers naturels:{{ms|ℕ}}&lt;br /&gt;
ensemble des nombres décimaux:{{ms|𝔻}}&lt;br /&gt;
ensemble des entiers relatifs:{{ms|ℤ&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;}}&lt;br /&gt;
ensemble des nombres rationnels:{{ms|ℚ}}&lt;br /&gt;
ensemble des nombres réels: {{ms|ℝ}} {{ms|ℜ}}&lt;br /&gt;
ensemble des nombres complexes:{{ms|ℂ}}&lt;br /&gt;
Espace de projection ou ensemble des nombres premiers{{ms|ℙ}}&lt;br /&gt;
ensemble des quaternions:{{ms|ℍ}}&lt;br /&gt;
fonction elliptique de Weierstrass:{{ms|℘}}&lt;br /&gt;
partie imaginaire:{{ms|ℑ}}&lt;br /&gt;
}}&lt;br /&gt;
{{par|Ensembles de nombres:&lt;br /&gt;
* ℕ 𝔻 ℤ ℤ&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; ℚ ℝ ℂ ℜ ℑ ℙ &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
{{proj_p|&lt;br /&gt;
description d'une fonction :{{ms|↦}} {{ms|⟻}} {{ms|⟼}} &lt;br /&gt;
réduction des expressions :{{ms|→}} {{ms|⟶}}&lt;br /&gt;
substitution d’une variable par une expression:{{ms|←}} {{ms|⟵}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Opérations ==&lt;br /&gt;
{{proj_p|&lt;br /&gt;
partiel:{{ms|∂}}&lt;br /&gt;
intégration:{{ms|∫}} {{ms|∬}} {{ms|∭}} {{ms|⨌}} {{ms|∮}} {{ms|∯}} {{ms|∰}} &lt;br /&gt;
presque égal:{{ms|≈}} &lt;br /&gt;
delta:{{ms|Δ}}&lt;br /&gt;
delta:{{ms|δ}}&lt;br /&gt;
multiplication:{{ms|×}} {{ms|·}}&lt;br /&gt;
produit scalaire:{{ms|⟨&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;⟩}}&lt;br /&gt;
produit vectoriel:{{ms|⊗}}&lt;br /&gt;
division:{{ms|÷}}&lt;br /&gt;
congruence:{{ms|≡}}&lt;br /&gt;
nabla:{{ms|∇}}&lt;br /&gt;
plus(signe):{{ms|⊕}}&lt;br /&gt;
moins(signe):{{ms|⊖}}&lt;br /&gt;
transposé:{{ms|T}}&lt;br /&gt;
plus ou moins:{{ms|±}}&lt;br /&gt;
produit:{{ms|∏}}&lt;br /&gt;
somme:{{ms|∑}}&lt;br /&gt;
proportionnel:{{ms|∝}}&lt;br /&gt;
racine:{{ms|√}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Lettres grègues ==&lt;br /&gt;
{{par|&lt;br /&gt;
alpha:{{ms|α}} &lt;br /&gt;
béta:{{ms|β}}&lt;br /&gt;
chi:{{ms|χ}}&lt;br /&gt;
epsilon:{{ms|ε}}&lt;br /&gt;
eta:{{ms|η}}&lt;br /&gt;
eth:{{ms|ð}}&lt;br /&gt;
gamma:{{ms|Γ}}&lt;br /&gt;
iota:{{ms|ι}}&lt;br /&gt;
lambda:{{ms|λ}}&lt;br /&gt;
lambda:{{ms|Λ}}&lt;br /&gt;
mu:{{ms|μ}}&lt;br /&gt;
omega:{{ms|ω}}&lt;br /&gt;
omega:{{ms|Ω}}&lt;br /&gt;
phi:{{ms|φ}}&lt;br /&gt;
phi:{{ms|Φ}}&lt;br /&gt;
pi:{{ms|π}}&lt;br /&gt;
pi:{{ms|Π}}&lt;br /&gt;
pi:{{ms|ϖ}}&lt;br /&gt;
psi:{{ms|ψ}}	&lt;br /&gt;
psi:{{ms|Ψ}}&lt;br /&gt;
rho:{{ms|ρ}}&lt;br /&gt;
sigma:{{ms|Σ}}&lt;br /&gt;
sigma:{{ms|σ}}&lt;br /&gt;
final sigma:{{ms|ς}}&lt;br /&gt;
tau:{{ms|τ}}&lt;br /&gt;
theta:{{ms|θ}}&lt;br /&gt;
theta:{{ms|Θ}}&lt;br /&gt;
upsilon:{{ms|υ}}&lt;br /&gt;
xi:{{ms|ξ}}&lt;br /&gt;
xi:{{ms|Ξ}}&lt;br /&gt;
zeta:{{ms|ζ}}&lt;br /&gt;
}}&lt;br /&gt;
{{par|&lt;br /&gt;
* {{ms|α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω}}&lt;br /&gt;
* {{ms|Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω}}&lt;br /&gt;
* {{ms|Α α}} alpha, {{ms|Β β}} bêta, {{ms|Γ γ}} gamma, {{ms|Δ δ}} delta, {{ms|Ε ε}} epsilon, {{ms|Ζ ζ}} dzeta, {{ms|Η η}} êta, {{ms|Θ θ}} thêta, {{ms|Ι ι}} iota, {{ms|Κ κ}} kappa, {{ms|Λ λ}} lambda, {{ms|Μ μ}} mu, {{ms|Ν ν}} nu {{ms|Ξ ξ}} xi,, {{ms|Ο ο}} omicron, {{ms|Π π}} pi, {{ms|Ρ ρ}} rau, {{ms|Σ σ}} sigma, {{ms|Τ τ}} tau, {{ms|Υ υ}} upsilon, {{ms|Φ φ}} phi, {{ms|Χ χ}} khi, {{ms|Ψ ψ}} psi, {{ms|Ω ω}} oméga&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Autres sources ==&lt;br /&gt;
=== www.uni-math.gwdg.de ===&lt;br /&gt;
{{parW|1=&lt;br /&gt;
* http://www.uni-math.gwdg.de/laurent/unicode.html&lt;br /&gt;
}}&lt;br /&gt;
==== Latin-1; Currency symbols ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ&lt;br /&gt;
&lt;br /&gt;
€&lt;br /&gt;
}}&lt;br /&gt;
==== Emoticons ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
😀 😁 😂 😃 😄 😅 😆 😇 😈 😉 😊 😋 😌 😍 😎 😏 😐 😑 😒 😓 😔 😕 😖 😗 😘 😙 😚 😛 😜 😝 😞 😟 😠 😡 😢 😣 😤 😥 😦 😧 😨 😩 😪 😫 😬 😭 😮 😯 😰 😱 😲 😳 😴 😵 😶 😷 😸 😹 😺 😻 😼 😽 😾 😿 🙀 🙁 🙂 🙅 🙆 🙇 🙈 🙉 🙊 🙋 🙌 🙍 🙎 🙏&lt;br /&gt;
}}&lt;br /&gt;
==== Letterlike symbols ====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
℀ ℁ ℂ ℃ ℄ ℅ ℆ ℇ ℈ ℉ ℊ ℋ ℌ ℍ ℎ ℏ ℐ ℑ ℒ ℓ ℔ ℕ № ℗ ℘ ℙ ℚ ℛ ℜ ℝ ℞ ℟ ℠ ℡ ™ ℣ ℤ ℥ Ω ℧ ℨ ℩ K Å ℬ ℭ ℮ ℯ ℰ ℱ Ⅎ ℳ ℴ ℵ ℶ ℷ ℸ ℹ ℺ ℻ ℼ ℽ ℾ ℿ ⅀ ⅁ ⅂ ⅃ ⅄ ⅅ ⅆ ⅇ ⅈ ⅉ ⅊ ⅋ ⅌ ⅍ ⅎ ⅏&lt;br /&gt;
}}&lt;br /&gt;
==== Mathematical symbols ====&lt;br /&gt;
===== Arrows =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
← ↑ → ↓ ↔ ↕ ↖ ↗ ↘ ↙ ↚ ↛ ↜ ↝ ↞ ↟ ↠ ↡ ↢ ↣ ⇤ ⤒ ⤓ ⇥ ↤ ↥ ↧ ↦ ↨ ↩ ↪ ↫ ↬ ↭ ↮ ↯ ↰ ↱ ↲ ↳ ↴ ↵ ↶ ↷ ↸ ↹ ↺ ↻ ↼ ↽ ↾ ↿ ⇀ ⇁ ⇂ ⇃ ⇄ ⇅ ⇆ ⇇ ⇈ ⇉ ⇊ ⇋ ⇌ ⇍ ⇎ ⇏ ⇐ ⇑ ⇒ ⇓ ⇔ ⇕ ⇖ ⇗ ⇘ ⇙ ⇚ ⇛ ⇜ ⇝ ⇞ ⇟ ⇠ ⇡ ⇢ ⇣ ⇤ ⇥ ⇦ ⇧ ⇨ ⇩ ⇪ ⇫ ⇬ ⇭ ⇮ ⇯ ⇰ ⇱ ⇲ ⇳ ⇴ ⇵ ⇶ ⇷ ⇸ ⇹ ⇺ ⇻ ⇼ ⇽ ⇾ ⇿ &lt;br /&gt;
⬀ ⬁ ⬂ ⬃ ⬄ ⬅ ⬆ ⬇ ⬈ ⬉ ⬊ ⬋ ⬌ ⬍ ⬎ ⬏ ⬐ ⬑ ⬒ ⬓ ⬔ ⬕ ⬖ ⬗ ⬘ ⬙ ⬚ ⬛ ⬜ ⬝ ⬞ ⬟ ⬠ ⬡ ⬢ ⬣ ⬤ ⬥ ⬦ ⬧ ⬨ ⬩ ⬪ ⬫ ⬬ ⬭ ⬮ ⬯ ⬰ ⬱ ⬲ ⬳ ⬴ ⬵ ⬶ ⬷ ⬸ ⬹ ⬺ ⬻ ⬼ ⬽ ⬾ ⬿ ⭀ ⭁ ⭂ ⭃ ⭄ ⭅ ⭆ ⭇ ⭈ ⭉ ⭊ ⭋ ⭌ ⭍ ⭎ ⭏ ⭐ ⭑ ⭒ ⭓ ⭔ ⭕ ⭖ ⭗ ⭘ ⭙ ⭚ ⭛ ⭜ ⭝ ⭞ ⭟ ⭠ ⭡ ⭢ ⭣ ⭤ ⭥ ⭦ ⭧ ⭨ ⭩ ⭪ ⭫ ⭬ ⭭ ⭮ ⭯ ⭰ ⭱ ⭲ ⭳ ⭶ ⭷ ⭸ ⭹ ⭺ ⭻ ⭼ ⭽ ⭾ ⭿ ⮀ ⮁ ⮂ ⮃ ⮄ ⮅ ⮆ ⮇ ⮈ ⮉ ⮊ ⮋ ⮌ ⮍ ⮎ ⮏ ⮐ ⮑ ⮒ ⮓ ⮔ ⮕ ⮘ ⮙ ⮚ ⮛ ⮜ ⮝ ⮞ ⮟ ⮠ ⮡ ⮢ ⮣ ⮤ ⮥ ⮦ ⮧ ⮨ ⮩ ↖ ⮫ ⮬ ⮭ ⮮ ⮯ ⮰ ⮱ ⮲ ⮳ ⮴ ⮵ ⮶ ⮷ ⇪ ⮹ ⮽ ⮾ ⮿ ⯀ ⯁ ⯂ ⯃ ⯄ ⯅ ⯆ ⯇ ⯈ ⯊ ⯋ ⯌ ⯍ ⯎ ⯏ ⯐ ⯑&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Mathematical alphanumeric symbols =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
𝐀 𝐁 𝐂 𝐃 𝐄 𝐅 𝐆 𝐇 𝐈 𝐉 𝐊 𝐋 𝐌 𝐍 𝐎 𝐏 𝐐 𝐑 𝐒 𝐓 𝐔 𝐕 𝐖 𝐗 𝐘 𝐙 𝐚 𝐛 𝐜 𝐝 𝐞 𝐟 𝐠 𝐡 𝐢 𝐣 𝐤 𝐥 𝐦 𝐧 𝐨 𝐩 𝐪 𝐫 𝐬 𝐭 𝐮 𝐯 𝐰 𝐱 𝐲 𝐳&lt;br /&gt;
𝐴 𝐵 𝐶 𝐷 𝐸 𝐹 𝐺 𝐻 𝐼 𝐽 𝐾 𝐿 𝑀 𝑁 𝑂 𝑃 𝑄 𝑅 𝑆 𝑇 𝑈 𝑉 𝑊 𝑋 𝑌 𝑍 𝑎 𝑏 𝑐 𝑑 𝑒 𝑓 𝑔 𝑖 𝑗 𝑘 𝑙 𝑚 𝑛 𝑜 𝑝 𝑞 𝑟 𝑠 𝑡 𝑢 𝑣 𝑤 𝑥 𝑦 𝑧&lt;br /&gt;
𝑨 𝑩 𝑪 𝑫 𝑬 𝑭 𝑮 𝑯 𝑰 𝑱 𝑲 𝑳 𝑴 𝑵 𝑶 𝑷 𝑸 𝑹 𝑺 𝑻 𝑼 𝑽 𝑾 𝑿 𝒀 𝒁 𝒂 𝒃 𝒄 𝒅 𝒆 𝒇 𝒈 𝒉 𝒊 𝒋 𝒌 𝒍 𝒎 𝒏 𝒐 𝒑 𝒒 𝒓 𝒔 𝒕 𝒖 𝒗 𝒘 𝒙 𝒚 𝒛&lt;br /&gt;
𝒜 𝒞 𝒟 𝒢 𝒥 𝒦 𝒩 𝒪 𝒫 𝒬 𝒮 𝒯 𝒰 𝒱 𝒲 𝒳 𝒴 𝒵 𝒶 𝒷 𝒸 𝒹 𝒻 𝒽 𝒾 𝒿 𝓀 𝓁 𝓂 𝓃 𝓅 𝓆 𝓇 𝓈 𝓉 𝓊 𝓋 𝓌 𝓍 𝓎 𝓏&lt;br /&gt;
𝓐 𝓑 𝓒 𝓓 𝓔 𝓕 𝓖 𝓗 𝓘 𝓙 𝓚 𝓛 𝓜 𝓝 𝓞 𝓟 𝓠 𝓡 𝓢 𝓣 𝓤 𝓥 𝓦 𝓧 𝓨 𝓩 𝓪 𝓫 𝓬 𝓭 𝓮 𝓯 𝓰 𝓱 𝓲 𝓳 𝓴 𝓵 𝓶 𝓷 𝓸 𝓹 𝓺 𝓻 𝓼 𝓽 𝓾 𝓿 𝔀 𝔁 𝔂 𝔃&lt;br /&gt;
𝔄 𝔅 𝔇 𝔈 𝔉 𝔊 𝔍 𝔎 𝔏 𝔐 𝔑 𝔒 𝔓 𝔔 𝔖 𝔗 𝔘 𝔙 𝔚 𝔛 𝔜 𝔞 𝔟 𝔠 𝔡 𝔢 𝔣 𝔤 𝔥 𝔦 𝔧 𝔨 𝔩 𝔪 𝔫 𝔬 𝔭 𝔮 𝔯 𝔰 𝔱 𝔲 𝔳 𝔴 𝔵 𝔶 𝔷&lt;br /&gt;
𝔸 𝔹 𝔻 𝔼 𝔽 𝔾 𝕀 𝕁 𝕂 𝕃 𝕄 𝕆 𝕊 𝕋 𝕌 𝕍 𝕎 𝕏 𝕐 𝕒 𝕓 𝕔 𝕕 𝕖 𝕗 𝕘 𝕙 𝕚 𝕛 𝕜 𝕝 𝕞 𝕟 𝕠 𝕡 𝕢 𝕣 𝕤 𝕥 𝕦 𝕧 𝕨 𝕩 𝕪 𝕫&lt;br /&gt;
𝕬 𝕭 𝕮 𝕯 𝕰 𝕱 𝕲 𝕳 𝕴 𝕵 𝕶 𝕷 𝕸 𝕹 𝕺 𝕻 𝕼 𝕽 𝕾 𝕿 𝖀 𝖁 𝖂 𝖃 𝖄 𝖅 𝖆 𝖇 𝖈 𝖉 𝖊 𝖋 𝖌 𝖍 𝖎 𝖏 𝖐 𝖑 𝖒 𝖓 𝖔 𝖕 𝖖 𝖗 𝖘 𝖙 𝖚 𝖛 𝖜 𝖝 𝖞 𝖟&lt;br /&gt;
𝖠 𝖡 𝖢 𝖣 𝖤 𝖥 𝖦 𝖧 𝖨 𝖩 𝖪 𝖫 𝖬 𝖭 𝖮 𝖯 𝖰 𝖱 𝖲 𝖳 𝖴 𝖵 𝖶 𝖷 𝖸 𝖹 𝖺 𝖻 𝖼 𝖽 𝖾 𝖿 𝗀 𝗁 𝗂 𝗃 𝗄 𝗅 𝗆 𝗇 𝗈 𝗉 𝗊 𝗋 𝗌 𝗍 𝗎 𝗏 𝗐 𝗑 𝗒 𝗓&lt;br /&gt;
𝗔 𝗕 𝗖 𝗗 𝗘 𝗙 𝗚 𝗛 𝗜 𝗝 𝗞 𝗟 𝗠 𝗡 𝗢 𝗣 𝗤 𝗥 𝗦 𝗧 𝗨 𝗩 𝗪 𝗫 𝗬 𝗭 𝗮 𝗯 𝗰 𝗱 𝗲 𝗳 𝗴 𝗵 𝗶 𝗷 𝗸 𝗹 𝗺 𝗻 𝗼 𝗽 𝗾 𝗿 𝘀 𝘁 𝘂 𝘃 𝘄 𝘅 𝘆 𝘇&lt;br /&gt;
𝘈 𝘉 𝘊 𝘋 𝘌 𝘍 𝘎 𝘏 𝘐 𝘑 𝘒 𝘓 𝘔 𝘕 𝘖 𝘗 𝘘 𝘙 𝘚 𝘛 𝘜 𝘝 𝘞 𝘟 𝘠 𝘡 𝘢 𝘣 𝘤 𝘥 𝘦 𝘧 𝘨 𝘩 𝘪 𝘫 𝘬 𝘭 𝘮 𝘯 𝘰 𝘱 𝘲 𝘳 𝘴 𝘵 𝘶 𝘷 𝘸 𝘹 𝘺 𝘻&lt;br /&gt;
𝘼 𝘽 𝘾 𝘿 𝙀 𝙁 𝙂 𝙃 𝙄 𝙅 𝙆 𝙇 𝙈 𝙉 𝙊 𝙋 𝙌 𝙍 𝙎 𝙏 𝙐 𝙑 𝙒 𝙓 𝙔 𝙕 𝙖 𝙗 𝙘 𝙙 𝙚 𝙛 𝙜 𝙝 𝙞 𝙟 𝙠 𝙡 𝙢 𝙣 𝙤 𝙥 𝙦 𝙧 𝙨 𝙩 𝙪 𝙫 𝙬 𝙭 𝙮 𝙯&lt;br /&gt;
𝙰 𝙱 𝙲 𝙳 𝙴 𝙵 𝙶 𝙷 𝙸 𝙹 𝙺 𝙻 𝙼 𝙽 𝙾 𝙿 𝚀 𝚁 𝚂 𝚃 𝚄 𝚅 𝚆 𝚇 𝚈 𝚉 𝚊 𝚋 𝚌 𝚍 𝚎 𝚏 𝚐 𝚑 𝚒 𝚓 𝚔 𝚕 𝚖 𝚗 𝚘 𝚙 𝚚 𝚛 𝚜 𝚝 𝚞 𝚟 𝚠 𝚡 𝚢 𝚣 𝚤 𝚥&lt;br /&gt;
𝚨 𝚩 𝚪 𝚫 𝚬 𝚭 𝚮 𝚯 𝚰 𝚱 𝚲 𝚳 𝚴 𝚵 𝚶 𝚷 𝚸 𝚹 𝚺 𝚻 𝚼 𝚽 𝚾 𝚿 𝛀 𝛁 𝛂 𝛃 𝛄 𝛅 𝛆 𝛇 𝛈 𝛉 𝛊 𝛋 𝛌 𝛍 𝛎 𝛏 𝛐 𝛑 𝛒 𝛓 𝛔 𝛕 𝛖 𝛗 𝛘 𝛙 𝛚 𝛛 𝛜 𝛝 𝛞 𝛟 𝛠 𝛡&lt;br /&gt;
𝛢 𝛣 𝛤 𝛥 𝛦 𝛧 𝛨 𝛩 𝛪 𝛫 𝛬 𝛭 𝛮 𝛯 𝛰 𝛱 𝛲 𝛳 𝛴 𝛵 𝛶 𝛷 𝛸 𝛹 𝛺 𝛻 𝛼 𝛽 𝛾 𝛿 𝜀 𝜁 𝜂 𝜃 𝜄 𝜅 𝜆 𝜇 𝜈 𝜉 𝜊 𝜋 𝜌 𝜍 𝜎 𝜏 𝜐 𝜑 𝜒 𝜓 𝜔 𝜕 𝜖 𝜗 𝜘 𝜙 𝜚 𝜛&lt;br /&gt;
𝜜 𝜝 𝜞 𝜟 𝜠 𝜡 𝜢 𝜣 𝜤 𝜥 𝜦 𝜧 𝜨 𝜩 𝜪 𝜫 𝜬 𝜭 𝜮 𝜯 𝜰 𝜱 𝜲 𝜳 𝜴 𝜵 𝜶 𝜷 𝜸 𝜹 𝜺 𝜻 𝜼 𝜽 𝜾 𝜿 𝝀 𝝁 𝝂 𝝃 𝝄 𝝅 𝝆 𝝇 𝝈 𝝉 𝝊 𝝋 𝝌 𝝍 𝝎 𝝏 𝝐 𝝑 𝝒 𝝓 𝝔 𝝕&lt;br /&gt;
𝝖 𝝗 𝝘 𝝙 𝝚 𝝛 𝝜 𝝝 𝝞 𝝟 𝝠 𝝡 𝝢 𝝣 𝝤 𝝥 𝝦 𝝧 𝝨 𝝩 𝝪 𝝫 𝝬 𝝭 𝝮 𝝯 𝝰 𝝱 𝝲 𝝳 𝝴 𝝵 𝝶 𝝷 𝝸 𝝹 𝝺 𝝻 𝝼 𝝽 𝝾 𝝿 𝞀 𝞁 𝞂 𝞃 𝞄 𝞅 𝞆 𝞇 𝞈 𝞉 𝞊 𝞋 𝞌 𝞍 𝞎 𝞏&lt;br /&gt;
𝞐 𝞑 𝞒 𝞓 𝞔 𝞕 𝞖 𝞗 𝞘 𝞙 𝞚 𝞛 𝞜 𝞝 𝞞 𝞟 𝞠 𝞡 𝞢 𝞣 𝞤 𝞥 𝞦 𝞧 𝞨 𝞩 𝞪 𝞫 𝞬 𝞭 𝞮 𝞯 𝞰 𝞱 𝞲 𝞳 𝞴 𝞵 𝞶 𝞷 𝞸 𝞹 𝞺 𝞻 𝞼 𝞽 𝞾 𝞿 𝟀 𝟁 𝟂 𝟃 𝟄 𝟅 𝟆 𝟇 𝟈 𝟉 𝟊 𝟋&lt;br /&gt;
𝟎 𝟏 𝟐 𝟑 𝟒 𝟓 𝟔 𝟕 𝟖 𝟗 𝟘 𝟙 𝟚 𝟛 𝟜 𝟝 𝟞 𝟟 𝟠 𝟡 𝟢 𝟣 𝟤 𝟥 𝟦 𝟧 𝟨 𝟩 𝟪 𝟫 𝟬 𝟭 𝟮 𝟯 𝟰 𝟱 𝟲 𝟳 𝟴 𝟵 𝟶 𝟷 𝟸 𝟹 𝟺 𝟻 𝟼 𝟽 𝟾 𝟿&lt;br /&gt;
}}&lt;br /&gt;
===== Mathematical operators =====&lt;br /&gt;
{{parW|1=&lt;br /&gt;
∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏ ∐ ∑ − ∓ ∔ ∕ ∖ ∗ ∘ ∙ √ ∛ ∜ ∝ ∞ ∟ ∠ ∡ ∢ ∣ ∤ ∥ ∦ ∧ ∨ ∩ ∪ ∫ ∬ ∭ ∮ ∯ ∰ ∱ ∲ ∳ ∴ ∵ ∶ ∷ ∸ ∹ ∺ ∻ ∼ ∽ ∾ ∿ ≀ ≁ ≂ ≃ ≄ ≅ ≆ ≇ ≈ ≉ ≊ ≋ ≌ ≍ ≎ ≏ ≐ ≑ ≒ ≓ ≔ ≕ ≖ ≗ ≘ ≙ ≚ ≛ ≜ ≝ ≞ ≟ ≠ ≡ ≢ ≣ ≤ ≥ ≦ ≧ ≨ ≩ ≪ ≫ ≬ ≭ ≮ ≯ ≰ ≱ ≲ ≳ ≴ ≵ ≶ ≷ ≸ ≹ ≺ ≻ ≼ ≽ ≾ ≿ ⊀ ⊁ ⊂ ⊃ ⊄ ⊅ ⊆ ⊇ ⊈ ⊉ ⊊ ⊋ ⊌ ⊍ ⊎ ⊏ ⊐ ⊑ ⊒ ⊓ ⊔ ⊕ ⊖ ⊗ ⊘ ⊙ ⊚ ⊛ ⊜ ⊝ ⊞ ⊟ ⊠ ⊡ ⊢ ⊣ ⊤ ⊥ ⊦ ⊧ ⊨ ⊩ ⊪ ⊫ ⊬ ⊭ ⊮ ⊯ ⊰ ⊱ ⊲ ⊳ ⊴ ⊵ ⊶ ⊷ ⊸ ⊹ ⊺ ⊻ ⊼ ⊽ ⊾ ⊿ ⋀ ⋁ ⋂ ⋃ ⋄ ⋅ ⋆ ⋇ ⋈ ⋉ ⋊ ⋋ ⋌ ⋍ ⋎ ⋏ ⋐ ⋑ ⋒ ⋓ ⋔ ⋕ ⋖ ⋗ ⋘ ⋙ ⋚ ⋛ ⋜ ⋝ ⋞ ⋟ ⋠ ⋡ ⋢ ⋣ ⋤ ⋥ ⋦ ⋧ ⋨ ⋩ ⋪ ⋫ ⋬ ⋭ ⋮ ⋯ ⋰ ⋱ ⋲ ⋳ ⋴ ⋵ ⋶ ⋷ ⋸ ⋹ ⋺ ⋻ ⋼ ⋽ ⋾ ⋿&lt;br /&gt;
&lt;br /&gt;
⨀ ⨁ ⨂ ⨃ ⨄ ⨅ ⨆ ⨇ ⨈ ⨉ ⨊ ⨋ ⨌ ⨍ ⨎ ⨏ ⨐ ⨑ ⨒ ⨓ ⨔ ⨕ ⨖ ⨗ ⨘ ⨙ ⨚ ⨛ ⨜ ⨝ ⨞ ⨟ ⨠ ⨡ ⨢ ⨣ ⨤ ⨥ ⨦ ⨧ ⨨ ⨩ ⨪ ⨫ ⨬ ⨭ ⨮ ⨯ ⨰ ⨱ ⨲ ⨳ ⨴ ⨵ ⨶ ⨷ ⨸ ⨹ ⨺ ⨻ ⨼ ⨽ ⨾ ⨿ ⩀ ⩁ ⩂ ⩃ ⩄ ⩅ ⩆ ⩇ ⩈ ⩉ ⩊ ⩋ ⩌ ⩍ ⩎ ⩏ ⩐ ⩑ ⩒ ⩓ ⩔ ⩕ ⩖ ⩗ ⩘ ⩙ ⩚ ⩛ ⩜ ⩝ ⩞ ⩟ ⩠ ⩡ ⩢ ⩣ ⩤ ⩥ ⩦ ⩧ ⩨ ⩩ ⩪ ⩫ ⩬ ⩭ ⩮ ⩯ ⩰ ⩱ ⩲ ⩳ ⩴ ⩵ ⩶ ⩷ ⩸ ⩹ ⩺ ⩻ ⩼ ⩽ ⩾ ⩿ ⪀ ⪁ ⪂ ⪃ ⪄ ⪅ ⪆ ⪇ ⪈ ⪉ ⪊ ⪋ ⪌ ⪍ ⪎ ⪏ ⪐ ⪑ ⪒ ⪓ ⪔ ⪕ ⪖ ⪗ ⪘ ⪙ ⪚ ⪛ ⪜ ⪝ ⪞ ⪟ ⪠ ⪡ ⪢ ⪣ ⪤ ⪥ ⪦ ⪧ ⪨ ⪩ ⪪ ⪫ ⪬ ⪭ ⪮ ⪯ ⪰ ⪱ ⪲ ⪳ ⪴ ⪵ ⪶ ⪷ ⪸ ⪹ ⪺ ⪻ ⪼ ⪽ ⪾ ⪿ ⫀ ⫁ ⫂ ⫃ ⫄ ⫅ ⫆ ⫇ ⫈ ⫉ ⫊ ⫋ ⫌ ⫍ ⫎ ⫏ ⫐ ⫑ ⫒ ⫓ ⫔ ⫕ ⫖ ⫗ ⫘ ⫙ ⫚ ⫛ ⫝̸ ⫝ ⫞ ⫟ ⫠ ⫡ ⫢ ⫣ ⫤ ⫥ ⫦ ⫧ ⫨ ⫩ ⫪ ⫫ ⫬ ⫭ ⫮ ⫯ ⫰ ⫱ ⫲ ⫳ ⫴ ⫵ ⫶ ⫷ ⫸ ⫹ ⫺ ⫻ ⫼ ⫽ ⫾ ⫿ &lt;br /&gt;
}}&lt;br /&gt;
== Liens ==&lt;br /&gt;
* ★★★ [http://www.unicode.org/reports/tr25 UNICODE SUPPORT FOR MATHEMATICS - Unicode® Technical Report #25] Lire {{dq|2.4 Locating Mathematical Characters }}&lt;br /&gt;
** [http://www.unicode.org/charts/PDF/U0000.pdf C0 Controls and Basic Latin&lt;br /&gt;
Range: 0000–007F]&lt;br /&gt;
* Z notation dot ⦁ [https://en.wikipedia.org/wiki/Interpunct] (est un séparateur de texte)&lt;br /&gt;
*: { déclaration | contrainte ⦁ expression }&lt;br /&gt;
*: {x : NAT | pair (x) ⦁ x * x} est l'ensemble des carrés des nombres pairs. &lt;br /&gt;
*: http://fr.wikipedia.org/wiki/Notation_Z&lt;br /&gt;
* sign ∵ : if, because (début d'hypothèse, si) &lt;br /&gt;
: sign ∴ ஃ ⁂ : then,  Therefore (par conséquent, donc, alors)  &lt;br /&gt;
: ∵ All gods are immortals. ∵ Zeus is a god. ∴ Zeus is an immortal.&lt;br /&gt;
: x + 1 = 10 ∴ x = 9&lt;br /&gt;
: [http://en.wikipedia.org/wiki/Therefore_sign en.wikipedia.org]&lt;br /&gt;
* http://codepoints.net/supplemental_mathematical_operators&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_mathematical_symbols en.wikipedia.org List of mathematical symbols]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_logic_symbols List of logic symbols]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Lucida Lucida]&lt;br /&gt;
* [http://fr.wikipedia.org/wiki/Table_des_symboles_math%C3%A9matiques Table des symboles mathématiques]&lt;br /&gt;
* [http://fr.wikipedia.org/wiki/Th%C3%A9orie_des_ensembles Théorie des ensembles]&lt;br /&gt;
* [http://fr.wikipedia.org/wiki/Th%C3%A9orie_des_ensembles_de_von_Neumann%E2%80%93Bernays%E2%80%93G%C3%B6del Théorie des ensembles de von Neumann–Bernays–Gödel]&lt;br /&gt;
* [http://tlt.its.psu.edu/suggestions/international/bylanguage/mathchart.html Unicode Entity Codes for Math ]&lt;br /&gt;
* [http://www.cs.tut.fi/~jkorpela/html/guide/entities.html Table of character entity references in HTML 4]&lt;br /&gt;
* [http://www.math93.com/symboles.htm Origine et histoire des symboles mathématiques]&lt;br /&gt;
* [ftp://ftp.ams.org/ams/doc/amsmath/short-math-guide.pdf Short Math Guide for LATEX]&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=MediaWiki:Timeless.css&amp;diff=4848</id>
		<title>MediaWiki:Timeless.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=MediaWiki:Timeless.css&amp;diff=4848"/>
		<updated>2024-12-18T12:03:13Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Tout CSS placé ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Timeless */&lt;br /&gt;
/* CSS placed here will affect users of the Timeless skin */&lt;br /&gt;
@import url(https://tools-static.wmflabs.org/fontcdn/css?family=Merriweather);&lt;br /&gt;
html {&lt;br /&gt;
    background: rgb(0,0,0) !important;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    filter: brightness(100%) contrast(100%) grayscale(0%) !important;&lt;br /&gt;
    -webkit-filter: brightness(100%) contrast(100%) grayscale(0%) !important;&lt;br /&gt;
    overflow-x: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body, .wikitable {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    color: #ccccff;&lt;br /&gt;
    font-family: 'Merriweather', serif;&lt;br /&gt;
}&lt;br /&gt;
.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
    background-color:#888;&lt;br /&gt;
    color: #ccccff;&lt;br /&gt;
    text-align:center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
h1 {&lt;br /&gt;
    color: white;&lt;br /&gt;
    text-shadow: 1px 1px 1px #000;&lt;br /&gt;
    font-size: 40px !important;&lt;br /&gt;
}&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
    color: #6699ff;&lt;br /&gt;
    font-family: 'Merriweather', serif;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
#personal .dropdown b {&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
b, strong {&lt;br /&gt;
    text-shadow: 1px 1px 1px #000;&lt;br /&gt;
}&lt;br /&gt;
#f-list {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
div.editOptions {&lt;br /&gt;
    border: #222;&lt;br /&gt;
    background: #111;&lt;br /&gt;
}&lt;br /&gt;
#mw-header-nav-hack {&lt;br /&gt;
    border-top: solid 2px #333;&lt;br /&gt;
    background: #111;&lt;br /&gt;
}&lt;br /&gt;
#mw-site-navigation .sidebar-inner {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: 0;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width: 851px) {&lt;br /&gt;
#p-logo-text a {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    right: 75vw;&lt;br /&gt;
    color: #aaaadd; /* ATMODIF */&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1099px) and (min-width: 851px) {&lt;br /&gt;
#p-logo-text a.long {&lt;br /&gt;
    padding-left: 7px;&lt;br /&gt;
    float: left;&lt;br /&gt;
    font-size: 23px !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1099px) and (min-width: 851px) {&lt;br /&gt;
#mw-related-navigation .sidebar-inner {&lt;br /&gt;
    background: #111 !important;&lt;br /&gt;
    border: solid #222;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1099px) and (min-width: 851px) {&lt;br /&gt;
#mw-site-navigation .sidebar-inner {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: solid #222;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
#mw-site-navigation .sidebar-chunk {&lt;br /&gt;
    border: outset #222;&lt;br /&gt;
    background: #111;&lt;br /&gt;
    /* box-shadow: 2px 2px 1px rgba(0,0,0,0.5); */&lt;br /&gt;
    box-shadow: none ;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 851px) {&lt;br /&gt;
#mw-site-navigation .sidebar-chunk {&lt;br /&gt;
    /* padding: 0 15px 5px 20px; */&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1099px) and (min-width: 851px) {&lt;br /&gt;
#mw-site-navigation .sidebar-inner {&lt;br /&gt;
    background: #111 !important;&lt;br /&gt;
    border: solid #222 !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output  {&lt;br /&gt;
    color: #C4C0C8 ; /* org : #ff9900; text default color AT TODO */&lt;br /&gt;
}&lt;br /&gt;
#searchInput {&lt;br /&gt;
    padding: 0.2em 4.5em 0.2em 2em !important;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
}&lt;br /&gt;
#searchInput-container {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    /* height: 35px;  ATMODIF */&lt;br /&gt;
}&lt;br /&gt;
#simpleSearch {&lt;br /&gt;
    border: inset 1px #000;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    background: #111;&lt;br /&gt;
    /* height: 35px;  ATMODIF */&lt;br /&gt;
    /* width: 48vw;  ATMODIF */&lt;br /&gt;
    width: 210mm; /* ATMODIF */&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
    top: 7px;&lt;br /&gt;
}&lt;br /&gt;
#user-tools {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    right: 86px;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width: 851px) {&lt;br /&gt;
#user-tools {&lt;br /&gt;
    left: 74vw;&lt;br /&gt;
    top: 5px;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
.mw-notification {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: #222;&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border-radius: 5px;&lt;br /&gt;
    color: #999;&lt;br /&gt;
    width: 200px;&lt;br /&gt;
}&lt;br /&gt;
.postedit-container {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    padding: 15px 0 15px 15px;&lt;br /&gt;
    text-align: right;&lt;br /&gt;
}&lt;br /&gt;
.postedit-icon {&lt;br /&gt;
    margin: auto;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-wiki-logo {&lt;br /&gt;
    background-size: contain;&lt;br /&gt;
}&lt;br /&gt;
#mw-header-container {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    padding : 0em; /* ATMODIF */&lt;br /&gt;
    color: #ccccff; /* ATMODIF */&lt;br /&gt;
}&lt;br /&gt;
#mw-header {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    position: static;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#menus-cover {&lt;br /&gt;
    background: #000;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#personal h2 {&lt;br /&gt;
    display: none;searchInput-container&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
#mw-content-container {&lt;br /&gt;
    background: #000;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#mw-content-block {&lt;br /&gt;
    background: #000;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#site-tools h2 {&lt;br /&gt;
    right: 3em;&lt;br /&gt;
    top: 0.9em;&lt;br /&gt;
    padding-bottom: 5px;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#p-logo-text a.long {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    top: 7px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 40px !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width: 851px) {&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    width: 29em;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (min-width: 851px) {&lt;br /&gt;
#personal h2:after {&lt;br /&gt;
    width: 1px;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    position: static;&lt;br /&gt;
    left: 0 !important;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    margin-left: 0;&lt;br /&gt;
    margin-right: 0;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    top: 3.3em;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
 @media only screen and (min-width: 992px) and (max-width:768px) {&lt;br /&gt;
 #p-logo-text {&lt;br /&gt;
 right:74vw;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media only screen and (min-width: 900px) and (max-width:100px) {&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    right: 74vw;&lt;br /&gt;
    top: 3em;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 900px) and (min-width: 100px) {&lt;br /&gt;
#p-logo-text a.long {&lt;br /&gt;
    font-size: 43px !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1700px) and (min-width: 800px) {&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    left: 12px !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1700px) and (mix: 851px) {&lt;br /&gt;
#mw-site-navigation {&lt;br /&gt;
    background: #000;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-page-header-links li.selected a {&lt;br /&gt;
    color: #cccc00;&lt;br /&gt;
}&lt;br /&gt;
#mw-related-navigation .sidebar-chunk {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: outset #222;&lt;br /&gt;
    /* box-shadow: 2px 2px 1px rgba(0,0,0,0.5); */&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 1099px) and (min-width: 851px) {&lt;br /&gt;
#mw-related-navigation .sidebar-chunk {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: outset #222;&lt;br /&gt;
    /* box-shadow: 2px 2px 1px rgba(0,0,0,0.5); */&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    padding: 0 15px 5px 20px;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
.color-middle-container, .ts-inner {&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-logo-text {&lt;br /&gt;
    left: 120px;&lt;br /&gt;
}&lt;br /&gt;
#p-logo-text a.long {&lt;br /&gt;
    padding-top: 5px;&lt;br /&gt;
    padding-left: 6px;&lt;br /&gt;
    font-size: 30px;&lt;br /&gt;
    text-shadow: 1px 1px 1px #222;&lt;br /&gt;
}&lt;br /&gt;
#p-search {&lt;br /&gt;
    width: 70em;&lt;br /&gt;
    padding-right: 33px;&lt;br /&gt;
}&lt;br /&gt;
#personal .dropdown h3 {&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
}&lt;br /&gt;
#personal h2 {&lt;br /&gt;
    text-shadow: 2px 2px 0 #111;&lt;br /&gt;
    padding-top: 7px;&lt;br /&gt;
    font-size: 24px;&lt;br /&gt;
    text-transform: lowercase;&lt;br /&gt;
}&lt;br /&gt;
#personal .dropdown {&lt;br /&gt;
    background: #222!important;&lt;br /&gt;
    border: solid #000;&lt;br /&gt;
}&lt;br /&gt;
.codeEditor-status {&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
    text-shadow: 1px 2px #111;&lt;br /&gt;
}&lt;br /&gt;
#iframeframe {&lt;br /&gt;
    height: 700px;&lt;br /&gt;
}&lt;br /&gt;
#wpSave {&lt;br /&gt;
    text-shadow: 2px 2px 2px #000 !important&lt;br /&gt;
}&lt;br /&gt;
#mw-footer-container {&lt;br /&gt;
    background: #000;&lt;br /&gt;
    padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
fieldset {&lt;br /&gt;
    background: #222!important;&lt;br /&gt;
    border: solid #111;&lt;br /&gt;
}&lt;br /&gt;
input {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: solid 1px #111!important;&lt;br /&gt;
    border-radius: 2px;&lt;br /&gt;
    padding-left: 5px;&lt;br /&gt;
    color: #999;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button.mw-ui-progressive, .mw-ui-button.mw-ui-progressive:active, .mw-ui-button.mw-ui-progressive.mw-ui-checked, input[type='submit'], input[type='button'], button {&lt;br /&gt;
    border: solid 1px #222!important;&lt;br /&gt;
    border-bottom: 0!important;&lt;br /&gt;
    text-shadow: 0 0 0 #000 !important;&lt;br /&gt;
    border-bottom: solid 1px #222!important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-flaggedElement-destructive {&lt;br /&gt;
    background: #111;&lt;br /&gt;
    border: 1px solid #444;&lt;br /&gt;
    color: #FF3333 !important;&lt;br /&gt;
    padding-left: 15px !important;&lt;br /&gt;
    padding-right: 15px !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-flaggedElement-destructive:hover {&lt;br /&gt;
    background: #222;&lt;br /&gt;
    color: #CC0000 !important;&lt;br /&gt;
}&lt;br /&gt;
#searchInput {&lt;br /&gt;
    border: 0!important;&lt;br /&gt;
}&lt;br /&gt;
@media screen and (max-width: 850px) {&lt;br /&gt;
#searchInput {&lt;br /&gt;
    padding: 0 0 0 6px !important;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-textInputWidget input, .oo-ui-textInputWidget textarea {&lt;br /&gt;
    background-color: #111;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-textInputWidget &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
    line-height: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
#pagehistory li.selected {&lt;br /&gt;
    background-color: #555;&lt;br /&gt;
}&lt;br /&gt;
.warningbox {&lt;br /&gt;
    background: #1d1d16;&lt;br /&gt;
}&lt;br /&gt;
.mw-plusminus-neg {&lt;br /&gt;
    color: #FF0000;&lt;br /&gt;
}&lt;br /&gt;
#searchButton, #mw-searchButton {&lt;br /&gt;
    border: 0 !important;&lt;br /&gt;
    left: 38vw;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
}&lt;br /&gt;
#mw-footer .footer-places li {&lt;br /&gt;
    float: right;&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
#mw-footer ul, #mw-footer li {&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
}&lt;br /&gt;
#mw-footer #lastmod {&lt;br /&gt;
    float: left;&lt;br /&gt;
    left: 25px;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange {&lt;br /&gt;
    background: #1d1d16;&lt;br /&gt;
    padding-left: 7px;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement.oo-ui-labelElement &amp;gt; input.oo-ui-buttonElement-button, .oo-ui-buttonElement.oo-ui-labelElement &amp;gt; .oo-ui-buttonElement-button &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
    text-shadow: 0 0 0 #000 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
    text-shadow: 0 0 0 #000&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-panelLayout-expanded {&lt;br /&gt;
    background: #222;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-messageDialog-message {&lt;br /&gt;
    color: #999;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
    color: #999;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {&lt;br /&gt;
    border-right: 1px solid #111&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-dialog-content &amp;gt; .oo-ui-window-body {&lt;br /&gt;
    outline: 1px solid #111;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-messageDialog-content &amp;gt; .oo-ui-window-foot {&lt;br /&gt;
    outline: 1px solid #111;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui .wikiEditor-ui-view {&lt;br /&gt;
    border: 1px solid #000;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui .wikiEditor-ui-top {&lt;br /&gt;
    border-bottom: 1px solid #000;&lt;br /&gt;
}&lt;br /&gt;
textarea[style] {&lt;br /&gt;
    background: #111 !important;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
}&lt;br /&gt;
pre, .mw-code {&lt;br /&gt;
    background: #112;&lt;br /&gt;
    color: #B0B0B0;&lt;br /&gt;
    border: 1px solid #444;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-iconWidget.oo-ui-iconElement.oo-ui-iconElement-icon {&lt;br /&gt;
    background-color: #B0B0B0;&lt;br /&gt;
    border: 1px solid #333;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/****************************************************************/&lt;br /&gt;
#p-top-label{ padding-left: 0.2em; }&lt;br /&gt;
#mw-site-navigation, #mw-related-navigation, .sidebar-chunk, .mw-portlet-body {&lt;br /&gt;
  margin: 0; padding: 0;&lt;br /&gt;
  padding-left: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
&lt;br /&gt;
.mw-body .mw-parser-output h1::after, .mw-body .mw-parser-output h2::after {&lt;br /&gt;
  content: '';&lt;br /&gt;
  display: block;&lt;br /&gt;
  /* border-bottom: solid 2px #c8ccd1; */&lt;br /&gt;
  border-bottom: none;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
  #mw-content {&lt;br /&gt;
    background: #222;&lt;br /&gt;
    border: solid #946c20;&lt;br /&gt;
    -webkit-border-bottom-right-radius: 4px;&lt;br /&gt;
    -webkit-border-bottom-left-radius: 4px;&lt;br /&gt;
    -moz-border-radius-bottomright: 4px;&lt;br /&gt;
    -moz-border-radius-bottomleft: 4px;&lt;br /&gt;
    border-bottom-right-radius: 4px;&lt;br /&gt;
    border-bottom-left-radius: 4px;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=MediaWiki:Common.css&amp;diff=4846</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=MediaWiki:Common.css&amp;diff=4846"/>
		<updated>2024-12-18T12:03:12Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : 1 version importée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Commentaires */&lt;br /&gt;
/* Le CSS placé ici sera appliqué à tous les habillages. */&lt;br /&gt;
/* @import url(&amp;quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.&lt;br /&gt;
  min.css&amp;quot;); */&lt;br /&gt;
/* * {font-family: courier new} */&lt;br /&gt;
/*&lt;br /&gt;
  # élement unique&lt;br /&gt;
  . class&lt;br /&gt;
*/ &lt;br /&gt;
&lt;br /&gt;
/* html,head,body{ width:*} */&lt;br /&gt;
&lt;br /&gt;
/* #mw-header-container */&lt;br /&gt;
&lt;br /&gt;
html, title, head, br, il, tr, th, table, p, omg, ihr, body, td ,&lt;br /&gt;
  center,h1, h2, h3, h4, h5, h6, .mw-headline, div&lt;br /&gt;
{&lt;br /&gt;
  /* font-family: Calibri arial dejavusans dejavu sans; */&lt;br /&gt;
  font-family: Calibri, Candara, Segoe, Segoe UI, Optima, Arial, sans-serif;&lt;br /&gt;
  font-size : 12pt;&lt;br /&gt;
  margin    : 0pt;&lt;br /&gt;
  padding   : 0pt;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
dl, dt, dd, ul, ol, li, .mw-body&lt;br /&gt;
{&lt;br /&gt;
  margin-top : 0;&lt;br /&gt;
  margin-bottom : 0;&lt;br /&gt;
  padding-top : 0;&lt;br /&gt;
  padding-bottom : 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
ul, ol {&lt;br /&gt;
list-style-position: inside;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#mw-panel {&lt;br /&gt;
  min-width : 10.1ch;&lt;br /&gt;
  margin: 0mm;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
h1, h2, h3, h4, h5, h6  {&lt;br /&gt;
max-width : 210mm;&lt;br /&gt;
min-width : 10mm;&lt;br /&gt;
font-size : 105%;&lt;br /&gt;
padding: 0.05ch;&lt;br /&gt;
margin : 0.05ch;&lt;br /&gt;
&lt;br /&gt;
border-radius:5px;&lt;br /&gt;
border-style:none;&lt;br /&gt;
border-width:0.01ch;&lt;br /&gt;
&lt;br /&gt;
vertical-align:middle;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
h1, h2, h3, h4, h5, h6, .mw-headline-number, .mw-headline&lt;br /&gt;
{&lt;br /&gt;
  vertical-align:middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6{&lt;br /&gt;
margin : 0.1ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
h1, .mw-body h1 {font-size:120%; font-weight:bold;}&lt;br /&gt;
h2, .mw-body h2 {font-size:115%; font-weight:bold;}&lt;br /&gt;
h3, .mw-body h3 {font-size:110%; font-weight:bold;margin-left:2ch;}&lt;br /&gt;
h4, .mw-body h4 {font-size:108%; font-weight:bold;margin-left:4ch;}&lt;br /&gt;
h5, .mw-body h5 {font-size:106%; font-weight:bold;margin-left:6ch;}&lt;br /&gt;
h6, .mw-body h6 {font-size:103%; font-weight:bold;margin-left:8ch;}&lt;br /&gt;
&lt;br /&gt;
.inMarg, .parBaseTabTdR2,&lt;br /&gt;
  .parBaseTabTdR,&lt;br /&gt;
  .parBaseTabTdRHalf,&lt;br /&gt;
  .parBaseTabTdL2,&lt;br /&gt;
  .parBaseTabTdL,&lt;br /&gt;
  .parBaseTabTd,&lt;br /&gt;
  .parBaseTabTh {&lt;br /&gt;
  /*display:inline-block; */&lt;br /&gt;
  display: table-cell;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* table with div */&lt;br /&gt;
.tab            { display: table; }&lt;br /&gt;
.tabTr          { display: table-row; }&lt;br /&gt;
.tabTh          { display: table-header-group; }&lt;br /&gt;
.tabBody        { display: table-row-group; }&lt;br /&gt;
.tabFoot        { display: table-footer-group; }&lt;br /&gt;
.tabTd, .tabTh  { display: table-cell; }&lt;br /&gt;
&lt;br /&gt;
/* cParBase */&lt;br /&gt;
.parBaseTab, table.cParBaseTab {&lt;br /&gt;
  font-size:100%;&lt;br /&gt;
  margin:0ch;&lt;br /&gt;
  padding:0ch;&lt;br /&gt;
  border:0px;&lt;br /&gt;
  border-radius:0.0ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.parBaseTab2,table.cParBaseTab2 {&lt;br /&gt;
  font-size:100%;&lt;br /&gt;
  margin-top:0ch;&lt;br /&gt;
  margin-bottom:0.5ch;&lt;br /&gt;
  margin-left:0;&lt;br /&gt;
  margin-right:auto;&lt;br /&gt;
  padding:0ch;&lt;br /&gt;
  border:0px;&lt;br /&gt;
  border-radius:0.0ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.min, .parBaseTabTdL2, cParBaseTdL2, .parBaseTabTdL, cParBaseTdL {&lt;br /&gt;
font-size : 90%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.Half, .headHalf {&lt;br /&gt;
font-size : 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.full, .head, .parBaseTabTdR, .parBaseTabTdRHalf, .cParBaseTdR {&lt;br /&gt;
font-size : 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.double, .headDouble, .parBaseTabTdR2, .cParBaseTdR2 {&lt;br /&gt;
font-size : 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.headHalf, .head, .headDouble {&lt;br /&gt;
    display:inline-block;&lt;br /&gt;
    vertical-align:middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.parBaseTabTdL, .cParBaseTdL, .parBaseTabTdL2, .cParBaseTdL2 {&lt;br /&gt;
  word-wrap:break-word;&lt;br /&gt;
  text-align:center;&lt;br /&gt;
  vertical-align:top;&lt;br /&gt;
  padding:0;&lt;br /&gt;
  margin:0ch;&lt;br /&gt;
  margin-bottom:0.5ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.parBaseTabTdR, .parBaseTabTdRHalf, cParBaseTdR, .parBaseTabTdR2, &lt;br /&gt;
	td.cParBaseTdR2 {&lt;br /&gt;
  word-wrap: break-word;&lt;br /&gt;
  padding:0.0ch;&lt;br /&gt;
  padding-top:0;&lt;br /&gt;
  margin:0.0ch;&lt;br /&gt;
  margin-top   : 0.5ch;&lt;br /&gt;
  margin-bottom: 0.5ch;&lt;br /&gt;
  vertical-align:top;&lt;br /&gt;
  text-align:justify;&lt;br /&gt;
}&lt;br /&gt;
/********************************************************************/&lt;br /&gt;
.parBaseTab, .parBaseTab2 {&lt;br /&gt;
  display: table;&lt;br /&gt;
}&lt;br /&gt;
.parBaseTabTr {&lt;br /&gt;
  display: table-row;&lt;br /&gt;
}&lt;br /&gt;
.parBaseTabTh {&lt;br /&gt;
  display: table-header-group;&lt;br /&gt;
}&lt;br /&gt;
.parBaseTabBody {&lt;br /&gt;
  display: table-row-group;&lt;br /&gt;
}&lt;br /&gt;
.parBaseTabFoot {&lt;br /&gt;
  display: table-footer-group;&lt;br /&gt;
}&lt;br /&gt;
.inMarg, .parBaseTabTdR2,&lt;br /&gt;
  .parBaseTabTdR,&lt;br /&gt;
  .parBaseTabTdRHalf,&lt;br /&gt;
  .parBaseTabTdL2,&lt;br /&gt;
  .parBaseTabTdL,&lt;br /&gt;
  .parBaseTabTd,&lt;br /&gt;
  .parBaseTabTh{&lt;br /&gt;
  vertical-align:top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.figcTab, .figTab table.figTable, table.figcTable {&lt;br /&gt;
  padding:0.0ch;&lt;br /&gt;
}&lt;br /&gt;
.figTab table.figTable {&lt;br /&gt;
  margin:0.5ch 0ch 0.5ch 0ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.figcTitleTabTd, .figTitleTabTd, td.figTitleTd, td.figcTitleTd {&lt;br /&gt;
	padding-left:1ch;&lt;br /&gt;
	padding-right:1ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.figTab, .figcTab {&lt;br /&gt;
  display: table;&lt;br /&gt;
}&lt;br /&gt;
.figTabTr, .figcTabTr {&lt;br /&gt;
  display: table-row;&lt;br /&gt;
}&lt;br /&gt;
.figTabTh, .figcTabTh {&lt;br /&gt;
  display: table-header-group;&lt;br /&gt;
}&lt;br /&gt;
.figTabBody, .figcTabBody {&lt;br /&gt;
  display: table-row-group;&lt;br /&gt;
}&lt;br /&gt;
.figTabFoot, .figcTabFoot {&lt;br /&gt;
  display: table-footer-group;&lt;br /&gt;
}&lt;br /&gt;
.parBaseTabTdL, .cParBaseTdL, .parBaseTabTdL2, td.cParBaseTdL2,&lt;br /&gt;
  .figcTitleTabTd,&lt;br /&gt;
  .figcImgTabTd,&lt;br /&gt;
  .figTitleTabTd,&lt;br /&gt;
  .figImgTabTd,&lt;br /&gt;
  .figTabTd,&lt;br /&gt;
  .figTabTh  {&lt;br /&gt;
  display: table-cell;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
}&lt;br /&gt;
.figcTitleTabTd, .figTitleTabTd {&lt;br /&gt;
  border-radius:0.5ch;&lt;br /&gt;
}&lt;br /&gt;
.figcTab, table.figcTable {&lt;br /&gt;
  display: inline-table;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.MathJax{&lt;br /&gt;
/* !veryimportant TODO */&lt;br /&gt;
	font-size: 1.01ch important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/******************************************************************/&lt;br /&gt;
/* width */&lt;br /&gt;
&lt;br /&gt;
/********************************************************************/&lt;br /&gt;
/*                             width                                */&lt;br /&gt;
/*&lt;br /&gt;
0        1         2         3         4         5         6         7&lt;br /&gt;
1234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
Voici un titre très très long et assez long pour dépasser le nombre maximal de&lt;br /&gt;
caractères comme vous pouvez le constater.&lt;br /&gt;
*/&lt;br /&gt;
.inMarg { max-width : auto; }&lt;br /&gt;
&lt;br /&gt;
.tabTd, .tabTh {&lt;br /&gt;
min-width: 10mm;&lt;br /&gt;
}&lt;br /&gt;
#pw-panel{&lt;br /&gt;
padding-left:2mm;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.parBaseTabTdL, .cParBaseTdL, .parBaseTabTdL2, .cParBaseTdL2&lt;br /&gt;
{&lt;br /&gt;
  width: 30mm ;&lt;br /&gt;
}&lt;br /&gt;
.min {&lt;br /&gt;
  min-width: 10mm ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.half, .headHalf, .full, .head,&lt;br /&gt;
    .figcImgTabTd, .figImgTabTd, td.figImgTd, td.figcImgTd, .parBaseTabTdRHalf&lt;br /&gt;
{&lt;br /&gt;
  width : 90mm ;&lt;br /&gt;
}&lt;br /&gt;
.parBaseTabTdR, .cParBaseTdR&lt;br /&gt;
{&lt;br /&gt;
  width : 150mm; /* 70ch */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.double, .headDouble,.parBaseTabTdR2,.cParBaseTdR2&lt;br /&gt;
{&lt;br /&gt;
  width : 180mm;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cadreDouble&lt;br /&gt;
{&lt;br /&gt;
  text-align:middle;&lt;br /&gt;
  border:6px solid;&lt;br /&gt;
  margin :1px ;&lt;br /&gt;
  padding:2px ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cadreSimple&lt;br /&gt;
{&lt;br /&gt;
  text-align:middle;&lt;br /&gt;
  border:2px solid;&lt;br /&gt;
  margin :2px ;&lt;br /&gt;
  padding:8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cadreSimpleD&lt;br /&gt;
{&lt;br /&gt;
  text-align:middle;&lt;br /&gt;
  border:1px solid;&lt;br /&gt;
  margin :4px ;&lt;br /&gt;
  padding:8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cadreSimpleT&lt;br /&gt;
{&lt;br /&gt;
  text-align:middle;&lt;br /&gt;
  border:1px solid;&lt;br /&gt;
  margin :6px ;&lt;br /&gt;
  padding:8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body, mw-body {&lt;br /&gt;
  margin: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body, .toc, .toccolours, mw-body, .mw-warning  {&lt;br /&gt;
  padding:1mm;&lt;br /&gt;
  border:1px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-content-ltr.mw-highlight-lines pre, .mw-content-ltr.content &lt;br /&gt;
	.mw-highlight-lines pre {&lt;br /&gt;
  box-shadow:none;&lt;br /&gt;
  padding-left: 0.0ch;&lt;br /&gt;
}&lt;br /&gt;
pre, .preSpan, .preSiv {&lt;br /&gt;
  font-family: monospace sans-serif;&lt;br /&gt;
  margin : 1px ;&lt;br /&gt;
  padding : 0.7ch ;&lt;br /&gt;
  border-radius : 0.7ch ;&lt;br /&gt;
  font-size: 10pt;&lt;br /&gt;
  box-shadow:none;&lt;br /&gt;
  /* display: block; */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* fig figc */&lt;br /&gt;
center.figCenter {&lt;br /&gt;
  margin:0ch;&lt;br /&gt;
  padding:0.0ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Introduction */&lt;br /&gt;
&lt;br /&gt;
div.center {text-align: center }&lt;br /&gt;
&lt;br /&gt;
#toc {&lt;br /&gt;
  background-image: None;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pre {&lt;br /&gt;
  line-height: 100%;&lt;br /&gt;
}&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
/* NUMEROTATION start */&lt;br /&gt;
.mw-headline-number {&lt;br /&gt;
  padding-right: 2mm;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.atCounter{&lt;br /&gt;
font-family:serif;&lt;br /&gt;
font-size:75%;&lt;br /&gt;
padding : 0.1ch;&lt;br /&gt;
margin : 0.1ch;&lt;br /&gt;
margin-top:1.0ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 24 */&lt;br /&gt;
.cNumParTit,&lt;br /&gt;
.cNumParTit2,&lt;br /&gt;
.parTit,&lt;br /&gt;
.anoTit,&lt;br /&gt;
.defTit,&lt;br /&gt;
.exaTit,&lt;br /&gt;
.exoTit,&lt;br /&gt;
.notTit,&lt;br /&gt;
.queTit,&lt;br /&gt;
.qupTit,&lt;br /&gt;
.rdoTit,&lt;br /&gt;
.rdnTit,&lt;br /&gt;
.rqeTit,&lt;br /&gt;
.tdoTit,&lt;br /&gt;
.cslTit,&lt;br /&gt;
.hypTit,&lt;br /&gt;
.assTit,&lt;br /&gt;
.proTit,&lt;br /&gt;
.theTit,&lt;br /&gt;
.axoTit,&lt;br /&gt;
.lemTit,&lt;br /&gt;
.cojTit,&lt;br /&gt;
.dEqTit,&lt;br /&gt;
.nEqTit&lt;br /&gt;
{&lt;br /&gt;
  border-radius:0.9ch;&lt;br /&gt;
  border-style:solid;&lt;br /&gt;
  border-width:0.01em;&lt;br /&gt;
  min-height:1.25ch;&lt;br /&gt;
  padding : 0.2ch;&lt;br /&gt;
  margin : 0.1ch;	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 24 */&lt;br /&gt;
.cNumParTag,&lt;br /&gt;
.cNumParTag2,&lt;br /&gt;
.parTag,&lt;br /&gt;
.anoTag,&lt;br /&gt;
.defTag,&lt;br /&gt;
.exaTag,&lt;br /&gt;
.exoTag,&lt;br /&gt;
.notTag,&lt;br /&gt;
.queTag,&lt;br /&gt;
.qupTag,&lt;br /&gt;
.rdoTag,&lt;br /&gt;
.rdnTag,&lt;br /&gt;
.rqeTag,&lt;br /&gt;
.tdoTag,&lt;br /&gt;
.cslTag,&lt;br /&gt;
.hypTag,&lt;br /&gt;
.assTag,&lt;br /&gt;
.proTag,&lt;br /&gt;
.theTag,&lt;br /&gt;
.axoTag,&lt;br /&gt;
.lemTag,&lt;br /&gt;
.cojTag,&lt;br /&gt;
.dEqTag,&lt;br /&gt;
.nEqTag&lt;br /&gt;
{&lt;br /&gt;
  font-size:75%;	&lt;br /&gt;
  border-radius:1.0em;&lt;br /&gt;
  border-style:solid;&lt;br /&gt;
  border-width:0.01em;&lt;br /&gt;
  padding:0.1em;&lt;br /&gt;
  margin:0.05em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 24 */&lt;br /&gt;
.cNumParInfo,&lt;br /&gt;
.cNumParInfo2,&lt;br /&gt;
.parInfo,&lt;br /&gt;
.anoInfo,&lt;br /&gt;
.defInfo,&lt;br /&gt;
.exaInfo,&lt;br /&gt;
.exoInfo,&lt;br /&gt;
.notInfo,&lt;br /&gt;
.queInfo,&lt;br /&gt;
.qupInfo,&lt;br /&gt;
.rdoInfo,&lt;br /&gt;
.rdnInfo,&lt;br /&gt;
.rqeInfo,&lt;br /&gt;
.tdoInfo,&lt;br /&gt;
.cslInfo,&lt;br /&gt;
.hypInfo,&lt;br /&gt;
.assInfo,&lt;br /&gt;
.proInfo,&lt;br /&gt;
.theInfo,&lt;br /&gt;
.axoInfo,&lt;br /&gt;
.lemInfo,&lt;br /&gt;
.cojInfo,&lt;br /&gt;
.dEqInfo,&lt;br /&gt;
.nEqInfo&lt;br /&gt;
{&lt;br /&gt;
  font-size:75%;	&lt;br /&gt;
  border-radius:1.0em;&lt;br /&gt;
  border-style: none;&lt;br /&gt;
  border-width:0.01em;&lt;br /&gt;
  padding:0.1em;&lt;br /&gt;
  margin:0.05em;&lt;br /&gt;
  margin-top:1ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.pr &lt;br /&gt;
{&lt;br /&gt;
  padding:0.5ch;&lt;br /&gt;
  margin:0.5ch;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* notationEq define notation by equivalence */&lt;br /&gt;
.notationEq {&lt;br /&gt;
  box-shadow: none; /* TODO */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* NUMEROTATION end */&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
@media screen{&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
/****************************** dark colors ***********************************/&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
CSS Color Module Level 3 W3C Recommendation 18 January 2022 &lt;br /&gt;
https://www.w3.org/TR/css-color-3/&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
h1, h2, h3, h4, h5, h6  {&lt;br /&gt;
	border-color:#8BB6C4;&lt;br /&gt;
	color:#000000;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
/* syntaxHighlightGeSHi START */&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv { color: cornflowerblue } /* Name.Variable */&lt;br /&gt;
.mw-highlight .nf { color: cadetblue } /* Name.function */&lt;br /&gt;
.mw-highlight .nn { color: royalblue }  /* Name.module */&lt;br /&gt;
	&lt;br /&gt;
/* https://www.mediawiki.org/wiki/Topic:Vjttqs8vp9q2gn9q&lt;br /&gt;
.syntaxhighlight-custom-color pre { background-color: #112; }&lt;br /&gt;
.syntaxhighlight-custom-color pre &amp;gt; font { color: red; }&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* syntaxHighlightGeSHi END */&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* cParBase */&lt;br /&gt;
.parBaseTab, table.cParBaseTab {&lt;br /&gt;
  background-color:transparent;&lt;br /&gt;
}&lt;br /&gt;
.parBaseTab2,table.cParBaseTab2 {&lt;br /&gt;
  background-color:transparent;&lt;br /&gt;
} &lt;br /&gt;
.parBaseTabTdR, .parBaseTabTdRHalf, cParBaseTdR, .parBaseTabTdR2, &lt;br /&gt;
	td.cParBaseTdR2 {&lt;br /&gt;
  background-color:transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.figcImgTabTd, .figImgTabTd, td.figImgTd, td.figcImgTd {&lt;br /&gt;
  background-color:transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.cadreDouble&lt;br /&gt;
{&lt;br /&gt;
  background-color:transparent;&lt;br /&gt;
  border-color: #404040;&lt;br /&gt;
}&lt;br /&gt;
.cadreSimple&lt;br /&gt;
{&lt;br /&gt;
  background-color:transparent;&lt;br /&gt;
  border-color: #404040;&lt;br /&gt;
}&lt;br /&gt;
.cadreSimpleD&lt;br /&gt;
{&lt;br /&gt;
  background-color:transparent;&lt;br /&gt;
  border-color: #404040;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cadreSimpleT&lt;br /&gt;
{&lt;br /&gt;
  background-color:transparent;&lt;br /&gt;
  border-color: #404040;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body, .toc, .toccolours, mw-body, .mw-warning  {&lt;br /&gt;
  background-color:#020100; /* couleur de fond */&lt;br /&gt;
  padding:1mm;&lt;br /&gt;
  border-color: #242;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel, #mw-head{&lt;br /&gt;
  background-color:#222;&lt;br /&gt;
}&lt;br /&gt;
table, .wikitable, tbody, tr, td {&lt;br /&gt;
  background-color:transparent;&lt;br /&gt;
}&lt;br /&gt;
.mw-highlight, .nv {&lt;br /&gt;
  color: #a9a7dd;&lt;br /&gt;
}&lt;br /&gt;
.mw-content-ltr.mw-highlight-lines pre, .mw-content-ltr.content &lt;br /&gt;
	.mw-highlight-lines pre {&lt;br /&gt;
  background-color:#112;&lt;br /&gt;
}&lt;br /&gt;
pre, .preSpan, .preSiv {&lt;br /&gt;
  background-color : #112;&lt;br /&gt;
  /* display: block; */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* fig figc */&lt;br /&gt;
center.figCenter {&lt;br /&gt;
  background-color:#111;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Introduction */&lt;br /&gt;
.buttonText {color:#808080;}&lt;br /&gt;
table.common_css_test { background-color:#FF8080; }&lt;br /&gt;
&lt;br /&gt;
#toc {&lt;br /&gt;
  background-color : #222 ;&lt;br /&gt;
  color: #808080;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pr { color : #aaf ; } /* la couleur du texte */&lt;br /&gt;
/*  NUMBERING  24 */&lt;br /&gt;
/* COMPLETED  Tit 24 */&lt;br /&gt;
.cNumParTit,&lt;br /&gt;
.cNumParTit2,&lt;br /&gt;
.parTit,&lt;br /&gt;
.anoTit,&lt;br /&gt;
.defTit,&lt;br /&gt;
.exaTit,&lt;br /&gt;
.exoTit,&lt;br /&gt;
.notTit,&lt;br /&gt;
.queTit,&lt;br /&gt;
.qupTit,&lt;br /&gt;
.rdoTit,&lt;br /&gt;
.rdnTit,&lt;br /&gt;
.rqeTit,&lt;br /&gt;
.tdoTit,&lt;br /&gt;
.cslTit,&lt;br /&gt;
.hypTit,&lt;br /&gt;
.assTit,&lt;br /&gt;
.proTit,&lt;br /&gt;
.theTit,&lt;br /&gt;
.axoTit,&lt;br /&gt;
.lemTit,&lt;br /&gt;
.cojTit,&lt;br /&gt;
.dEqTit,&lt;br /&gt;
.nEqTit&lt;br /&gt;
{&lt;br /&gt;
  color : #ccf ;	&lt;br /&gt;
  border-color:#D0D0D0;&lt;br /&gt;
  background-color:transparent;&lt;br /&gt;
  /* color:#8080ff */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* COMPLETED 24 */&lt;br /&gt;
.cNumParTag,&lt;br /&gt;
.cNumParTag2,&lt;br /&gt;
.parTag,&lt;br /&gt;
.anoTag,&lt;br /&gt;
.defTag,&lt;br /&gt;
.exaTag,&lt;br /&gt;
.exoTag,&lt;br /&gt;
.notTag,&lt;br /&gt;
.queTag,&lt;br /&gt;
.qupTag,&lt;br /&gt;
.rdoTag,&lt;br /&gt;
.rdnTag,&lt;br /&gt;
.rqeTag,&lt;br /&gt;
.tdoTag,&lt;br /&gt;
.cslTag,&lt;br /&gt;
.hypTag,&lt;br /&gt;
.assTag,&lt;br /&gt;
.proTag,&lt;br /&gt;
.theTag,&lt;br /&gt;
.axoTag,&lt;br /&gt;
.lemTag,&lt;br /&gt;
.cojTag,&lt;br /&gt;
.dEqTag,&lt;br /&gt;
.nEqTag&lt;br /&gt;
{ color : #aaf ; border-color:#D0D0D0; background-color:#333; }&lt;br /&gt;
/* COMPLETED 24 */&lt;br /&gt;
       .cNumParTag, .cNumParTit { background-color:#644;}&lt;br /&gt;
       .cNumParTag2,.cNumParTit2{ background-color:#644;}&lt;br /&gt;
/* §   paragraph */   			 	 .parTag,.parTit { background-color:#442;} &lt;br /&gt;
/* Ano anomaly */      		         .anoTag,.anoTit { background-color:#844;} &lt;br /&gt;
/* Def definition */             	 .defTag,.defTit { background-color:#336;}&lt;br /&gt;
/* Exa example  */             		 .exaTag,.exaTit { background-color:#242;}&lt;br /&gt;
/* Exo exercice */        		     .exoTag,.exoTit { background-color:#433;}&lt;br /&gt;
/* Not notation */       			 .notTag,.notTit { background-color:#464;}&lt;br /&gt;
/* Que question */              	 .queTag,.queTit { background-color:#842;}&lt;br /&gt;
/* Qup question imp/ */              .qupTag,.qupTit { background-color:#953;}&lt;br /&gt;
/* RDo rule to apply */              .rdoTag,.rdoTit { background-color:#46a;}&lt;br /&gt;
/* RDn rule do not ... prohibitedt*/ .rdnTag,.rdnTit { background-color:#a44;}&lt;br /&gt;
/* Rqe remark */              		 .rqeTag,.rqeTit { background-color:#972;}&lt;br /&gt;
/* Tdo todo to finish */             .tdoTag,.tdoTit { background-color:#774;}&lt;br /&gt;
/* CSl code style to use */          .cslTag,.cslTit { background-color:#464;}&lt;br /&gt;
/* Hyp hypothèse*/    				 .hypTag,.hypTit { background-color:#887;}&lt;br /&gt;
/* Ass assertion */   				 .assTag,.assTit { background-color:#978;}&lt;br /&gt;
/* Pro proposition */ 				 .proTag,.proTit { background-color:#874;}&lt;br /&gt;
/* The théorème */    				 .theTag,.theTit { background-color:#833;}&lt;br /&gt;
/* Axo axiome */           		     .axoTag,.axoTit { background-color:#871;}&lt;br /&gt;
/* Lem lemme */           			 .lemTag,.lemTit { background-color:#787;}&lt;br /&gt;
/* Coj conjecture */                 .cojTag,.cojTit { background-color:#876;}&lt;br /&gt;
/* DEq define by equivalence */      .dEqTag,.dEqTit { background-color:#468;}&lt;br /&gt;
/* NEq notation by equivalence */    .nEqTag,.nEqTit { background-color:#474;}&lt;br /&gt;
&lt;br /&gt;
/* § par  */      .cNumParInfo  { border-color:#444; background-color:#322;}&lt;br /&gt;
/* § par2 */      .cNumParInfo2 { border-color:#444; background-color:#322;}&lt;br /&gt;
/* parW  CNumPar paragraph */   	 .parInfo { background-color:#221;} &lt;br /&gt;
/* Ano anomaly */      		         .anoInfo { background-color:#422;} &lt;br /&gt;
/* Def definition */             	 .defInfo { background-color:#113;}&lt;br /&gt;
/* Exa example  */             		 .exaInfo { background-color:#121;}&lt;br /&gt;
/* Exo exercice */        		     .exoInfo { background-color:#211;}&lt;br /&gt;
/* Not notation */       			 .notInfo { background-color:#232;}&lt;br /&gt;
/* Que question */              	 .queInfo { background-color:#421;}&lt;br /&gt;
/* Qup question importante */        .qupInfo { background-color:#421;}&lt;br /&gt;
/* RDo rule to do, to adopt*/        .rdoInfo { background-color:#235;}&lt;br /&gt;
/* RDn rule do not ... prohibitedt*/ .rdnInfo { background-color:#522;}&lt;br /&gt;
/* Rqe remark */              		 .rqeInfo { background-color:#431;}&lt;br /&gt;
/* Tdo todo to finish */             .tdoInfo { background-color:#332;}&lt;br /&gt;
/* CSl code style to use */          .cslInfo { background-color:#232;}&lt;br /&gt;
/* Hyp hypothèse*/    				 .hypInfo { background-color:#443;}&lt;br /&gt;
/* Ass assertion */   				 .assInfo { background-color:#534;}&lt;br /&gt;
/* Pro proposition */ 				 .proInfo { background-color:#432;}&lt;br /&gt;
/* The théorème */    				 .theInfo { background-color:#411;}&lt;br /&gt;
/* Axo axiome */           		     .axoInfo { background-color:#430;}&lt;br /&gt;
/* Lem lemme */           			 .lemInfo { background-color:#343;}&lt;br /&gt;
/* Coj conjecture */                 .cojInfo { background-color:#433;}&lt;br /&gt;
/* DEq define by equivalence */      .dEqInfo { background-color:#234;}&lt;br /&gt;
/* NEq notation by equivalence */    .nEqInfo { background-color:#232;}&lt;br /&gt;
&lt;br /&gt;
/* ========================================================================== */&lt;br /&gt;
body,html, .mw-body, .toc, #toc, h1, h2, h3, h4, h5, h6, mw-panel,  #mw-panel, &lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-color:#222;&lt;br /&gt;
	color: #C4C0C8; &lt;br /&gt;
}&lt;br /&gt;
b              { color: #F8F8FF; }&lt;br /&gt;
a:link         { color: #8d4;    } /* not visited */&lt;br /&gt;
a:link:hover   { color: #af8;    }&lt;br /&gt;
a:visited      { color: #d84;    }&lt;br /&gt;
a:visited:hover{ color: #fb8;    }&lt;br /&gt;
a:active {color: #afa;}&lt;br /&gt;
&lt;br /&gt;
/* matht */&lt;br /&gt;
.mw-content{ background-color:#888; }&lt;br /&gt;
span.tocnumber, span.mw-headline-number { color : #54595d ;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
} /* end media screen */&lt;br /&gt;
/******************************************************************************/&lt;br /&gt;
&lt;br /&gt;
.mw-body {&lt;br /&gt;
  padding: 0mm ;&lt;br /&gt;
  width : 210mm;&lt;br /&gt;
  margin : 0mm ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-content-wrapper&lt;br /&gt;
{&lt;br /&gt;
  margin-left  : auto;&lt;br /&gt;
  margin-right : auto; &lt;br /&gt;
  width     : 220mm;  &lt;br /&gt;
  max-width : 220mm; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-content-wrapper &lt;br /&gt;
{&lt;br /&gt;
  margin-left  : auto;&lt;br /&gt;
  margin-right : auto; &lt;br /&gt;
  width     : 220mm;  &lt;br /&gt;
  max-width : 220mm; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-content{&lt;br /&gt;
  padding          : 5mm ;&lt;br /&gt;
  width            : 210mm; &lt;br /&gt;
  max-width        : 210mm ; &lt;br /&gt;
  margin           : 0mm ;&lt;br /&gt;
  /* background-color : red ; */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#content{&lt;br /&gt;
  padding          : 0mm ;&lt;br /&gt;
  width            : 210mm; &lt;br /&gt;
  max-width        : 210mm ; &lt;br /&gt;
  margin           : 0mm ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading, .bodyContentOuter &lt;br /&gt;
{&lt;br /&gt;
  padding          : 0.25ch ;&lt;br /&gt;
  width            : 200mm; &lt;br /&gt;
  max-width        : 200mm ; &lt;br /&gt;
  margin           : 0mm ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#bodyContent {&lt;br /&gt;
  padding:0;&lt;br /&gt;
  min-width : 180mm;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-content-text {&lt;br /&gt;
padding: 0 mm;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head{&lt;br /&gt;
min-width : 210mm;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4844</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=MediaWiki:Sidebar&amp;diff=4844"/>
		<updated>2024-02-23T10:26:50Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω { } [] ⟨⟩ Æ ∃ ∀ ⊤ ⊥ ¬ ∧ ∨ ⇔ ⇐ ⇒ ≤ ≠ ≥ ∈ ∋ ∉ ⊂ ⊃ ⊄ ⊆ ∪ ∩ ≡ ≝ ≜ 。◊ ∵ ∴ ∞ ℵ ∅∂ ∫ ≈ Δ δ ∇ ± × ÷ ⊗ ⊖ ★ ↦ ⟼ → ⟶ &lt;br /&gt;
** Symboles mathématiques|Symb. math.&lt;br /&gt;
* ⊕ ⊖ ★ ␣ … «…»  «» ‘…’ ‘’ “…” “” '…' '' &amp;quot;…&amp;quot; &amp;quot;&amp;quot; „“ ☚ ☛ ☜ ☞ ☟ ☠ ☡ ☢ ← ↑ → ↓ ↔ ↕ ⇄ ⇅ ↲ ↰ ↳ ↱ ◊ ↪ ↩ ⤻ ⤺ ⤹ ⤸ ⤿ ⤾ ⤴ ⤵ ⤷ ⤶ ⮍ ⮏ ⮎ ⮌ ↬, ↫&lt;br /&gt;
** Symboles|Symboles &lt;br /&gt;
* Boutiques&lt;br /&gt;
** https://www.bht-diffusion.com|BHT Diffusion Broderie&lt;br /&gt;
** https://www.electra-bike.fr/index.php|BHT Bike&lt;br /&gt;
* Mes wiki&lt;br /&gt;
** https://at.bht.fr| Racine&lt;br /&gt;
** https://at.bht.fr/paintWiki| Peinture&lt;br /&gt;
** https://at.bht.fr/musicWiki| Musique&lt;br /&gt;
** https://at.bht.fr/astroWiki| Astres&lt;br /&gt;
** https://wiki.bht.fr| Wiki&lt;br /&gt;
** http://at.bht.fr|Racine&lt;br /&gt;
* Admin&lt;br /&gt;
** Special:Allpages| Liste des pages&lt;br /&gt;
** Spécial:Importer| Importer&lt;br /&gt;
** Special:Recentchanges|Mod. réc.&lt;br /&gt;
** MediaWiki:Sidebar| MediaWiki:Sidebar&lt;br /&gt;
** MediaWiki:Common.css | css&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:EnConstruction&amp;diff=4843</id>
		<title>Modèle:EnConstruction</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:EnConstruction&amp;diff=4843"/>
		<updated>2024-02-15T22:39:40Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Ligne_exergue&lt;br /&gt;
|gaucheW=width:32px;&lt;br /&gt;
|gauche=&amp;lt;span style='font-size:32px;'&amp;gt;🚧&amp;lt;/span&amp;gt;&lt;br /&gt;
|texte={{fr§en|Cet article est en travaux. Son contenu encore incomplet, est temporaire.|This article is under construction. Its content is still incomplete and temporary.}}&lt;br /&gt;
|color=#FFFF20 &lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=page&lt;br /&gt;
|texte=Ce modèle informe le lecteur que la page est en cours de modification, que sa rédaction n'est pas terminée.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{EnConstruction |image=[construction32.png] }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;image&lt;br /&gt;
:L'image ou l'icône apparaissant à gauche du texte expliquant que la page est en cours de rédaction. Par défaut l'image est [[Image:construction16.png]].&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{EnConstruction}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&lt;br /&gt;
{{EnConstruction}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:EnConstruction&amp;diff=4842</id>
		<title>Modèle:EnConstruction</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:EnConstruction&amp;diff=4842"/>
		<updated>2024-02-15T22:38:33Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Ligne_exergue&lt;br /&gt;
|gaucheW=width:32px;&lt;br /&gt;
|gauche=&amp;lt;span style='font-width:32px;'&amp;gt;🚧&amp;lt;/span&amp;gt;&lt;br /&gt;
|texte={{fr§en|Cet article est en travaux. Son contenu encore incomplet, est temporaire.|This article is under construction. Its content is still incomplete and temporary.}}&lt;br /&gt;
|color=#FFFF20 &lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=page&lt;br /&gt;
|texte=Ce modèle informe le lecteur que la page est en cours de modification, que sa rédaction n'est pas terminée.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{EnConstruction |image=[construction32.png] }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;image&lt;br /&gt;
:L'image ou l'icône apparaissant à gauche du texte expliquant que la page est en cours de rédaction. Par défaut l'image est [[Image:construction16.png]].&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{EnConstruction}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&lt;br /&gt;
{{EnConstruction}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.bht.fr/index.php?title=Mod%C3%A8le:EnConstruction&amp;diff=4841</id>
		<title>Modèle:EnConstruction</title>
		<link rel="alternate" type="text/html" href="https://wiki.bht.fr/index.php?title=Mod%C3%A8le:EnConstruction&amp;diff=4841"/>
		<updated>2024-02-15T22:38:19Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Ligne_exergue&lt;br /&gt;
|gaucheW=width:32px;&lt;br /&gt;
|gauche=&amp;lt;span style='font-width:32px;'&amp;gt;🚧&amp;lt;/style&amp;gt;&lt;br /&gt;
|texte={{fr§en|Cet article est en travaux. Son contenu encore incomplet, est temporaire.|This article is under construction. Its content is still incomplete and temporary.}}&lt;br /&gt;
|color=#FFFF20 &lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Model&lt;br /&gt;
|class=page&lt;br /&gt;
|texte=Ce modèle informe le lecteur que la page est en cours de modification, que sa rédaction n'est pas terminée.&lt;br /&gt;
|syntaxe=&amp;lt;nowiki&amp;gt;{{EnConstruction |image=[construction32.png] }}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|specification=&lt;br /&gt;
;image&lt;br /&gt;
:L'image ou l'icône apparaissant à gauche du texte expliquant que la page est en cours de rédaction. Par défaut l'image est [[Image:construction16.png]].&lt;br /&gt;
}}&lt;br /&gt;
Exemple :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{EnConstruction}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&lt;br /&gt;
{{EnConstruction}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
</feed>