Histoire de ta bêtise: presque fini

This commit is contained in:
Karchnu 2022-05-08 05:40:45 +02:00
parent f65e71cf75
commit fdd9d86188
5 changed files with 2897 additions and 23 deletions

View File

@ -1,25 +1,46 @@
SRC ?= haskelltut SRC ?= haskelltut
# Let's allow different implementations to be tested.
BINPIC ?= pic
BINREFER ?= refer
BINSOELIM ?= soelim
BINPRECONV ?= preconv
BINEQN ?= eqn
BINGHIGHLIGHT ?= ./bin/ghighlight
BINBUSGRAP ?= ./bin/busgrap.pl
BINGRAP ?= grap
BINROFF ?= groff
export BINPIC BINREFER BINSOELIM BINPRECONV BINEQN BINGHIGHLIGHT BINBUSGRAP BINGRAP BINROFF
ODIR ?= . ODIR ?= .
BIBLIOGRAPHY ?= bibliography BIBLIOGRAPHY ?= bibliography
BIBLIOGRAPHY_PROCESSED ?= /tmp/bib
ALLSRC = $(shell find . -name "*.ms") ALLSRC = $(shell find . -name "*.ms")
SOELIM_OPTS ?= SOELIM_OPTS ?=
SOELIM = soelim $(SOELIM_OPTS) SOELIM = $(BINSOELIM) $(SOELIM_OPTS)
# Custom script, currently to replace unbreakable spaces by \SP.
CUSTOM_OPTS ?=
CUSTOM ?= ./bin/custom $(CUSTOM_OPTS)
#CUSTOM_BIS_OPTS ?=
#CUSTOM_BIS ?= ./bin/utf8-to-ms.sh $(CUSTOM_BIS_OPTS)
PRECONV_OPTS ?= -e utf-8 PRECONV_OPTS ?= -e utf-8
PRECONV = preconv $(PRECONV_OPTS) PRECONV = $(BINPRECONV) $(PRECONV_OPTS)
EQN_OPTS ?= -Tpdf EQN_OPTS ?= -Tpdf
EQN = eqn $(EQN_OPTS) EQN = $(BINEQN) $(EQN_OPTS)
# source-highlight stuff # source-highlight stuff
# GH_INTRO: instructions before each source code provided by source-highlight # GH_INTRO: instructions before each source code provided by source-highlight
# GH_OUTRO: ------------ after ---- ------ ---- -------- -- ---------------- # GH_OUTRO: ------------ after ---- ------ ---- -------- -- ----------------
# GH_INTRO/GH_OUTRO: values are separated by ';' # GH_INTRO/GH_OUTRO: values are separated by ';'
# #
GH_INTRO := .b1;.nr DI 0;.DS I;.fam C CODE_FONT_FAMILY ?= C
GH_INTRO := .b1;.nr DI 0;.DS I;.fam $(CODE_FONT_FAMILY)
GH_OUTRO := .fam;.DE;.b2 GH_OUTRO := .fam;.DE;.b2
# #
export GH_INTRO export GH_INTRO
@ -31,20 +52,24 @@ export SHOPTS
# ghighlight brings `source-highlight` to troff # ghighlight brings `source-highlight` to troff
GHIGHLIGHT_OPTS ?= GHIGHLIGHT_OPTS ?=
GHIGHLIGHT = ./bin/ghighlight $(GHIGHLIGHT_OPTS) GHIGHLIGHT = $(BINGHIGHLIGHT) $(GHIGHLIGHT_OPTS)
# BUSGRAP brings pie charts to troff
BUSGRAP_OPTS ?=
BUSGRAP = $(BINBUSGRAP) $(BUSGRAP_OPTS)
GRAP_OPTS ?= GRAP_OPTS ?=
GRAP = grap $(GRAP_OPTS) GRAP = $(BINGRAP) $(GRAP_OPTS)
PIC_OPTS ?= -Tpdf PIC_OPTS ?= -Tpdf
PIC = pic $(PIC_OPTS) PIC = $(BINPIC) $(PIC_OPTS)
# -P => move ponctuation after reference # -P => move ponctuation after reference
# -S => label and bracket-label options # -S => label and bracket-label options
# -e => accumulate (use a reference section) # -e => accumulate (use a reference section)
# -p bib => bibliography file # -p bib => bibliography file
REFER_OPTS ?= -PS -e -p $(BIBLIOGRAPHY) REFER_OPTS ?= -PS -e -p $(BIBLIOGRAPHY_PROCESSED)
REFER = refer $(REFER_OPTS) REFER = $(BINREFER) $(REFER_OPTS)
# -k => iconv conversion (did it ever worked?) # -k => iconv conversion (did it ever worked?)
# -ms => ms macro # -ms => ms macro
@ -58,20 +83,29 @@ REFER = refer $(REFER_OPTS)
# TODO: no change with or without the following options -P -e # TODO: no change with or without the following options -P -e
# This has to be inverstigated: how to make PDFs look nice in browsers? # This has to be inverstigated: how to make PDFs look nice in browsers?
# -P -e => provide "-e" to gropdf to embed fonts # -P -e => provide "-e" to gropdf to embed fonts
GROFF_OPTS ?= -ms -t -Tpdf -U -mspdf -mpdfmark -M ./bin -P -e ROFF_OPTS ?= -ms -t -Tpdf -U -mspdf -mpdfmark -M ./bin -P -e
GROFF = groff $(GROFF_OPTS) ROFF = $(BINROFF) $(ROFF_OPTS)
$(SRC).pdf: $(BIBLIOGRAPHY_PROCESSED): $(BIBLIOGRAPHY)
@# Let's process the bibliography file
@echo "Let's process the bibliography file"
$(PRECONV) < $(BIBLIOGRAPHY) > $(BIBLIOGRAPHY_PROCESSED)
$(SRC).pdf: $(BIBLIOGRAPHY_PROCESSED)
sleep 0.1
$(SOELIM) < $(SRC).ms |\ $(SOELIM) < $(SRC).ms |\
$(CUSTOM) |\
$(BUSGRAP) |\
$(PRECONV) |\ $(PRECONV) |\
$(REFER) |\
$(EQN) |\ $(EQN) |\
$(GHIGHLIGHT) |\ $(GHIGHLIGHT) |\
$(GRAP) |\ $(GRAP) |\
$(PIC) |\ $(PIC) |\
$(REFER) |\ $(PRECONV) |\
$(GROFF) > $(ODIR)/$@ $(ROFF) > $(ODIR)/$@
# Keep options in memory for the recursive 'make' call # Keep options in memory for the recursive 'make' call
export SOELIM_OPTS PRECONV_OPTS EQN_OPTS GHIGHLIGHT_OPTS GRAP_OPTS PIC_OPTS REFER_OPTS export SOELIM_OPTS PRECONV_OPTS EQN_OPTS GHIGHLIGHT_OPTS GRAP_OPTS PIC_OPTS REFER_OPTS
serve: serve:
find . -name "*.ms" | entr gmake -B $(SRC).pdf find . | entr gmake $(SRC).pdf

2684
bin/busgrap.pl Executable file

File diff suppressed because it is too large Load Diff

57
bin/custom Executable file
View File

@ -0,0 +1,57 @@
#!/bin/sh
# From a single byte in hexadecimal per line to lines ending with 0a
# (hex for '\n'). Ex: 61 62 63 0a
# Required to easily match (and remove) multi-byte characters.
regroup_lines() awk '
BEGIN {
line_start=1
}
{
if (line_start == 1)
line = $1;
else
line = line " " $1;
line_start = 0;
if ($1 == "0a") {
print line;
line_start = 1
}
}
END {
if (line_start == 0)
print line
}
'
uppercase() tr "[a-z]" "[A-Z]"
# One column decimal to plain text.
from_dec() awk '{ printf ("%c", $1 + 0) }'
# Replace spaces by line returns, outputs a single column.
spaces_to_line_returns() tr " " "\n"
# Convert input into hexadecimal and a single byte per line.
to_hex_one_column() { od -An -tx1 | awk '{for(i=1;i<=NF;i++){ print $i }}'; }
# One column hexa to one column decimal.
hex_to_dec() { { echo "obase=10;ibase=16;" ; cat ; } | bc ; }
# Reverse hexadecimal (with space separators) to original value.
from_hex() { spaces_to_line_returns | uppercase | hex_to_dec | from_dec; }
# Replace unbreakable spaces by '\ '.
replace_unbreakable_spaces() sed "s/c2 a0/5c 20/g"
custom_mods(){
to_hex_one_column | # Input to hexadecimal, 1-byte representation per line.
regroup_lines | # From 1-byte to x-byte lines with space separators.
replace_unbreakable_spaces | # Replace unbreakable spaces by '\ '.
from_hex # Convert back from hex (x-byte per line, space separator).
}
custom_mods

View File

@ -1,5 +1,6 @@
.so macros.ms .so macros.ms
.so book-summary-macros.ms .so book-summary-macros.ms
.mso fr.tmac
.TITLE Histoire de ta bêtise .TITLE Histoire de ta bêtise
.AUTHOR François Bégaudeau .AUTHOR François Bégaudeau
.SUMMARIZED_BY_FR Philippe Pittoli .SUMMARIZED_BY_FR Philippe Pittoli
@ -87,6 +88,61 @@ J'ajoute volontiers que ce délire s'est désormais répandu à bien des milieux
Ce besoin de tout voir sur un prisme moral, devoir se positionner pour ou contre des idées, une vraie immaturité émotionnelle. Ce besoin de tout voir sur un prisme moral, devoir se positionner pour ou contre des idées, une vraie immaturité émotionnelle.
.FOOTNOTE2 .FOOTNOTE2
La bourgoisie matraque les prolo, mais absorbe le situationnisme, un million de migrants pour l'Allemagne pour sauver sa démographie, le management collaboratif pour absorber la délibération égalitaire, etc.
La liste des récupérations est longue.
Les discours subversifs sont infantilisés, en les mettant en scène pour les humilier.
Parce que le prolo fait peur, le bourgeois devient « patriarche cool » et donne congés payés, allocations chômage, bourses scolaires, soins.
Tout ça pour cacher que le système a des cadences laborieuses, énormément de chômage, une ségrégation scolaire, des métiers qui meurtrissent.
Mais comme le travail ne crée plus autant de marges, on taxe davantage le travail, le coût de la vie augmente pour nourrir la marge du bourgeois.
En page 65, Bégaudeau annonce la couleur : dès que l'on rentre dans une phase difficile économiquement, le bourgeois devient complètement libéral, passe à
.I "En Marche"
et met de côté le Parti Socialiste qui n'était qu'une
.B névrose .
Page 66, référence à Coluche : le travailleur pauvre c'est pas plus mal que si c'était pire.
Page 68, critique de l'hypocrisie.
Plan social, sauvegarde de l'emploi => licenciement.
Restructuration => compression de personnel.
Modernisation => privatisation.
Le bourgeois pense parfois sincèrement ses conneries, par conséquent même quand il ne ment pas, il paraît creux.
Aussi, on parle davantage de l'esthétique bourgeois que du fond, peut-être que l'hypocrisie serait trop flagrante.
Page 80, Bégaudeau parle de Vanessa Paradis, qui n'est pas connue pour ses œuvres pas-si-mémorables, mais parce qu'elle apparaît dans plus de 150 couvertures de magazines.
Elle est « connue pour être célèbre ».
Les magazines ne reflètent pas sa notoriété, ils la crée de toute pièce\*[*].
.FOOTNOTE1
Et ceci me fait fortement penser à Macron.
.FOOTNOTE2
Tout au long du livre, Bégaudeau rappelle que l'art est tout autant apprécié qu'il raconte quelque chose sur nous-même.
On apprécie une œuvre autant qu'on s'apprécie nous-même aimant cette œuvre.
Page 82, Bégaudeau est visionnaire : il a déjà capté qu'on allait conditionner les salaires des profs à leur mérite, à leurs performances, tout simplement parce qu'il est insupportable pour les bourgeois qu'une personne touche un salaire simplement pour faire leur travail (plutôt que pour se soumettre à la volonté de quelqu'un, je suppose).
La valeur d'un geste doit être liée à une valeur marchande, sinon il ne la voit pas, il ne comprend pas.
Le bourgeois ne voit d'ailleurs plus que le commerce, et son monde devient flou : le sourire de la boulangère est-il sincère ou est-ce un argument de vente\*[*] ?
.FOOTNOTE1
Cela rappelle fortement le livre
.I "Religion poisons everything" " »." "« "
.FOOTNOTE2
Page 95 : Macron n'est pas moderne, il est neuf.
Très juste.
Page 100 : le bourgeois a peur des extrêmes, lui est dans la nuance.
Sauf bien évidemment pour parler des extrêmes, qui sont extrêmes de manière absolue.
Ou bien du fait qu'un patron soit nécessaire et doive gagner plus que ses employés.
Ou encore que la sortie de l'euro provoquera une troisième guerre mondiale.
Bien entendu, il faut réduire les dépenses publiques.
Bien entendu également, la France est une démocratie, etc\*[*].
.FOOTNOTE1
Fait intéressant, Bégaudeau parlait déjà en janvier 2019 des vaccins, en disant que toute remise en cause tenait forcément du complotisme pour un petit bourgeois.
Je trouve cela assez juste, dans la mesure où se poser simplement la question est mal vu quand bien même la conclusion après une étude rationnelle de la situation amènerait à vouloir un statu quo, c'est-à-dire à être d'accord avec leur usage tel qu'il est fait actuellement.
Le simple fait de poser une question est déjà presque réprimandé, et c'est un problème.
.FOOTNOTE2
Bref, pour quelqu'un de modéré, il y a comme des absolus indépassables, qui ne peuvent être remis en question, qui ne peuvent même pas être discutés.
Pour quelqu'un qui se dit modéré, cela fait un peu tâche.
.SECTION Expressions vides de sens .SECTION Expressions vides de sens
.PARAGRAPH_INDENTED .PARAGRAPH_INDENTED
Bégaudeau critique les expressions toutes faites, sans substance, qui tentent d'attaquer ou diminuer un point de vue. Bégaudeau critique les expressions toutes faites, sans substance, qui tentent d'attaquer ou diminuer un point de vue.
@ -135,6 +191,14 @@ Ce passage montre son point de vue, et c'est un peu tout.
Autre exemple, à un moment il parle du racisme engendré par le capitalisme. Autre exemple, à un moment il parle du racisme engendré par le capitalisme.
Autant la prédation du libéralisme me semble évidente, autant le racisme du capitalisme beaucoup moins. Autant la prédation du libéralisme me semble évidente, autant le racisme du capitalisme beaucoup moins.
Page 66 à 67, Bégaudeau parle des attentats de 2015, le fait que si on parle de « banlieue islamiste » c'est forcément pour parler des « arabes ».
Pour lui, se désolidariser des islamistes et dire fermement qu'on ne veut pas de ça parce qu'on s'attaque à nos valeurs, c'est en réalité être raciste.
Je ne suis pas d'accord, je pense que c'est un faux dilemme un peu ridicule.
Il va même jusqu'à dire qu'on ne considérerait pas le français qui ne boit pas comme un français, ce qui est complètement abusé selon moi.
La culture islamiste, on voit quand même à quoi ça ressemble (voile intégral pour les femmes, interdiction de la musique, etc.), et tu n'es pas islamiste-compatible juste parce que tu ne bois pas.
C'est quand même dommage d'avoir un livre par ailleurs plutôt lucide et modéré pour se vautrer dans des avis tranchés d'une façon aussi absurde.
Tout comme, page 75, il parle de communautarisme (sous-entendu presque racial) du bourgeois, qui préférerait presque être métisse pour moins qu'on reconnaisse son milieu très fermé : la formulation est au moins maladroite.
.SECTION Conclusion .SECTION Conclusion
.PARAGRAPH_INDENTED .PARAGRAPH_INDENTED
À plusieurs reprise Bégaudeau rappelle l'hypocrisie ambiante. À plusieurs reprise Bégaudeau rappelle l'hypocrisie ambiante.

View File

@ -18,6 +18,7 @@ accumulate
.defcolor darkblue rgb 0.3 0.3 0.7 .defcolor darkblue rgb 0.3 0.3 0.7
.defcolor darkred rgb 0.7 0.3 0.3 .defcolor darkred rgb 0.7 0.3 0.3
.defcolor black rgb 0 0 0 .defcolor black rgb 0 0 0
.defcolor color_box rgb 1 1 .6
. .
. \" with semantic . \" with semantic
.defcolor citation rgb 0.4 0.4 0.4 .defcolor citation rgb 0.4 0.4 0.4
@ -25,6 +26,7 @@ accumulate
.defcolor explanation rgb 0.7 0.4 0.4 .defcolor explanation rgb 0.7 0.4 0.4
.defcolor explanationbar rgb 0.8 0.3 0.3 .defcolor explanationbar rgb 0.8 0.3 0.3
. .
.defcolor specialcolor_command rgb 0.7 0.3 0.3
.defcolor specialcolor_type rgb 0.6 0.3 0.5 .defcolor specialcolor_type rgb 0.6 0.3 0.5
.defcolor specialcolor_constructor rgb 0.1 0.5 0.2 .defcolor specialcolor_constructor rgb 0.1 0.5 0.2
.defcolor specialcolor_module rgb 0.1 0.5 0.2 .defcolor specialcolor_module rgb 0.1 0.5 0.2
@ -34,6 +36,7 @@ accumulate
.defcolor specialcolor_shine rgb 0.3 0.3 0.7 .defcolor specialcolor_shine rgb 0.3 0.3 0.7
. .
. \" SIZES . \" SIZES
.nr specialsize_command 10
.nr specialsize_type 8 .nr specialsize_type 8
.nr specialsize_constructor 8 .nr specialsize_constructor 8
.nr specialsize_module 8 .nr specialsize_module 8
@ -43,6 +46,7 @@ accumulate
.nr specialsize_shine 11 .nr specialsize_shine 11
. .
. \" FONTS . \" FONTS
.ds specialfont_command CW
.ds specialfont_type CW .ds specialfont_type CW
.ds specialfont_constructor CW .ds specialfont_constructor CW
.ds specialfont_module CW .ds specialfont_module CW
@ -165,8 +169,14 @@ accumulate
. .
. .
.de FRAC .de FRAC
.ie '\\$3'' \{\
\v'-.7m\s[\\n(.s*6u/10u]+.7m'\\$1\v'-.7m\s0+.7m'\ \v'-.7m\s[\\n(.s*6u/10u]+.7m'\\$1\v'-.7m\s0+.7m'\
\(f/\s[\\n(.s*6u/10u]\\$2\s0 \(f/\s[\\n(.s*6u/10u]\\$2\s0
\}
.el \{\
\v'-.7m\s[\\n(.s*6u/10u]+.7m'\\$1\v'-.7m\s0+.7m'\
\(f/\s[\\n(.s*6u/10u]\\$2\s0\\$3
\}
.. ..
.de FOOTNOTE_TO_COLUMN_WIDTH .de FOOTNOTE_TO_COLUMN_WIDTH
.nr pg@fn-colw \\n[pg@colw] \" footnotes' column width .nr pg@fn-colw \\n[pg@colw] \" footnotes' column width
@ -187,6 +197,7 @@ accumulate
. \" Fonts and colors. . \" Fonts and colors.
. .
.de SPECIAL_WORDS .de SPECIAL_WORDS
.ie !'\\$3'' \\$3\c
.nr current_size \\n[.s] \" Current point size. .nr current_size \\n[.s] \" Current point size.
.gcolor specialcolor_\\*[semantictoken] .gcolor specialcolor_\\*[semantictoken]
. .
@ -220,39 +231,40 @@ accumulate
.b2 .b2
.. ..
.de COMMANDNAME .de COMMANDNAME
.I "\\$1" "\\$2" .ds semantictoken command
.SPECIAL_WORDS \\$@
.. ..
.de FUNCTION .de FUNCTION
.ds semantictoken function .ds semantictoken function
.SPECIAL_WORDS "\\$1" "\\$2" .SPECIAL_WORDS \\$@
.. ..
.de TYPE .de TYPE
.ds semantictoken type .ds semantictoken type
.SPECIAL_WORDS "\\$1" "\\$2" .SPECIAL_WORDS \\$@
.. ..
.de TYPECLASS .de TYPECLASS
.I "\\$1" "\\$2" .I "\\$1" "\\$2"
.. ..
.de OPERATOR .de OPERATOR
.ds semantictoken operator .ds semantictoken operator
.SPECIAL_WORDS "\\$1" "\\$2" .SPECIAL_WORDS \\$@
.. ..
.de QUESTION .de QUESTION
.ds semantictoken question .ds semantictoken question
.SPECIAL_WORDS "\\$1" "\\$2" .SPECIAL_WORDS \\$@
\h'5p' \h'5p'
.. ..
.de CONSTRUCTOR .de CONSTRUCTOR
.ds semantictoken constructor .ds semantictoken constructor
.SPECIAL_WORDS "\\$1" "\\$2" .SPECIAL_WORDS \\$@
.. ..
.de MODULE .de MODULE
.ds semantictoken module .ds semantictoken module
.SPECIAL_WORDS "\\$1" "\\$2" .SPECIAL_WORDS \\$@
.. ..
.de SHINE .de SHINE
.ds semantictoken shine .ds semantictoken shine
.SPECIAL_WORDS "\\$1" "\\$2" .SPECIAL_WORDS \\$@
.. ..
.de MODULEX .de MODULEX
.MODULE \\$1 , .MODULE \\$1 ,
@ -397,3 +409,26 @@ Compilé pour la dernière fois le
.de VOCABULARY2 .de VOCABULARY2
.KE .KE
.. ..
.
.
.de HIGHLIGHT
.
. nr @wd \w'\\$1'
. nr x1 0
. nr y1 (\\n[rst]u - \\n[rsb]u + .4m)
. nr x2 (\\n[@wd]u + .4m)
. nr y2 0
. nr x3 0
. nr y3 (\\n[rst]u - \\n[rsb]u + .4m)
. nr x4 (\\n[@wd]u + .4m)
. nr y4 0
.
\h'.2m'\
\h'-.2m'\v'(.2m - \\n[rsb]u)'\
\M[color_box]\
\D'P \\n[x1] -\\n[y1]u \\n[x2]u \\n[y2]u \\n[x3]u \\n[y3]u -\\n[x4]u \\n[y4]u '\
\h'.2m'\v'-(.2m - \\n[rsb]u)'\
\M[]\
\\$1\
\h'.2m'
..