tex file + grab

This commit is contained in:
√(noham)²
2025-04-13 21:06:51 +02:00
parent 5d2a553c0b
commit d42ae0d105
8 changed files with 402 additions and 11 deletions

140
.gitignore vendored Normal file
View File

@@ -0,0 +1,140 @@
# Editors
.vscode/
.idea/
# Vagrant
.vagrant/
# Mac/OSX
.DS_Store
# Windows
Thumbs.db
# Source for the following rules: https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
dist_chrome/
downloads/
eggs/
.eggs/
lib/
lib64/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# node
node_modules/
# latex files
*.aux
*.out
*.log
*.toc
exercices/
ficall (1).pdf
ficall.tex
fic00097.pdf
/exemples

13
Makefile Normal file
View File

@@ -0,0 +1,13 @@
TEX=pdflatex
SRC=essaie.tex
OUTDIR=output
OUTPDF=$(OUTDIR)/essaie.pdf
all:
@mkdir -p $(OUTDIR)
$(TEX) -output-directory=$(OUTDIR) $(SRC)
clean:
rm -rf $(OUTDIR)/*.aux $(OUTDIR)/*.log $(OUTDIR)/*.pdf
.PHONY: all clean

BIN
assets/Icone_etoile.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 B

View File

@@ -1,7 +1,7 @@
\documentclass[11pt,a4paper]{article}
\usepackage{amsfonts,amsmath,amssymb,amsthm}
\usepackage[utf8]{inputenc}
\usepackage{fontenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{mathptmx}
\usepackage{fancybox}
@@ -10,11 +10,11 @@
\usepackage{tikz}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=blue,
urlcolor=blue,
pdftitle={Exo7 - Exercices de mathématiques},
pdfauthor={Exo7}
colorlinks=true,
linkcolor=blue,
urlcolor=blue,
pdftitle={Exercices de mathématiques},
pdfauthor={Noham Rivoirard}
}
\usepackage{geometry}
\geometry{top=2cm, bottom=2cm, left=2cm, right=2cm}
@@ -42,16 +42,16 @@
% Modified to include variable number of stars and optional title
\newcommand{\enonce}[2]{%
\refstepcounter{exo}%
\edef\currentexonum{\theexo}%
\expandafter\edef\csname exoNum@\exoref\endcsname{\theexo}%
\hypertarget{exo7:\exoref}{}\label{exo7:\exoref}%
{\bf Exercice \arabic{exo}}~\printStars{\exostars}\ \
\ifthenelse{\equal{\exotitle}{}}{#2}{\textbf{\exotitle} -- #2}\vspace{1mm}\hrule\vspace{1mm}%
}
}
% Command to print stars using TikZ foreach
\newcommand{\printStars}[1]{%
\foreach \i in {1,...,#1} {%
\includegraphics[height=1em]{Icone_etoile.png}%
\includegraphics[height=1em]{assets/Icone_etoile.png}%
}%
}
@@ -61,15 +61,47 @@
\ifthenelse{\equal{\ref{cor7:#1}}{\ref{bidon}}}{}{\hyperlink{cor7:#1}{\texttt{Correction} $\blacktriangledown$}}}}%
\hfill{\scriptsize\texttt{[#1]}}\vspace{1mm}\hrule\vspace*{7mm}%
}
\newcommand{\indication}[1]{\hypertarget{ind7:#1}{}\label{ind7:#1}{\bf Indication pour \hyperlink{exo7:#1}{l'exercice \currentexonum $\blacktriangle$}}\vspace{1mm}\hrule\vspace{1mm}}
\newcommand{\indication}[1]{%
\hypertarget{ind7:#1}{}\label{ind7:#1}%
{\bf Indication pour \hyperlink{exo7:#1}{l'exercice \csname exoNum@#1\endcsname\ $\blacktriangle$}}\vspace{1mm}\hrule\vspace{1mm}}
\newcommand{\correction}[1]{%
\hypertarget{cor7:#1}{}\label{cor7:#1}%
{\bf Correction de \hyperlink{exo7:#1}{l'exercice \csname exoNum@#1\endcsname\ $\blacktriangle$}}\vspace{1mm}\hrule\vspace{1mm}}
\newcommand{\finindication}{\vspace{1mm}\hrule\vspace*{7mm}}
\newcommand{\correction}[1]{\hypertarget{cor7:#1}{}\label{cor7:#1}{\bf Correction de \hyperlink{exo7:#1}{l'exercice \currentexonum $\blacktriangle$}}\vspace{1mm}\hrule\vspace{1mm}}
\newcommand{\fincorrection}{\vspace{1mm}\hrule\vspace*{7mm}}
\newcommand{\finenonces}{\newpage}
\newcommand{\finindications}{\newpage}
\newcommand{\fiche}[1]{} \newcommand{\finfiche}{}
\newcommand{\addcommand}[1]{}
% Bibmath commands
\newcommand{\mcm}{\mathcal{M}}
\newcommand{\mcc}{\mathcal{C}}
\newcommand{\mcmn}{\mathcal{M}}
\newcommand{\mcmnr}{\mathcal{M}_n(\mtr)}
\newcommand{\mcmnk}{\mathcal{M}_n(\mtk)}
\newcommand{\mcsn}{\mathcal{S}_n}
\newcommand{\mcs}{\mathcal{S}}
\newcommand{\mcd}{\mathcal{D}}
\newcommand{\mcsns}{\mathcal{S}_n^{++}}
\newcommand{\glnk}{GL_n(\mtk)}
\newcommand{\mnr}{\mathcal{M}_n(\mtr)}\DeclareMathOperator{\ch}{ch}
\DeclareMathOperator{\sh}{sh}
\DeclareMathOperator{\vect}{vect}\DeclareMathOperator{\card}{card}
\DeclareMathOperator{\comat}{comat}\DeclareMathOperator{\imv}{Im}
\DeclareMathOperator{\rang}{rg}
\DeclareMathOperator{\Fr}{Fr}
\DeclareMathOperator{\diam}{diam}
\DeclareMathOperator{\supp}{supp}
\newcommand{\veps}{\varepsilon}
\newcommand{\mcu}{\mathcal{U}}
\newcommand{\mcun}{\mcu_n}
\newcommand{\dis}{\displaystyle}
\newcommand{\croouv}{[\![}
\newcommand{\crofer}{]\!]}
\newcommand{\rab}{\mathcal{R}(a,b)}
\newcommand{\pss}[2]{\langle #1,#2\rangle}
% End of preamble
\usepackage{graphics}
\usepackage[all]{xy}
@@ -84,17 +116,31 @@ Enoncé de l'exercice..
\finenonce{000001}
\finexercice
\exercice{000002, bodin, 1998/09/01, 2, Titre de l'exercice}
\enonce{000002}{}
Enoncé de l'exercice..
\finenonce{000002}
\finexercice
\newpage
\indication{000001}
Indication de l'exercice..
\finindication
\indication{000002}
Indication de l'exercice..
\finindication
\newpage
\correction{000001}
Correction de l'exercice..
\fincorrection
\correction{000002}
Correction de l'exercice..
\fincorrection
\end{document}

81
grab.py Normal file
View File

@@ -0,0 +1,81 @@
from bs4 import BeautifulSoup
import requests
import urllib.parse as urlparse
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8',
'accept-language': 'fr-FR,fr;q=0.7',
'cache-control': 'no-cache',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Brave";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'same-origin',
'sec-fetch-user': '?1',
'sec-gpc': '1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
}
params = {
'action': 'affiche',
'quoi': 'mpsi/feuillesexo/matrices',
'type': 'fexo',
}
response = requests.get('https://bibmath.net/ressources/index.php', headers=headers, params=params)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
article = soup.find('article', id='contenugauche')
if article:
title = article.find('h1').get_text(strip=True)
print(f"Title: {title}")
# Find all part titles
part_titles = article.find_all('div', class_='titrepartie')
for part in part_titles:
part_text = part.get_text(strip=True)
print(f"Part of the File: {part_text}")
exercises = article.find_all('div', class_='exo')
for exo in exercises:
exo_title_div = exo.find('div', class_='titreexo')
exercise_number = exo_title_div.find_all('span')[1].text.strip()
title_start = exo_title_div.text.find(' - ') + 3
title_end = exo_title_div.text.find('[Signaler une erreur]')
exercise_title = exo_title_div.text[title_start:title_end].strip()
error_link = exo_title_div.find('a', href=lambda href: href and 'signalerreur.php' in href)['href']
parsed_url = urlparse.urlparse(error_link)
exercise_id = urlparse.parse_qs(parsed_url.query)['numero'][0]
stars_count = len(exo_title_div.find_all('img'))
enonce = exo.find('div', class_='enonce').find('div', class_='inner').get_text(strip=True)
indication_div = exo.find('div', class_='indication')
indication = (
indication_div.find('div', class_='inner').get_text(strip=True)
if indication_div else "No indication"
)
answer_div = exo.find('div', class_='corrige')
answer = (
answer_div.find('div', class_='inner').get_text(strip=True)
if answer_div else "No answer"
)
# print(f"Exercise Number: {exercise_number}")
# print(f"Exercise Title: {exercise_title}")
# print(f"Exercise ID: {exercise_id}")
# print(f"Stars: {stars_count} stars")
# print(f"Enonce: {enonce}")
# print(f"Indication: {indication}")
# print(f"Answer: {answer}")
else:
print("Article with id 'contenugauche' not found.")
else:
print(f"Request failed with status code: {response.status_code}")

BIN
output/essaie.pdf Normal file

Binary file not shown.

1
parts/footer.tex Normal file
View File

@@ -0,0 +1 @@
\end{document}

110
parts/header.tex Normal file
View File

@@ -0,0 +1,110 @@
\documentclass[11pt,a4paper]{article}
\usepackage{amsfonts,amsmath,amssymb,amsthm}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{mathptmx}
\usepackage{fancybox}
\usepackage{graphicx}
\usepackage{ifthen}
\usepackage{tikz}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=blue,
urlcolor=blue,
pdftitle={Exercices de mathématiques},
pdfauthor={Noham Rivoirard}
}
\usepackage{geometry}
\geometry{top=2cm, bottom=2cm, left=2cm, right=2cm}
% Modified to extract number of stars and title
\newcommand{\exercice}[1]{%
\def\exoargs{#1}%
\expandafter\parseexoargs\exoargs,,,,,\@nil%
}
\def\parseexoargs#1,#2,#3,#4,#5,#6\@nil{%
\def\exoref{#1}%
\def\exoauthor{#2}%
\def\exodate{#3}%
\def\exostars{#4}%
\def\exotitle{#5}%
}
\newcommand{\finexercice}{}
\newcommand{\noindication}{}
\newcommand{\nocorrection}{}
\newcounter{exo}
\newcommand{\currentexonum}{} % mémoire temporaire
% Modified to include variable number of stars and optional title
\newcommand{\enonce}[2]{%
\refstepcounter{exo}%
\expandafter\edef\csname exoNum@\exoref\endcsname{\theexo}%
\hypertarget{exo7:\exoref}{}\label{exo7:\exoref}%
{\bf Exercice \arabic{exo}}~\printStars{\exostars}\ \
\ifthenelse{\equal{\exotitle}{}}{#2}{\textbf{\exotitle} -- #2}\vspace{1mm}\hrule\vspace{1mm}%
}
% Command to print stars using TikZ foreach
\newcommand{\printStars}[1]{%
\foreach \i in {1,...,#1} {%
\includegraphics[height=1em]{assets/Icone_etoile.png}%
}%
}
\newcommand{\finenonce}[1]{%
\ifthenelse{\equal{\ref{ind7:#1}}{\ref{bidon}}\and\equal{\ref{cor7:#1}}{\ref{bidon}}}{}{\par{\footnotesize
\ifthenelse{\equal{\ref{ind7:#1}}{\ref{bidon}}}{}{\hyperlink{ind7:#1}{\texttt{Indication} $\blacktriangledown$}\qquad}
\ifthenelse{\equal{\ref{cor7:#1}}{\ref{bidon}}}{}{\hyperlink{cor7:#1}{\texttt{Correction} $\blacktriangledown$}}}}%
\hfill{\scriptsize\texttt{[#1]}}\vspace{1mm}\hrule\vspace*{7mm}%
}
\newcommand{\indication}[1]{%
\hypertarget{ind7:#1}{}\label{ind7:#1}%
{\bf Indication pour \hyperlink{exo7:#1}{l'exercice \csname exoNum@#1\endcsname\ $\blacktriangle$}}\vspace{1mm}\hrule\vspace{1mm}}
\newcommand{\correction}[1]{%
\hypertarget{cor7:#1}{}\label{cor7:#1}%
{\bf Correction de \hyperlink{exo7:#1}{l'exercice \csname exoNum@#1\endcsname\ $\blacktriangle$}}\vspace{1mm}\hrule\vspace{1mm}}
\newcommand{\finindication}{\vspace{1mm}\hrule\vspace*{7mm}}
\newcommand{\fincorrection}{\vspace{1mm}\hrule\vspace*{7mm}}
\newcommand{\finenonces}{\newpage}
\newcommand{\finindications}{\newpage}
\newcommand{\fiche}[1]{} \newcommand{\finfiche}{}
\newcommand{\addcommand}[1]{}
% Bibmath commands
\newcommand{\mcm}{\mathcal{M}}
\newcommand{\mcc}{\mathcal{C}}
\newcommand{\mcmn}{\mathcal{M}}
\newcommand{\mcmnr}{\mathcal{M}_n(\mtr)}
\newcommand{\mcmnk}{\mathcal{M}_n(\mtk)}
\newcommand{\mcsn}{\mathcal{S}_n}
\newcommand{\mcs}{\mathcal{S}}
\newcommand{\mcd}{\mathcal{D}}
\newcommand{\mcsns}{\mathcal{S}_n^{++}}
\newcommand{\glnk}{GL_n(\mtk)}
\newcommand{\mnr}{\mathcal{M}_n(\mtr)}\DeclareMathOperator{\ch}{ch}
\DeclareMathOperator{\sh}{sh}
\DeclareMathOperator{\vect}{vect}\DeclareMathOperator{\card}{card}
\DeclareMathOperator{\comat}{comat}\DeclareMathOperator{\imv}{Im}
\DeclareMathOperator{\rang}{rg}
\DeclareMathOperator{\Fr}{Fr}
\DeclareMathOperator{\diam}{diam}
\DeclareMathOperator{\supp}{supp}
\newcommand{\veps}{\varepsilon}
\newcommand{\mcu}{\mathcal{U}}
\newcommand{\mcun}{\mcu_n}
\newcommand{\dis}{\displaystyle}
\newcommand{\croouv}{[\![}
\newcommand{\crofer}{]\!]}
\newcommand{\rab}{\mathcal{R}(a,b)}
\newcommand{\pss}[2]{\langle #1,#2\rangle}
% End of preamble
\usepackage{graphics}
\usepackage[all]{xy}
\begin{document}