content.textile 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052
  1. <header id='header'>
  2. h1. OLA#4 Documentation : OSP html2print
  3. <nav id='menu'>
  4. * "00-ola":#00-ola
  5. * "alex":#alex
  6. * "bachir":#bachir
  7. * "gabriel":#gabriel
  8. * "kenji":#kenji
  9. * "Kenji-Elie":#Kenji-Elie
  10. * "kevin":#kevin
  11. * "Lucile":#Lucile
  12. * "nicolas":#nicolas
  13. * "PierreYves":#PierreYves
  14. * "Sarah":#Sarah
  15. * "timothee_goguely":#timothee_goguely
  16. * "Pad":#pad
  17. * "CookBook":#cookbook
  18. </nav>
  19. </header>
  20. <section id='main'>
  21. <div id='00-ola' class='user'>
  22. <section class='content'>
  23. h1. Le workshop
  24. Les technologies du web offrent un environnement de publication ouvert et décentralisé. Les documents web sont ainsi éditables en différents endroits et temporalités par une variété de personnes et d'outils, rompant avec la logique linéaire de l'ère Gutenberg.
  25. Dans cet espace, la notion de flux est centrale: le flux des données, allant de la conversion de documents "bruts" vers la production de multiples formats; le flux des formes produites, conditionné par la struture du HTML et la logique de «cascade» des feuilles de style; ou encore le flux des personnes et les nouveaux moyens de collaboration qui leurs sont offerts par le net.
  26. Si cet espace offre de nouvelles possibilités, cela ne va pas sans poser de questions. Comment penser un design alors sans le subordonner au contenu? Comment publier sur différents formats sans nier la spécificité des différents supports? Comment tester et combiner différentes pistes de mise en page? Comment se partager les taches tout en permettant à tous d'avoir une vue d'ensemble sur l'objet produit?
  27. Nous tenterons ensemble d'imaginer quelques réponses possibles à ces questions en imaginant et développant, à l'aide notamment de HTML, CSS et Javascript, des prototypes pour produire des objets imprimés. Venez simplement avec un ordinateur portable et un navigateur web à jour comme firefox](https://www.mozilla.org/fr/firefox/new/)) et, si possible, avec un éditeur de code comme atom](https://atom.io/))
  28. Questions sous-jacentes
  29. modèles de production non-linéaires (ex. book sprint via ethertoff)
  30. comment penser la spécificité des différents supports de publication (éviter le plus petit dénominateur commun pour le design)
  31. penser et tester différentes versions (branches)
  32. </section>
  33. <section class='images'>
  34. * <a data-lightbox='00-ola' href='images/00-ola-00.JPG'>!thumbs/00-ola-00.JPG!</a>
  35. * <a data-lightbox='00-ola' href='images/00-ola-01.JPG'>!thumbs/00-ola-01.JPG!</a>
  36. * <a data-lightbox='00-ola' href='images/00-ola-02.JPG'>!thumbs/00-ola-02.JPG!</a>
  37. * <a data-lightbox='00-ola' href='images/00-ola-03.jpg'>!thumbs/00-ola-03.jpg!</a>
  38. * <a data-lightbox='00-ola' href='images/00-ola-04.jpg'>!thumbs/00-ola-04.jpg!</a>
  39. * <a data-lightbox='00-ola' href='images/00-ola-05.jpg'>!thumbs/00-ola-05.jpg!</a>
  40. * <a data-lightbox='00-ola' href='images/00-ola-06.jpg'>!thumbs/00-ola-06.jpg!</a>
  41. * <a data-lightbox='00-ola' href='images/00-ola-07.jpg'>!thumbs/00-ola-07.jpg!</a>
  42. * <a data-lightbox='00-ola' href='images/00-ola-08.jpg'>!thumbs/00-ola-08.jpg!</a>
  43. * <a data-lightbox='00-ola' href='images/00-ola-09.jpg'>!thumbs/00-ola-09.jpg!</a>
  44. * <a data-lightbox='00-ola' href='images/00-ola-10.jpg'>!thumbs/00-ola-10.jpg!</a>
  45. * <a data-lightbox='00-ola' href='images/00-ola-11.jpg'>!thumbs/00-ola-11.jpg!</a>
  46. * <a data-lightbox='00-ola' href='images/00-ola-12.jpg'>!thumbs/00-ola-12.jpg!</a>
  47. * <a data-lightbox='00-ola' href='images/00-ola-13.jpg'>!thumbs/00-ola-13.jpg!</a>
  48. * <a data-lightbox='00-ola' href='images/00-ola-14.jpg'>!thumbs/00-ola-14.jpg!</a>
  49. * <a data-lightbox='00-ola' href='images/00-ola-15.jpg'>!thumbs/00-ola-15.jpg!</a>
  50. * <a data-lightbox='00-ola' href='images/00-ola-16.jpg'>!thumbs/00-ola-16.jpg!</a>
  51. * <a data-lightbox='00-ola' href='images/00-ola-17.jpg'>!thumbs/00-ola-17.jpg!</a>
  52. * <a data-lightbox='00-ola' href='images/00-ola-18.jpg'>!thumbs/00-ola-18.jpg!</a>
  53. * <a data-lightbox='00-ola' href='images/00-ola-19.jpg'>!thumbs/00-ola-19.jpg!</a>
  54. * <a data-lightbox='00-ola' href='images/00-ola-20.jpg'>!thumbs/00-ola-20.jpg!</a>
  55. * <a data-lightbox='00-ola' href='images/00-ola-21.jpg'>!thumbs/00-ola-21.jpg!</a>
  56. * <a data-lightbox='00-ola' href='images/00-ola-22.jpg'>!thumbs/00-ola-22.jpg!</a>
  57. * <a data-lightbox='00-ola' href='images/00-ola-23.jpg'>!thumbs/00-ola-23.jpg!</a>
  58. * <a data-lightbox='00-ola' href='images/00-ola-24.jpg'>!thumbs/00-ola-24.jpg!</a>
  59. * <a data-lightbox='00-ola' href='images/00-ola-25.jpg'>!thumbs/00-ola-25.jpg!</a>
  60. * <a data-lightbox='00-ola' href='images/00-ola-26.jpg'>!thumbs/00-ola-26.jpg!</a>
  61. * <a data-lightbox='00-ola' href='images/00-ola-27.jpg'>!thumbs/00-ola-27.jpg!</a>
  62. * <a data-lightbox='00-ola' href='images/00-ola-28.jpg'>!thumbs/00-ola-28.jpg!</a>
  63. * <a data-lightbox='00-ola' href='images/00-ola-29.jpg'>!thumbs/00-ola-29.jpg!</a>
  64. * <a data-lightbox='00-ola' href='images/00-ola-30.jpg'>!thumbs/00-ola-30.jpg!</a>
  65. * <a data-lightbox='00-ola' href='images/00-ola-31.jpg'>!thumbs/00-ola-31.jpg!</a>
  66. </section>
  67. <section class='sources'>
  68. </section>
  69. </div>
  70. <div class="pagebreak"></div>
  71. <div id='alex' class='user'>
  72. <section class='content'>
  73. h1. Alex
  74. h2. Mettre en page un Médor (WIP)
  75. <a data-lightbox='alex' href='images/alex-02.png'>!thumbs/alex-02.png!</a>
  76. h2. Grid system en CSS (WIP)
  77. Utiliser css pour dessiner une grille et utiliser la fonctionalité `display: grid` de css.
  78. <a data-lightbox='alex' href='images/alex-00.png'>!thumbs/alex-00.png!</a>
  79. https://jsfiddle.net/zw9c7owa/17/
  80. </section>
  81. <section class='images'>
  82. * <a data-lightbox='alex' href='images/alex-01.pdf'>!thumbs/alex-01.pdf!</a>
  83. </section>
  84. <section class='sources'>
  85. </section>
  86. </div>
  87. <div class="pagebreak"></div>
  88. <div id='bachir' class='user'>
  89. <section class='content'>
  90. h1. La Convivialité New Generation
  91. h2. Bachir Soussi Chiadmi
  92. <a data-lightbox='bachir' href='images/bachir-00.jpg'>!thumbs/bachir-00.jpg!</a>
  93. Projet de Transposition de "La Convivialité", Ivan Illich, en 2017 et à propos des espaces numériques
  94. </section>
  95. <section class='images'>
  96. * <a data-lightbox='bachir' href='images/bachir-01.png'>!thumbs/bachir-01.png!</a>
  97. * <a data-lightbox='bachir' href='images/bachir-02.png'>!thumbs/bachir-02.png!</a>
  98. * <a data-lightbox='bachir' href='images/bachir-03.png'>!thumbs/bachir-03.png!</a>
  99. * <a data-lightbox='bachir' href='images/bachir-04.png'>!thumbs/bachir-04.png!</a>
  100. * <a data-lightbox='bachir' href='images/bachir-05.png'>!thumbs/bachir-05.png!</a>
  101. * <a data-lightbox='bachir' href='images/bachir-06.png'>!thumbs/bachir-06.png!</a>
  102. </section>
  103. <section class='sources'>
  104. * "conv-ng.zip":sources/conv-ng.zip
  105. </section>
  106. </div>
  107. <div class="pagebreak"></div>
  108. <div id='gabriel' class='user'>
  109. <section class='content'>
  110. h1. README.intern
  111. h2. Gabriel Vaury
  112. Premier test d'un rapport de stage sous forme de "README" revisité et commenté
  113. <a data-lightbox='gabriel' href='images/gabriel-06.png'>!thumbs/gabriel-06.png!</a>
  114. Matière première
  115. <a data-lightbox='gabriel' href='images/gabriel-01.png'>!thumbs/gabriel-01.png!</a>
  116. * *-3 flux de texte* :
  117. ** -_log_ initial sous forme de carnet de bord
  118. ** -_commentaires_ post-rédaction amenant un recul et un 'décryptage' des activités faites
  119. ** -_commandes_ apprises recontextualisées
  120. * *-2 flux d'images* :
  121. ** -Screenshots pris pendant le stage
  122. ** -Photos prises "en dehors" du stage
  123. Objectif
  124. * -Explorer la perméabilité entre la hiérarchie du contenu et du code et comment celle-ci peut nourrir visuellement la mise en page du rapport
  125. * -Mettre en relation les rapports fait _à chaud_ lors du stage et les prises de conscience _à froid_
  126. * -[Optionel] Réaliser une version print et une version web de ce rapport
  127. To Do
  128. * - -Intégrer un système de "CMS" pour appeler le contenu dans la structure HTML-
  129. * - -Mise en forme gérée par Markdown ou autre (?)-
  130. ** Problème reglé avec "BeautifulSoup et pypandoc":https://figureslibres.io/gogs/bachir/gitbook-html2print
  131. * - Gérer les listes en tant que footnotes pour les extraire du flux et les imbriquer dans le flux principal
  132. Avancement
  133. Nettoyage et Markdownisation du texte initial
  134. <a data-lightbox='gabriel' href='images/gabriel-02.png'>!thumbs/gabriel-02.png!</a>
  135. Premier test avec pandoc seul
  136. <a data-lightbox='gabriel' href='images/gabriel-03.png'>!thumbs/gabriel-03.png!</a>
  137. <a data-lightbox='gabriel' href='images/gabriel-04.png'>!thumbs/gabriel-04.png!</a>
  138. Utilisation du script
  139. <a data-lightbox='gabriel' href='images/gabriel-07.png'>!thumbs/gabriel-07.png!</a>
  140. <a data-lightbox='gabriel' href='images/gabriel-05.png'>!thumbs/gabriel-05.png!</a>
  141. Se pose maintenant le problèmes des footnotes
  142. <a data-lightbox='gabriel' href='images/gabriel-00.png'>!thumbs/gabriel-00.png!</a>
  143. Il reste encore beaucoup de travail mais la structure est la, il me reste les vacances pour finir le contenu (les commentaires) et ajouter les images
  144. </section>
  145. <section class='images'>
  146. </section>
  147. <section class='sources'>
  148. * "sources.zip":sources/sources.zip
  149. </section>
  150. </div>
  151. <div class="pagebreak"></div>
  152. <div id='kenji' class='user'>
  153. <section class='content'>
  154. h1. magic system
  155. h3. Kenji Luyeye
  156. Notre projet (w/ Elie Partouche) consiste à générer une édition qui reprend une grille de Bande Dessinée dans laquelle figurent des formes aléatoires produites par Processing.
  157. Nous partageons les tâches de la façon suivante : Elie s'occupe de mettre au point le sketch sur p5.js et il gère l'export des images, Kenji conçoit la mise en page dynamique.
  158. h2. SAMEDI
  159. Je commence par le design des gabarits en croquis. Alexandre me montre les propriété grid sur css, qui convienne mieux pour ce projet que flexbox.
  160. [alt text](images/2.png"")
  161. Je me familiarise avec grid et transpose mes croquis en HTML/CSS.
  162. Le CSS est beaucoup trop long, Alexandre me suggère donc d'insérer du style directement dans le HTML.
  163. Après m'être approprié le système de grid, je décide d'injecter de l'aléatoire car je constate que lorsque j'organise ma grille de façon illogique des formes amusantes se créent.
  164. La solution la plus évidente serait d'utiliser javascript et de créer des boucles. Nous essayerons demain.
  165. h2. DIMANCHE
  166. Nous avons joint nos forces sur javascript et réussi à créer un gabarit aléatoire.
  167. </section>
  168. <section class='images'>
  169. </section>
  170. <section class='sources'>
  171. </section>
  172. </div>
  173. <div class="pagebreak"></div>
  174. <div id='Kenji-Elie' class='user'>
  175. <section class='content'>
  176. h1. Grid
  177. h3. Kenji Luyeye
  178. Notre projet (w/ Elie Partouche) consiste à générer une édition qui reprend une grille de Bande Dessinée dans laquelle figurent des formes aléatoires produites par Processing.
  179. Nous partageons les tâches de la façon suivante : Elie s'occupe de mettre au point le sketch sur p5.js et il gère l'export des images, Kenji conçoit la mise en page dynamique.
  180. h2. SAMEDI
  181. Je commence par le design des gabarits en croquis. Alexandre me montre les propriété grid sur css, qui convienne mieux pour ce projet que flexbox.
  182. [alt text](images/2.png"")
  183. Je me familiarise avec grid et transpose mes croquis en HTML/CSS.
  184. Le CSS est beaucoup trop long, Alexandre me suggère donc d'insérer du style directement dans le HTML.
  185. Après m'être approprié le système de grid, je décide d'injecter de l'aléatoire car je constate que lorsque j'organise ma grille de façon illogique des formes amusantes se créent.
  186. La solution la plus évidente serait d'utiliser javascript et de créer des boucles. Nous essayerons demain.
  187. h2. DIMANCHE
  188. Nous avons joint nos forces sur javascript et réussi à créer un gabarit aléatoire.
  189. </section>
  190. <section class='images'>
  191. * <a data-lightbox='Kenji-Elie' href='images/Kenji-Elie-01.png'>!thumbs/Kenji-Elie-01.png!</a>
  192. * <a data-lightbox='Kenji-Elie' href='images/Kenji-Elie-02.png'>!thumbs/Kenji-Elie-02.png!</a>
  193. * <a data-lightbox='Kenji-Elie' href='images/Kenji-Elie-03.png'>!thumbs/Kenji-Elie-03.png!</a>
  194. * <a data-lightbox='Kenji-Elie' href='images/Kenji-Elie-04.png'>!thumbs/Kenji-Elie-04.png!</a>
  195. * <a data-lightbox='Kenji-Elie' href='images/Kenji-Elie-05.png'>!thumbs/Kenji-Elie-05.png!</a>
  196. * <a data-lightbox='Kenji-Elie' href='images/Kenji-Elie-06.png'>!thumbs/Kenji-Elie-06.png!</a>
  197. * <a data-lightbox='Kenji-Elie' href='images/Kenji-Elie-07.png'>!thumbs/Kenji-Elie-07.png!</a>
  198. </section>
  199. <section class='sources'>
  200. </section>
  201. </div>
  202. <div class="pagebreak"></div>
  203. <div id='kevin' class='user'>
  204. <section class='content'>
  205. h1. Le nom de mon projet
  206. h2. Kévin Tessier
  207. </section>
  208. <section class='images'>
  209. * <a data-lightbox='kevin' href='images/kevin-00.png'>!thumbs/kevin-00.png!</a>
  210. * <a data-lightbox='kevin' href='images/kevin-01.png'>!thumbs/kevin-01.png!</a>
  211. * <a data-lightbox='kevin' href='images/kevin-02.png'>!thumbs/kevin-02.png!</a>
  212. * <a data-lightbox='kevin' href='images/kevin-03.png'>!thumbs/kevin-03.png!</a>
  213. * <a data-lightbox='kevin' href='images/kevin-04.png'>!thumbs/kevin-04.png!</a>
  214. * <a data-lightbox='kevin' href='images/kevin-05.png'>!thumbs/kevin-05.png!</a>
  215. </section>
  216. <section class='sources'>
  217. </section>
  218. </div>
  219. <div class="pagebreak"></div>
  220. <div id='Lucile' class='user'>
  221. <section class='content'>
  222. h1. Reverse
  223. h2. Lucile Béal
  224. Objectif: créer un outil qui permette d'imprimer une création web, pour la référencer dans une édition. Dans l'idéal la mise en page serait automatique.
  225. Question: Comment transcrire l'organisation d'un site dans la mise en page d'un livre? Liens/menus/les chemins possibles etc. Format?
  226. Réflection: partir du constat que le web ne sert plus qu'à référencer des savoirs, des activités, des organisations de notre monde physique.
  227. Il est une source de création et de savoirs: serait-il utile/enrichissant de référencer physiquement ces créations sur papier?
  228. Web et print sont des supports de savoirs (physique/virtuels), mais peuvent aussi être considérés comme des outils de création qui se complètent.
  229. Objet de création web mis en page: "ClickClickClick" par le Studio Moniker
  230. !images/tutorial-getting-started-krita_part1_14_net.jpg!
  231. Pour insérer des images, comme des shoot écrans de votre travail, commencez par les déposer dans le dossier images de votre dossier perso
  232. puis ajouter cette ligne:
  233. bc. !images/nomdemonimage.jpeg!
  234. Toutes les images seront insérez automatiquement a la fin de votre description dans la documentation finale, sauf celle ajouté manuellement dans le texte.
  235. </section>
  236. <section class='images'>
  237. </section>
  238. <section class='sources'>
  239. </section>
  240. </div>
  241. <div class="pagebreak"></div>
  242. <div id='nicolas' class='user'>
  243. <section class='content'>
  244. h1. CtrlPtoSurvive
  245. h2. Nicolas Tilly
  246. Inspiré du "Whole Earth Catalog" de Steward Brand, le site est un catalogue d'outils de survie qu'il est possible d'imprimer au format A3 à l'aide du bouton dans la page.
  247. CtrlPtoSurvive fonctionne comme un instrument d’évaluation et d’accès. À l’aide de ce catalogue, l’utilisateur saura mieux évaluer ce qu’il est nécessaire d’acquérir en cas de fin du monde imminente.
  248. Imprimer un format différent graphiquement de la page Web.
  249. Gérer une mise en page Web et une mise en page print (A3).
  250. Visualiser dans le navigateur la mise en page print (emulate css media).
  251. h1. Recherches graphiques du Whole Earth Catalog:
  252. <a data-lightbox='nicolas' href='images/nicolas-12.png'>!thumbs/nicolas-12.png!</a>
  253. h1. Concept de mise en page Web qui s'imprime en poster A3 :
  254. <a data-lightbox='nicolas' href='images/nicolas-08.jpg'>!thumbs/nicolas-08.jpg!</a>
  255. h1. Work in progress du projet :
  256. p. Emulate CSS Media : prévisualisation de la feuille de style pour le print dans Chrome.
  257. <a data-lightbox='nicolas' href='images/nicolas-07.png'>!thumbs/nicolas-07.png!</a>
  258. h1. Construction du poster A3:
  259. <a data-lightbox='nicolas' href='images/nicolas-03.png'>!thumbs/nicolas-03.png!</a>
  260. h1. Construction de la page Web:
  261. <a data-lightbox='nicolas' href='images/nicolas-11.png'>!thumbs/nicolas-11.png!</a>
  262. J'ai ajouté un bouton pour pouvoir imprimer la page Web :
  263. bc.. <button onclick="onimprime()">vite ! j'imprime le poster !</button>
  264. <script>
  265. function onimprime() {
  266. window.print();
  267. }
  268. </script>
  269. p. La mise en page est basée sur "flexbox":http://cssreference.io/flexbox/
  270. <a data-lightbox='nicolas' href='images/nicolas-09.png'>!thumbs/nicolas-09.png!</a>
  271. <a data-lightbox='nicolas' href='images/nicolas-10.png'>!thumbs/nicolas-10.png!</a>
  272. h1. Rendus du poster A3 à partir de la page Web:
  273. Grâce à :
  274. bc..
  275. @media print {
  276. button {
  277. display: none;
  278. }
  279. .logo {
  280. left: 10mm;
  281. top: 5mm;
  282. margin-left: 0;
  283. width: 100px;
  284. height: 100px;
  285. /* background: #000000;*/
  286. }
  287. img {
  288. -webkit-filter: grayscale(1);
  289. filter: grayscale(1);
  290. width: 90%;
  291. }
  292. ...
  293. }
  294. p. j'ai modifié la mise en page de la page Web pour l'adapter au format cible A3.
  295. <a data-lightbox='nicolas' href='images/nicolas-04.png'>!thumbs/nicolas-04.png!</a>
  296. <a data-lightbox='nicolas' href='images/nicolas-05.png'>!thumbs/nicolas-05.png!</a>
  297. <a data-lightbox='nicolas' href='images/nicolas-06.png'>!thumbs/nicolas-06.png!</a>
  298. <a data-lightbox='nicolas' href='images/nicolas-01.png'>!thumbs/nicolas-01.png!</a>
  299. <a data-lightbox='nicolas' href='images/nicolas-02.png'>!thumbs/nicolas-02.png!</a>
  300. h1. html2print:
  301. <a data-lightbox='nicolas' href='images/nicolas-00.jpg'>!thumbs/nicolas-00.jpg!</a>
  302. </section>
  303. <section class='images'>
  304. </section>
  305. <section class='sources'>
  306. * "CtrlPtoSurvive.pdf":sources/CtrlPtoSurvive.pdf
  307. * "nicolastilly.zip":sources/nicolastilly.zip
  308. </section>
  309. </div>
  310. <div class="pagebreak"></div>
  311. <div id='PierreYves' class='user'>
  312. <section class='content'>
  313. h1. update
  314. h2. Pierre-Yves Fave
  315. J'ai fait quelques tests.
  316. J'ai été initié au rudiments des css.
  317. C'est bien agréable d'apprendre comme ça.
  318. Mon but était de récuperer un flux rss issu de wordpress,
  319. et de comprendre comment mettre en page
  320. avec des techniques actuelles.
  321. L'imprimer ou l'extraire pour pouvoir le manipuler,
  322. et continuer à intervenir dessus.
  323. Bachir a programmé une moulinette, devant moi.
  324. et c'est comme ça que je comprends le mieux le code,
  325. dans le temps de son écriture.
  326. Il n'y a rien de tel que le direct.
  327. Sarah Alex et les autres , merci pour vos conseils.
  328. Il me reste des trucs a comprendre,
  329. mais là, je bloquais depuis un bout de temps sur ces trucs.
  330. en div, j'suis con.
  331. </section>
  332. <section class='images'>
  333. * <a data-lightbox='PierreYves' href='images/PierreYves-00.jpg'>!thumbs/PierreYves-00.jpg!</a>
  334. * <a data-lightbox='PierreYves' href='images/PierreYves-01.jpg'>!thumbs/PierreYves-01.jpg!</a>
  335. * <a data-lightbox='PierreYves' href='images/PierreYves-02.jpg'>!thumbs/PierreYves-02.jpg!</a>
  336. * <a data-lightbox='PierreYves' href='images/PierreYves-03.jpg'>!thumbs/PierreYves-03.jpg!</a>
  337. * <a data-lightbox='PierreYves' href='images/PierreYves-04.jpg'>!thumbs/PierreYves-04.jpg!</a>
  338. </section>
  339. <section class='sources'>
  340. * "Mon_poster.pdf":sources/Mon_poster.pdf
  341. * "postsrecup_1.zip":sources/postsrecup_1.zip
  342. * "postsrecup.zip":sources/postsrecup.zip
  343. * "pyRss2html-starter.zip":sources/pyRss2html-starter.zip
  344. * "python-rss2html.zip":sources/python-rss2html.zip
  345. </section>
  346. </div>
  347. <div class="pagebreak"></div>
  348. <div id='Sarah' class='user'>
  349. <section class='content'>
  350. h1. Le workshop
  351. Les technologies du web offrent un environnement de publication ouvert et décentralisé. Les documents web sont ainsi éditables en différents endroits et temporalités par une variété de personnes et d'outils, rompant avec la logique linéaire de l'ère Gutenberg.
  352. Dans cet espace, la notion de flux est centrale: le flux des données, allant de la conversion de documents "bruts" vers la production de multiples formats; le flux des formes produites, conditionné par la struture du HTML et la logique de «cascade» des feuilles de style; ou encore le flux des personnes et les nouveaux moyens de collaboration qui leurs sont offerts par le net.
  353. Si cet espace offre de nouvelles possibilités, cela ne va pas sans poser de questions. Comment penser un design alors sans le subordonner au contenu? Comment publier sur différents formats sans nier la spécificité des différents supports? Comment tester et combiner différentes pistes de mise en page? Comment se partager les taches tout en permettant à tous d'avoir une vue d'ensemble sur l'objet produit?
  354. Nous tenterons ensemble d'imaginer quelques réponses possibles à ces questions en imaginant et développant, à l'aide notamment de HTML, CSS et Javascript, des prototypes pour produire des objets imprimés. Venez simplement avec un ordinateur portable et un navigateur web à jour comme firefox](https://www.mozilla.org/fr/firefox/new/)) et, si possible, avec un éditeur de code comme atom](https://atom.io/))
  355. Questions sous-jacentes
  356. modèles de production non-linéaires (ex. book sprint via ethertoff)
  357. comment penser la spécificité des différents supports de publication (éviter le plus petit dénominateur commun pour le design)
  358. penser et tester différentes versions (branches)
  359. </section>
  360. <section class='images'>
  361. </section>
  362. <section class='sources'>
  363. </section>
  364. </div>
  365. <div class="pagebreak"></div>
  366. <div id='timothee_goguely' class='user'>
  367. <section class='content'>
  368. h1. arena2print
  369. h2. Timothée Goguely
  370. h3. 24.06.17
  371. The idea of this project is to connect "are.na API":https://dev.are.na/documentation with "html2print":http://osp.kitchen/tools/html2print/ to be able to print any Arena channel – like "this one about Ivan Illich":https://www.are.na/csaba-osvath/ivan-illich for example – at any format.
  372. Create a new Rails app called "arena2print".
  373. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-00.png'>!thumbs/timothee_goguely-00.png!</a>
  374. Install the Arena Ruby interface "arena-rb":https://github.com/aredotna/arena-rb into my app.
  375. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-01.png'>!thumbs/timothee_goguely-01.png!</a>
  376. Implement "authentication":https://dev.are.na/documentation/authentication
  377. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-02.png'>!thumbs/timothee_goguely-02.png!</a>
  378. __lunch__
  379. … Moment of doubt, wondering about technical difficulty…
  380. Why not develop a Chrome extension instead of a webapp?
  381. A simple @arena2print@ button may be the most effective solution.
  382. Rough pseudo-code of the extension script:
  383. # parse HTML to select all blocks
  384. # extract and store all block’s content
  385. # create a new HTML page from this content
  386. # add custom print CSS
  387. # launch browser print modal window!
  388. Need to read and watch some tutorials to get an idea about the technical difficulty…
  389. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-03.png'>!thumbs/timothee_goguely-03.png!</a>
  390. Ok, let’s try "this one":https://robots.thoughtbot.com/how-to-make-a-chrome-extension
  391. Yeah, I just write my first Chrome Extension!
  392. Right now, it’s only an dumb @alert()@ script, but let’s continue…
  393. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-04.png'>!thumbs/timothee_goguely-04.png!</a>
  394. All right, after 2 hours of try and fail, I’m now able to get channel’s id so I can get from Arena API a JSON with all channel’s contents. Now I need to store the data that interests me and them to build an HTML template.
  395. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-05.png'>!thumbs/timothee_goguely-05.png!</a>
  396. h3. 25.06.17
  397. Yesterday, I have succeeded in displaying all the block’s content of a channel on pages.
  398. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-06.png'>!thumbs/timothee_goguely-06.png!</a>
  399. Here is what I need to do today:
  400. * implement conditionnal statement for detecting and displaying images, attachments and so on.
  401. * fixing multi-paging issue for blocks containing long text: the easiest solution would be to have only I long page containing all the blocks and let the browser splitting it on different pages on print with @page-break-before: always@ on titles.
  402. * displaying the page on top of Arena channel, not instead of it, so the user doesn’t lose the context.
  403. * crafting CSS to improve the layout, hierarchy and typography
  404. * convert datetime into a human readable format
  405. * fixing Chrome Extension behaviour: it needs to be triggered only if the active tab url is an Arena channel url and when the user is clicking on the extension button.
  406. Here we go!
  407. __lunch__
  408. * Display umages and attachments > done
  409. * Multi-page blocks > done
  410. * Layout > in progress
  411. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-07.png'>!thumbs/timothee_goguely-07.png!</a>
  412. Well, it’s good enough now, I guess I can stop here for today. Maybe just refactoring some code. And I just realized that I worked in A5 instead of A4 so I needed to print my PDF at 141%, but nevermind… Here is the result fo these two days of work:
  413. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-08.png'>!thumbs/timothee_goguely-08.png!</a>
  414. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-09.png'>!thumbs/timothee_goguely-09.png!</a>
  415. <a data-lightbox='timothee_goguely' href='images/timothee_goguely-10.png'>!thumbs/timothee_goguely-10.png!</a>
  416. And don’t know yet if I will continue to develop this little project (there’s still a lot of things to fix) but I’m glad to have started to understand how to build a Chrome Extension – it was simpler than I thought.
  417. So thank you OLA, OSP & Synesthésie for organizing this workshop: a lot of very interesting and inspiring insights, references and approaches. I definitely need to read Ivan Illich’s book about conviviality.
  418. Keep up the good work!
  419. PS: Ok, refactoring is done! I also commented my code. The only crucial thing I didn’t achieve is to trig the extension not on page load but when the user is clicking on the extension’s button. I will try to figure out how to do it during the next week, and it will be an __effective__ and __useful__ Chrome Extension!
  420. </section>
  421. <section class='images'>
  422. </section>
  423. <section class='sources'>
  424. * "arena2print.pdf":sources/arena2print.pdf
  425. * "arena2print.zip":sources/arena2print.zip
  426. </section>
  427. </div>
  428. <div class="pagebreak"></div>
  429. <div id='pad' class='user'>
  430. <h1>Pad</h1>
  431. <section class='content'>
  432. h1(#workshop-ola-html2print). Workshop Ola HTML2Print
  433. https://listes.domainepublic.net/listinfo/html2print
  434. "Cookbook":http://pads.osp.kitchen/p/ola-cookbook
  435. h2(#participants). Participants
  436. * Sarah
  437. * Nicolas
  438. * Pierre&#45;Yves
  439. * Elie
  440. * Kenji
  441. * Timothée
  442. * Bach
  443. * Gab
  444. * Elodie _Kévin _Angélique
  445. h2(#markdown-primer). Markdown primer
  446. * "$":https://daringfireball.net/projects/markdown/
  447. * "$":https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
  448. <pre class="markdown">
  449. #titre 1
  450. ## titre 2 -&gt; 6
  451. ![la legende](le/chemin/vers/le/fichier.jpeg)
  452. [texte du lien](http://tapage.com)
  453. *bold*²
  454. **italique**
  455. - liste
  456. - liste
  457. `code`
  458. </pre>
  459. Post css (// sass) Utilisation du le navigateur web Chromium fortement conseillée pour utiliser htmltoprint.css car il prend en compte directement les info renseignées ds le css tel que taille de la page, affichage du fond de page, etc.
  460. h2(#paquet-de-base). Paquet de base
  461. https://cloud.osp.kitchen/s/siUuVs7UD93ZeS0
  462. télécharger le dossier html2print.tiny
  463. découverte des variables css o&#95;O
  464. <pre>
  465. :root{
  466. --ma-variable:210mm;
  467. }
  468. @page{
  469. width: var(--ma-variable);
  470. }
  471. </pre>
  472. En fait, ce cas précis ne marche pas :P Voir "$":https://stackoverflow.com/questions/44735420/using-custom-properties-with-page-rules
  473. h2(#documentation). Documentation
  474. h3(#howto). howto
  475. readme : https://figureslibres.io/gogs/bachir/ola4doc
  476. h3(#rendu). rendu
  477. 192.168.99.35:8000
  478. h3(#textile). textile
  479. https://txstyle.org/
  480. h2(#mise-en-commun-projets-sam-14-juin-14h). mise en commun projets (sam 14 juin, 14h)
  481. h3(#osp). OSP
  482. prendre cet occase pour faire un cookbook de htmltoprint &#45; césures &#45; conversion RVB &#45;&#45;&gt; CMJN &#45; faire couler du txt d'une page à une autre
  483. h3(#elie-kenji). Elie &amp; Kenji
  484. forme générative BD en scketch processing booklate de l'évolution de cette forme Lafkon make art
  485. h3(#angelique). Angelique
  486. contenu du wordpress de PY ou faire de la documentation html2print
  487. h3(#timothée). Timothée
  488. utiliser are.na (ce site est un genre de pinterest pour les graphistes) extraire un contenu web pour créer des booklates finalité: creer l'outil qui servirait à faire ça (codé en ruby) Scraping mettre en valeur les recherches faites par d'autres
  489. h3(#kévin-t). Kévin T
  490. documentation sur htmltoprint ou récupérer contenu d'une page wikipédia et si possible récupérer l'historique complet des modifications de la page (depuis sa création jusqu'à auj) et les mettre en forme
  491. http://epicpedia.org/
  492. !http://annemiekevanderhoek.nl/werk/epic03.jpg(epicpedia)! transfo des scripts de téâtre
  493. h3(#bachir). Bachir
  494. Projet d'écriture. Transposer &quot;La convivialité&quot; de Ivan Illitch qui a été écrit dans les années 70, en 2017, en parlant de choses actuelles et plus particulièrement du numérique.
  495. h3(#gabriel). Gabriel
  496. Utiliser le workshop comme prétexte pour écrire rapport de son stage chez OSP
  497. Tenais un journal de ses apprentissages, un retour sur expériences.
  498. confrontation txt bruts &#45; commentaires
  499. mini readme sur chacunes des choses qu'il a utilisées et qui pourraient intéresser d'autres prsn.
  500. Avoir deux version en co&#45;existance, une web et une print
  501. h3(#élodie). Élodie
  502. Retravailler le site internet de synesthésie. Peut&#45;être en faire une version imprimable. Se familiariser au code.
  503. h3(#nicolas). Nicolas
  504. "Whole Earth Catalogue":https://duckduckgo.com/?q=whole+earth+catalogue&iax=1&ia=images
  505. Aux sources de l'utopie numérique: de la contre culture à la cyberculture, Stewart Brand, un homme d'influence
  506. "Aux sources de l'utopie numérique, Fred Turner":http://cfeditions.com/utopieNumerique/
  507. Outil dans l'esprit du Whole earth catalog, réactiver cette idée.
  508. Plans pour construction de machines, comment se protéger de &#95;&#95;&#95;
  509. Grille dans laquelle injecter du contenu pour faire cet objet catalogue (forme non définie pour l'instant: poster, magazine)
  510. "Libre Création &#45; Libre Design":http://projets.esadhar.fr/usable/dashboard/
  511. "Libre Création &#45; Libre Design (sources)":https://esadhar.net/gogs/libre-creation_libre-design/usable
  512. ESADHaR, projet de recherche avec des étudiants. Test d'outils libres pour la création graphiques, qu'ils aient été initialement créés dans ce but ou non. projets.esadhar.fr/usable/dashboard
  513. Fonts:
  514. * http://osp.kitchen/foundry/fluxisch&#45;else/
  515. * https://github.com/uplaod/YoungSerif ou http://areyoubeingserved.constantvzw.org/static/fonts/YoungSerif&#45;Regular.otf (version modifiée par Stéphanie avec la a minuscule plus)
  516. h3(#pierre-yves). Pierre&#45;Yves
  517. Comment transcrire l'Idée de calques // scribus, indesign dans/avec htmltoprint faire des boites imbriquées les unes dans les autres qui changent de couleur, qqch de génératif //dearchrome project [Alex]
  518. "dearchrome":https://web.archive.org/web/20150220014329/http://www.phil-cao.com:80/dearchrome/lines/
  519. "tempsdereaction":https://tempsdereaction.wordpress.com/
  520. est&#45;ce que en veut reproduire en html le processus mis en place dans ce blog ou prendre des contenus du blog pour les mettre en page?
  521. imprimer une version de ce blog sous forme de post&#45;it ou de poster par exemple, avoir un format adaptable // automatisation
  522. h2(#show-and-tell). Show and tell
  523. h3(#bachir-1). Bachir
  524. Projet inspiré de Gitbook
  525. Libriis https://figureslibres.io/gogs/bachir/libriis
  526. h3(#élodie-1). Élodie
  527. https://ordigami.net/
  528. version écran on voit les faces du cube côte&#45;côte et en version
  529. h3(#nicolas-1). Nicolas
  530. http://perles&#45;du&#45;bon&#45;coin.fr/
  531. &#42;&#42;Kevin http://csswarp.eleqtriq.com/
  532. Lucile https://studiomoniker.com/projects/click&#45;click&#45;click https://clickclickclick.click/#e8d0c8a17bce3955716c16b413ee946b
  533. </section>
  534. </div>
  535. <div class="pagebreak"></div>
  536. <div id='cookbook' class='user'>
  537. <h1>CookBook</h1>
  538. <section class='content'>
  539. ## CSS obscure rule: margin&#45;top of
  540. <h1>
  541. affects parent's margin
  542. As of why they decided that this elements should behave like this it is still unclear for me; but at least we were able to find a rule that applies to collapsing margins: &quot;In simple terms, this definition indicates that when the vertical margins of two elements are touching, only the margin of the element with the largest margin value will be honored, while the margin of the element with the smaller margin value will be collapsed to zero Basically in our example on the original question, the biggest margin&#45;top is the one of the
  543. <h1>
  544. therefore taken and applied to the parent
  545. <div>
  546. . This rule is cancelled for: &#42; Floated elements &#42; Absolutely positioned elements &#42; Inline&#45;block elements &#42; Elements with overflow set to anything other than visible (They do not collapse margins with their children.) &#42; Cleared elements (They do not collapse their top margins with their parent block's bottom margin.) &#42; The root element That is the reason why overflow:hidden solved the issue.
  547. h2(#css-grids). CSS grids
  548. https://jsfiddle.net/zw9c7owa/ https://jsfiddle.net/zw9c7owa/3/ https://jsfiddle.net/zw9c7owa/4/ https://jsfiddle.net/zw9c7owa/6/ https://jsfiddle.net/zw9c7owa/7/ https://jsfiddle.net/zw9c7owa/8/ https://jsfiddle.net/zw9c7owa/12/ &#45;&gt; yeah! https://jsfiddle.net/zw9c7owa/13/ https://jsfiddle.net/zw9c7owa/14/ https://jsfiddle.net/zw9c7owa/15/ https://jsfiddle.net/zw9c7owa/16/ https://jsfiddle.net/zw9c7owa/17/
  549. Emulate CSS media print : https://uxdesign.cc/i&#45;totally&#45;forgot&#45;about&#45;print&#45;style&#45;sheets&#45;f1e6604cfd6
  550. h2(#processing-connections). processing connections
  551. https://research.lafkon.net/projects/dit/ https://research.lafkon.net/projects/lac2008/
  552. h3(#visualer-les-media-print-en-redimensionnant-la-page). visualer les media print en redimensionnant la page
  553. &#64;media screen and (max&#45;width: 699px) or media print { ... }
  554. h3(#john-resig-micro-template). John Resig Micro template
  555. Si jamais vous avez besoin de générer du HTML en javascript...
  556. https://johnresig.com/blog/javascript&#45;micro&#45;templating/
  557. h2(#césures). Césures
  558. http://gitlab.constantvzw.org/osp/tools.html5lib&#95;typogrify
  559. Les version récentes de webkit gèrent les césures
  560. interdire les césures
  561. bc. -webkit-hyphens: none;
  562. -moz-hyphens: none;
  563. hyphens: none;
  564. autoriser les césures
  565. bc. -webkit-hyphens: auto;
  566. Gérer les césures
  567. bc. -webkit-hyphenate-limit-before: 2; /* 2 caractères minimum en fin de ligne, donc en début de mot */
  568. -webkit-hyphenate-limit-after: 2; /* 3 caractères minimum en début de ligne, donc en fin de mot */
  569. -webkit-hyphenate-limit-lines: 4; /* 4 lignes consecutives max */
  570. NE PAS OUBLIER D'INSTALLER HYPHEN!
  571. sur arch
  572. @sudo pacman -S hyphen@ ou @yaourt -S hyphen@
  573. h2(#css-variables-in-page). CSS variables in &#64;page
  574. https://stackoverflow.com/questions/44735420/using&#45;custom&#45;properties&#45;with&#45;page&#45;rules
  575. h2(#convertir-tous-les-fichiers-html-en-markdown). Convertir tous les fichiers HTML en Markdown
  576. attention, vous allez perdre le contenu non&#45;sémantique (classes, attributs, etc.) mais ça peut justement être une manière de nettoyer son code
  577. for file in &#42;.html; do pandoc &#45;&#45;from html &#45;&#45;to markdown &#45;&#45;output &quot;<span class="math">{file%.*}.md&quot; &quot;</math>file&quot;; done
  578. h2(#html2print-readme). HTML2Print readme
  579. h3(#exemples-de-readme-visuels). exemples de readme visuels
  580. * http://organon.osp.kitchen/70
  581. * http://blog.lavillahermosa.com/brass&#45;%E2%86%92&#45;print&#45;tool&#45;v1/
  582. * http://design.lavillahermosa.com/works&#45;288&#45;le&#45;brass&#45;2014
  583. * http://blog.artsaucarre.be/artsnumeriques/2016/10/21/memory&#45;learning&#45;archives&#45;et&#45;bidouillages&#45;workshop&#45;au&#45;mundaneum&#45;24&#45;261016/
  584. * http://lorainefurter.net/readme/readme&#45;workflows.html
  585. * https://hpg.io/
  586. * https://youtu.be/eIgX6sPOqCY?t=2m40s
  587. <iframe width="560" height="315" src="https://youtu.be/eIgX6sPOqCY?t=2m40s" frameborder="0" allowfullscreen>
  588. </iframe>
  589. !http://hpg.io/img/multi_format.png! https://upload.wikimedia.org/wikipedia/commons/4/41/FACTSHEET&#45;EN.pdf https://research.lafkon.net/content/2.projects/6.wtf/99.wtf&#95;generator&#95;1&#95;00&#95;WEB.gif
  590. http://lorainefurter.net/readme/assets/readme/workflows/DigitalPublishingToolkit.png
  591. h3(#workflow-dun-numéro-de-médor). workflow d'un numéro de Médor
  592. * http://organon.osp.kitchen/90
  593. h3(#python-rss-to-html). python rss to html
  594. https://figureslibres.io/gogs/bachir/python&#45;rss2html
  595. <pre class="python">
  596. #!/usr/bin/python
  597. # -*- coding: utf-8 -*-
  598. import feedparser
  599. from bs4 import BeautifulSoup
  600. def main():
  601. # url du flux rss
  602. tpsreac_feed_url = &quot;https://tempsdereaction.wordpress.com/feed/&quot;
  603. # on aspire le flux rss avec feedparser
  604. tpsreac_feeds = feedparser.parse(tpsreac_feed_url)
  605. # base template du fichier html
  606. base = &quot;&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;&quot;
  607. # create dom for html file base
  608. base_dom = BeautifulSoup(base, 'html.parser')
  609. # page base template
  610. page_base = &quot;&lt;section class='page'&gt;&lt;/section&gt;&quot;
  611. # boucle sur les entrées racine du flux
  612. for key in tpsreac_feeds:
  613. print(key)
  614. # on boucle sur les entrées du flux rss
  615. for entrie in tpsreac_feeds['entries']:
  616. print('- - - - -',entrie['title'])
  617. # just display entrie keys
  618. for key in entrie:
  619. print(key)
  620. # entries.extend( feed[ &quot;items&quot; ] )
  621. # create page dom
  622. p_dom = BeautifulSoup(page_base, 'html.parser')
  623. # add content in page dom
  624. p_dom.section.append(entrie['summary'])
  625. # add newly created page dom to html dom
  626. base_dom.body.append(p_dom)
  627. # create main html file from filled base html dom
  628. with open(&quot;index.html&quot;, 'w') as fp:
  629. fp.write(base_dom.prettify(formatter=None))
  630. if __name__ == &quot;__main__&quot;:
  631. main()
  632. </pre>
  633. h3(#python-pandoc-and-template). python pandoc and template
  634. https://figureslibres.io/gogs/bachir/gitbook&#45;html2print
  635. <pre class="python">
  636. #!/usr/bin/python
  637. # -*- coding: utf-8 -*-
  638. from bs4 import BeautifulSoup
  639. import pypandoc
  640. def main():
  641. # create main html dom from template
  642. template_f = open(&quot;templates/main.tpl.html&quot;, &quot;r&quot;)
  643. template_html = template_f.read()
  644. template_dom = BeautifulSoup(template_html, 'html.parser')
  645. pdoc_args = ['--mathjax',
  646. '--smart']
  647. pdoc_filters = []
  648. output = pypandoc.convert_file(&quot;lechemin/de/monfichier.md&quot;,
  649. to='html5',
  650. format='markdown+header_attributes+link_attributes+bracketed_spans',
  651. extra_args=pdoc_args,
  652. filters=pdoc_filters)
  653. # outputfile=out_f)
  654. # print(&quot;output :\n&quot;+output)
  655. output_dom = BeautifulSoup(output, 'html.parser')
  656. template_dom.append(output_dom)
  657. # create main html file from filled template html dom
  658. html_f = 'monfichier.html'
  659. with open(html_f, 'w') as fp:
  660. fp.write(template_dom.prettify(formatter=None))
  661. if __name__ == &quot;__main__&quot;:
  662. main()
  663. </pre>
  664. h2(#ajuster-une-image). Ajuster une image
  665. voir https://developer.mozilla.org/en&#45;US/docs/Web/CSS/object&#45;fit et https://developer.mozilla.org/en&#45;US/docs/Web/CSS/object&#45;position
  666. h2(#css-regions). CSS regions
  667. h1(#flow-main). flow&#45;main {
  668. bc. -webkit-flow-into: flow-main;
  669. flow-into: flow-main;
  670. }
  671. .flow&#45;main { &#45;webkit&#45;flow&#45;from: flow&#45;main; flow&#45;from: flow&#45;main; }
  672. ex: https://jsfiddle.net/asmqaheq/
  673. </section>
  674. </div>
  675. <div class="pagebreak"></div>
  676. </section>