frontend-hamroun 1.1.85 → 1.1.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,11 +1,16 @@
1
- # Your Package Name
1
+ # Frontend Hamroun
2
2
 
3
- A lightweight Virtual DOM and hooks implementation with JSX support.
3
+ A lightweight JavaScript framework with Virtual DOM and hooks implementation inspired by modern frameworks.
4
+
5
+ ![npm](https://img.shields.io/npm/v/frontend-hamroun)
6
+ ![npm bundle size](https://img.shields.io/bundlephobia/minzip/frontend-hamroun)
7
+ ![npm](https://img.shields.io/npm/dt/frontend-hamroun)
8
+ ![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)
4
9
 
5
10
  ## Installation
6
11
 
7
12
  ```bash
8
- npm install your-package-name
13
+ npm install frontend-hamroun
9
14
  ```
10
15
 
11
16
  ## Quick Start
@@ -28,7 +33,7 @@ npm run dev
28
33
  ## Usage
29
34
 
30
35
  ```jsx
31
- import { render, useState } from 'your-package-name';
36
+ import { render, useState } from 'frontend-hamroun';
32
37
 
33
38
  function App() {
34
39
  const [count, setCount] = useState(0);
@@ -45,11 +50,15 @@ render(<App />, document.getElementById('root'));
45
50
 
46
51
  ## Features
47
52
 
48
- - Virtual DOM with efficient diffing
49
- - Hooks (useState, useEffect, useMemo, useRef)
53
+ - Lightweight (<5KB gzipped)
54
+ - Virtual DOM with efficient diffing algorithm
55
+ - Hooks API (useState, useEffect, useMemo, useRef)
50
56
  - Context API
51
- - Batch updates
52
- - Hydration support
57
+ - Server-Side Rendering
58
+ - Error Boundaries
59
+ - JSX support
60
+ - TypeScript support
61
+ - Built-in CLI for project scaffolding
53
62
 
54
63
  ## Hooks
55
64
 
@@ -57,7 +66,9 @@ render(<App />, document.getElementById('root'));
57
66
  Manages component state.
58
67
 
59
68
  ```tsx
60
- const [state, setState] = useState(initialValue);
69
+ const [count, setCount] = useState(0);
70
+ setCount(count + 1); // Direct value
71
+ setCount(prev => prev + 1); // Using callback
61
72
  ```
62
73
 
63
74
  ### useEffect
@@ -65,25 +76,31 @@ Handles side effects in components.
65
76
 
66
77
  ```tsx
67
78
  useEffect(() => {
68
- // Effect code
79
+ document.title = `Count: ${count}`;
80
+
69
81
  return () => {
70
- // Cleanup code
82
+ // Cleanup code runs before next effect or unmount
83
+ console.log('Cleanup effect');
71
84
  };
72
- }, [dependencies]);
85
+ }, [count]); // Only re-run when count changes
73
86
  ```
74
87
 
75
88
  ### useMemo
76
89
  Memoizes expensive computations.
77
90
 
78
91
  ```tsx
79
- const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
92
+ const doubled = useMemo(() => {
93
+ console.log('Computing doubled value');
94
+ return count * 2;
95
+ }, [count]);
80
96
  ```
81
97
 
82
98
  ### useRef
83
- Creates a mutable reference.
99
+ Creates a mutable reference that persists across renders.
84
100
 
85
101
  ```tsx
86
- const ref = useRef(initialValue);
102
+ const renderCount = useRef(0);
103
+ renderCount.current += 1; // Update without triggering re-render
87
104
  ```
88
105
 
89
106
  ### useErrorBoundary
@@ -91,150 +108,104 @@ Handles component errors.
91
108
 
92
109
  ```tsx
93
110
  const [error, resetError] = useErrorBoundary();
111
+
112
+ if (error) {
113
+ return (
114
+ <div>
115
+ <h1>Something went wrong!</h1>
116
+ <button onClick={resetError}>Try again</button>
117
+ </div>
118
+ );
119
+ }
94
120
  ```
95
121
 
96
122
  ## Context API
97
123
 
98
- Create and use shared state across components.
124
+ Share state across components without prop drilling.
99
125
 
100
126
  ```tsx
127
+ // Create context
101
128
  const ThemeContext = createContext('light');
102
129
 
130
+ // Provider component
103
131
  function App() {
132
+ const [theme, setTheme] = useState('light');
133
+
104
134
  return (
105
- <ThemeContext.Provider value="dark">
106
- <Child />
135
+ <ThemeContext.Provider value={theme}>
136
+ <Button onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}>
137
+ Toggle Theme
138
+ </Button>
139
+ <ThemedComponent />
107
140
  </ThemeContext.Provider>
108
141
  );
109
142
  }
110
143
 
111
- function Child() {
144
+ // Consumer component
145
+ function ThemedComponent() {
112
146
  const theme = useContext(ThemeContext);
113
- // Or use selector for performance
114
- const isDark = ThemeContext.useSelector(theme => theme === 'dark');
147
+ return <div style={{ background: theme === 'dark' ? '#333' : '#fff' }}>
148
+ Current theme: {theme}
149
+ </div>;
115
150
  }
116
151
  ```
117
152
 
118
- ## Performance Optimization
119
-
120
- ### Batch Updates
121
- Group multiple state updates together.
122
-
123
- ```tsx
124
- import { batchUpdates } from 'your-package-name';
125
-
126
- batchUpdates(() => {
127
- setValue1(newValue1);
128
- setValue2(newValue2);
129
- });
130
- ```
131
-
132
- ### Component Memoization
133
- Prevent unnecessary re-renders.
134
-
135
- ```tsx
136
- const MemoizedComponent = useMemo(() => (
137
- <ExpensiveComponent prop={value} />
138
- ), [value]);
139
- ```
140
-
141
153
  ## Server-Side Rendering
142
154
 
155
+ Frontend Hamroun supports server-side rendering with hydration:
156
+
143
157
  ```tsx
144
- import { hydrate } from 'your-package-name';
158
+ // Server-side
159
+ import { renderToString } from 'frontend-hamroun';
160
+
161
+ const html = await renderToString(<App />);
162
+ res.send(`
163
+ <!DOCTYPE html>
164
+ <html>
165
+ <head><title>My App</title></head>
166
+ <body>
167
+ <div id="root">${html}</div>
168
+ <script src="/client.js"></script>
169
+ </body>
170
+ </html>
171
+ `);
172
+
173
+ // Client-side
174
+ import { hydrate } from 'frontend-hamroun';
145
175
 
146
- // On the client
147
176
  hydrate(<App />, document.getElementById('root'));
148
177
  ```
149
178
 
150
- ## Event Handling
151
-
152
- ```tsx
153
- function Button() {
154
- return (
155
- <button
156
- onClick={(e) => handleClick(e)}
157
- onMouseOver={(e) => handleHover(e)}
158
- >
159
- Click me
160
- </button>
161
- );
162
- }
163
- ```
179
+ ## Performance Optimization
164
180
 
165
- ## Styling
181
+ ### Batch Updates
182
+ Group multiple state updates together to prevent unnecessary re-renders.
166
183
 
167
184
  ```tsx
168
- function StyledComponent() {
169
- return (
170
- <div style={{
171
- color: 'blue',
172
- padding: '20px'
173
- }}>
174
- Styled content
175
- </div>
176
- );
177
- }
178
- ```
185
+ import { batchUpdates } from 'frontend-hamroun';
179
186
 
180
- ## Error Handling
181
-
182
- ```tsx
183
- function ErrorBoundary() {
184
- const [error, resetError] = useErrorBoundary();
185
-
186
- if (error) {
187
- return (
188
- <div>
189
- <h1>Something went wrong!</h1>
190
- <button onClick={resetError}>Try again</button>
191
- </div>
192
- );
193
- }
194
-
195
- return <ComponentThatMightError />;
196
- }
187
+ batchUpdates(() => {
188
+ setCount(count + 1);
189
+ setName('John');
190
+ setActive(true);
191
+ });
197
192
  ```
198
193
 
199
- ## Best Practices
200
-
201
- 1. Use batch updates for multiple state changes
202
- 2. Implement error boundaries for error handling
203
- 3. Use context selectors for better performance
204
- 4. Memoize expensive computations
205
- 5. Clean up effects when components unmount
206
- 6. Keep components small and focused
207
- 7. Use proper TypeScript types for better development experience
208
-
209
- ## API Reference
194
+ ## Project Templates
210
195
 
211
- ### Core
212
- - `render(element, container)`
213
- - `hydrate(element, container)`
214
- - `createElement(vnode)`
196
+ The framework comes with two project templates:
215
197
 
216
- ### Hooks
217
- - `useState<T>(initial: T)`
218
- - `useEffect(callback, deps?)`
219
- - `useMemo(factory, deps)`
220
- - `useRef(initial)`
221
- - `useErrorBoundary()`
198
+ 1. **Basic App**: Client-side rendered application with TailwindCSS
199
+ 2. **SSR Template**: Server-side rendered application with Express
222
200
 
223
- ### Context
224
- - `createContext(defaultValue)`
225
- - `useContext(Context)`
226
- - `Context.Provider`
227
- - `Context.Consumer`
228
- - `Context.useSelector`
201
+ ## Browser Compatibility
229
202
 
230
- ### Performance
231
- - `batchUpdates(callback)`
203
+ Frontend Hamroun works in all modern browsers (Chrome, Firefox, Safari, Edge).
232
204
 
233
205
  ## License
234
206
 
235
- MIT License - feel free to use in any project.
207
+ MIT © Hamroun
236
208
 
237
209
  ## Contributing
238
210
 
239
- Contributions are welcome! Please read our contributing guidelines and submit pull requests.
240
- `````
211
+ Contributions are welcome! Please feel free to submit a Pull Request.
package/bin/cli.js CHANGED
@@ -11,11 +11,133 @@ import { createSpinner } from 'nanospinner';
11
11
  const __filename = fileURLToPath(import.meta.url);
12
12
  const __dirname = path.dirname(__filename);
13
13
 
14
+ // Component templates
15
+ const FUNCTION_COMPONENT_TEMPLATE = (name) => `import { useState, useEffect } from 'frontend-hamroun';
16
+
17
+ export function ${name}(props) {
18
+ // State hooks
19
+ const [state, setState] = useState(null);
20
+
21
+ // Effect hooks
22
+ useEffect(() => {
23
+ // Component mounted
24
+ return () => {
25
+ // Component will unmount
26
+ };
27
+ }, []);
28
+
29
+ return (
30
+ <div className="${name.toLowerCase()}">
31
+ <h2>${name} Component</h2>
32
+ {/* Your JSX here */}
33
+ </div>
34
+ );
35
+ }
36
+ `;
37
+
38
+ const CSS_TEMPLATE = (name) => `.${name.toLowerCase()} {
39
+ display: flex;
40
+ flex-direction: column;
41
+ padding: 1rem;
42
+ margin: 0.5rem;
43
+ border-radius: 4px;
44
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
45
+ }
46
+ `;
47
+
48
+ const TEST_TEMPLATE = (name) => `import { render, screen } from '@testing-library/frontend-hamroun';
49
+ import { ${name} } from './${name}';
50
+
51
+ describe('${name} Component', () => {
52
+ test('renders correctly', () => {
53
+ render(<${name} />);
54
+ const element = screen.getByText('${name} Component');
55
+ expect(element).toBeInTheDocument();
56
+ });
57
+ });
58
+ `;
59
+
60
+ // Dockerfile templates
61
+ const DOCKERFILE_TEMPLATE = `# Stage 1: Build the application
62
+ FROM node:18-alpine as build
63
+
64
+ # Set working directory
65
+ WORKDIR /app
66
+
67
+ # Copy package files
68
+ COPY package.json package-lock.json ./
69
+
70
+ # Install dependencies
71
+ RUN npm ci
72
+
73
+ # Copy source files
74
+ COPY . .
75
+
76
+ # Build the application
77
+ RUN npm run build
78
+
79
+ # Stage 2: Serve the application
80
+ FROM nginx:alpine
81
+
82
+ # Copy the build output from the previous stage
83
+ COPY --from=build /app/dist /usr/share/nginx/html
84
+
85
+ # Expose port 80
86
+ EXPOSE 80
87
+
88
+ # Start nginx
89
+ CMD ["nginx", "-g", "daemon off;"]
90
+ `;
91
+
92
+ const SSR_DOCKERFILE_TEMPLATE = `# Stage 1: Build the application
93
+ FROM node:18-alpine as build
94
+
95
+ # Set working directory
96
+ WORKDIR /app
97
+
98
+ # Copy package files
99
+ COPY package.json package-lock.json ./
100
+
101
+ # Install dependencies
102
+ RUN npm ci
103
+
104
+ # Copy source files
105
+ COPY . .
106
+
107
+ # Build the application
108
+ RUN npm run build
109
+
110
+ # Stage 2: Run the server
111
+ FROM node:18-alpine
112
+
113
+ WORKDIR /app
114
+
115
+ # Copy package files and install production dependencies only
116
+ COPY package.json package-lock.json ./
117
+ RUN npm ci --production
118
+
119
+ # Copy build artifacts
120
+ COPY --from=build /app/dist ./dist
121
+ COPY --from=build /app/server ./server
122
+
123
+ # Expose port 3000
124
+ EXPOSE 3000
125
+
126
+ # Start the server
127
+ CMD ["node", "server/index.js"]
128
+ `;
129
+
14
130
  async function init() {
15
131
  const program = new Command();
16
132
 
17
133
  program
18
- .name('create-frontend-app')
134
+ .name('frontend-hamroun')
135
+ .description('CLI for Frontend Hamroun framework')
136
+ .version('1.0.0');
137
+
138
+ // Create new project
139
+ program
140
+ .command('create')
19
141
  .description('Create a new Frontend Hamroun application')
20
142
  .argument('[name]', 'Project name')
21
143
  .action(async (name) => {
@@ -23,7 +145,75 @@ async function init() {
23
145
  await createProject(projectName);
24
146
  });
25
147
 
26
- program.parse();
148
+ // Generate component
149
+ program
150
+ .command('generate')
151
+ .alias('g')
152
+ .description('Generate a new component')
153
+ .argument('<name>', 'Component name')
154
+ .option('-d, --directory <directory>', 'Target directory', './src/components')
155
+ .action(async (name, options) => {
156
+ await generateComponent(name, options.directory);
157
+ });
158
+
159
+ // Add Dockerfile
160
+ program
161
+ .command('docker')
162
+ .description('Add Dockerfile to project')
163
+ .option('-s, --ssr', 'Use SSR-compatible Dockerfile')
164
+ .action(async (options) => {
165
+ await addDockerfile(options.ssr);
166
+ });
167
+
168
+ // Interactive mode if no command provided
169
+ if (process.argv.length <= 2) {
170
+ await interactiveMode();
171
+ } else {
172
+ program.parse();
173
+ }
174
+ }
175
+
176
+ async function interactiveMode() {
177
+ const { action } = await inquirer.prompt([{
178
+ type: 'list',
179
+ name: 'action',
180
+ message: 'What would you like to do?',
181
+ choices: [
182
+ { name: 'Create a new project', value: 'create' },
183
+ { name: 'Generate a component', value: 'generate' },
184
+ { name: 'Add Dockerfile to project', value: 'docker' }
185
+ ]
186
+ }]);
187
+
188
+ if (action === 'create') {
189
+ const projectName = await askProjectName();
190
+ await createProject(projectName);
191
+ } else if (action === 'generate') {
192
+ const { name } = await inquirer.prompt([{
193
+ type: 'input',
194
+ name: 'name',
195
+ message: 'Component name:',
196
+ validate: (input) => input ? true : 'Component name is required'
197
+ }]);
198
+
199
+ const { directory } = await inquirer.prompt([{
200
+ type: 'input',
201
+ name: 'directory',
202
+ message: 'Target directory:',
203
+ default: './src/components'
204
+ }]);
205
+
206
+ await generateComponent(name, directory);
207
+ } else if (action === 'docker') {
208
+ const { isSSR } = await inquirer.prompt([{
209
+ type: 'confirm',
210
+ name: 'isSSR',
211
+ message: 'Is this a server-side rendered app?',
212
+ default: false
213
+ }]);
214
+
215
+ await addDockerfile(isSSR);
216
+ }
27
217
  }
28
218
 
29
219
  async function askProjectName() {
@@ -69,13 +259,21 @@ async function createProject(projectName) {
69
259
  pkg.name = projectName;
70
260
  await fs.writeJson(pkgPath, pkg, { spaces: 2 });
71
261
 
72
- spinner.success({ text: `Project ${chalk.green(projectName)} created successfully!` });
262
+ // Automatically add Dockerfile
263
+ const isSSR = template === 'ssr-template';
264
+ const dockerContent = isSSR ? SSR_DOCKERFILE_TEMPLATE : DOCKERFILE_TEMPLATE;
265
+ await fs.writeFile(path.join(targetDir, 'Dockerfile'), dockerContent);
266
+
267
+ spinner.success({ text: `Project ${chalk.green(projectName)} created successfully with Dockerfile!` });
73
268
 
74
269
  // Show next steps
75
270
  console.log('\nNext steps:');
76
271
  console.log(chalk.cyan(` cd ${projectName}`));
77
272
  console.log(chalk.cyan(' npm install'));
78
273
  console.log(chalk.cyan(' npm run dev'));
274
+ console.log(chalk.yellow('\nTo build Docker image:'));
275
+ console.log(chalk.cyan(' docker build -t my-app .'));
276
+ console.log(chalk.cyan(' docker run -p 3000:' + (isSSR ? '3000' : '80') + ' my-app'));
79
277
 
80
278
  } catch (error) {
81
279
  spinner.error({ text: 'Failed to create project' });
@@ -84,4 +282,90 @@ async function createProject(projectName) {
84
282
  }
85
283
  }
86
284
 
285
+ async function generateComponent(name, directory) {
286
+ const spinner = createSpinner(`Generating ${name} component...`).start();
287
+
288
+ try {
289
+ const targetDir = path.join(process.cwd(), directory, name);
290
+
291
+ // Create component directory
292
+ await fs.ensureDir(targetDir);
293
+
294
+ // Create component files
295
+ await fs.writeFile(
296
+ path.join(targetDir, `${name}.jsx`),
297
+ FUNCTION_COMPONENT_TEMPLATE(name)
298
+ );
299
+
300
+ await fs.writeFile(
301
+ path.join(targetDir, `${name}.css`),
302
+ CSS_TEMPLATE(name)
303
+ );
304
+
305
+ await fs.writeFile(
306
+ path.join(targetDir, `${name}.test.jsx`),
307
+ TEST_TEMPLATE(name)
308
+ );
309
+
310
+ await fs.writeFile(
311
+ path.join(targetDir, 'index.js'),
312
+ `export { ${name} } from './${name}';\n`
313
+ );
314
+
315
+ spinner.success({ text: `Component ${chalk.green(name)} generated successfully!` });
316
+
317
+ console.log('\nFiles created:');
318
+ console.log(chalk.cyan(` ${path.join(directory, name, `${name}.jsx`)}`));
319
+ console.log(chalk.cyan(` ${path.join(directory, name, `${name}.css`)}`));
320
+ console.log(chalk.cyan(` ${path.join(directory, name, `${name}.test.jsx`)}`));
321
+ console.log(chalk.cyan(` ${path.join(directory, name, 'index.js')}`));
322
+
323
+ } catch (error) {
324
+ spinner.error({ text: 'Failed to generate component' });
325
+ console.error(chalk.red(error));
326
+ process.exit(1);
327
+ }
328
+ }
329
+
330
+ async function addDockerfile(isSSR) {
331
+ const spinner = createSpinner('Adding Dockerfile...').start();
332
+
333
+ try {
334
+ const dockerContent = isSSR ? SSR_DOCKERFILE_TEMPLATE : DOCKERFILE_TEMPLATE;
335
+ const targetPath = path.join(process.cwd(), 'Dockerfile');
336
+
337
+ // Check if Dockerfile already exists
338
+ if (await fs.pathExists(targetPath)) {
339
+ spinner.stop();
340
+ const { overwrite } = await inquirer.prompt([{
341
+ type: 'confirm',
342
+ name: 'overwrite',
343
+ message: 'Dockerfile already exists. Overwrite?',
344
+ default: false
345
+ }]);
346
+
347
+ if (!overwrite) {
348
+ console.log(chalk.yellow('Operation cancelled.'));
349
+ return;
350
+ }
351
+
352
+ spinner.start();
353
+ }
354
+
355
+ // Write Dockerfile
356
+ await fs.writeFile(targetPath, dockerContent);
357
+
358
+ spinner.success({ text: 'Dockerfile added successfully!' });
359
+
360
+ console.log('\nTo build and run Docker image:');
361
+ console.log(chalk.cyan(' docker build -t my-app .'));
362
+ console.log(chalk.cyan(' docker run -p 3000:' + (isSSR ? '3000' : '80') + ' my-app'));
363
+
364
+ } catch (error) {
365
+ spinner.error({ text: 'Failed to add Dockerfile' });
366
+ console.error(chalk.red(error));
367
+ process.exit(1);
368
+ }
369
+ }
370
+
87
371
  init().catch(console.error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frontend-hamroun",
3
- "version": "1.1.85",
3
+ "version": "1.1.86",
4
4
  "description": "A lightweight frontend framework with hooks and virtual DOM",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -0,0 +1,27 @@
1
+ \relax
2
+ \providecommand\babel@aux[2]{}
3
+ \@nameuse{bbl@beforestart}
4
+ \catcode `:\active
5
+ \catcode `;\active
6
+ \catcode `!\active
7
+ \catcode `?\active
8
+ \providecommand\hyper@newdestlabel[2]{}
9
+ \providecommand\HyField@AuxAddToFields[1]{}
10
+ \providecommand\HyField@AuxAddToCoFields[2]{}
11
+ \babel@aux{french}{}
12
+ \@writefile{toc}{\contentsline {chapter}{\numberline {1}ÉTUDE PREALABLE}{2}{chapter.1}\protected@file@percent }
13
+ \@writefile{lof}{\addvspace {10\p@ }}
14
+ \@writefile{lot}{\addvspace {10\p@ }}
15
+ \@writefile{toc}{\contentsline {section}{\numberline {1.1}Introduction}{2}{section.1.1}\protected@file@percent }
16
+ \@writefile{toc}{\contentsline {section}{\numberline {1.2}Organisme d'accueil}{2}{section.1.2}\protected@file@percent }
17
+ \@writefile{toc}{\contentsline {section}{\numberline {1.3}Étude et critique de l'existant}{2}{section.1.3}\protected@file@percent }
18
+ \@writefile{toc}{\contentsline {subsection}{\numberline {1.3.1}Critique de l'existant}{2}{subsection.1.3.1}\protected@file@percent }
19
+ \@writefile{toc}{\contentsline {subsection}{\numberline {1.3.2}Solution proposée}{2}{subsection.1.3.2}\protected@file@percent }
20
+ \@writefile{toc}{\contentsline {section}{\numberline {1.4}Choix méthodologique}{3}{section.1.4}\protected@file@percent }
21
+ \@writefile{toc}{\contentsline {subsection}{\numberline {1.4.1}Formalisme de modélisation}{3}{subsection.1.4.1}\protected@file@percent }
22
+ \@writefile{toc}{\contentsline {subsection}{\numberline {1.4.2}Méthodologie}{3}{subsection.1.4.2}\protected@file@percent }
23
+ \@writefile{toc}{\contentsline {subsubsection}{Présentation de la méthode SCRUM}{3}{section*.2}\protected@file@percent }
24
+ \@writefile{toc}{\contentsline {subsubsection}{La répartition des rôles dans la méthode SCRUM}{3}{section*.3}\protected@file@percent }
25
+ \@writefile{toc}{\contentsline {subsubsection}{Le processus de SCRUM}{3}{section*.4}\protected@file@percent }
26
+ \@writefile{toc}{\contentsline {section}{\numberline {1.5}Conclusion}{3}{section.1.5}\protected@file@percent }
27
+ \gdef \@abspage@last{4}
@@ -0,0 +1,399 @@
1
+ This is pdfTeX, Version 3.141592653-2.6-1.40.25 (MiKTeX 24.1) (preloaded format=pdflatex 2025.4.3) 11 APR 2025 21:21
2
+ entering extended mode
3
+ restricted \write18 enabled.
4
+ %&-line parsing enabled.
5
+ **./rapport_pfe.tex
6
+ (rapport_pfe.tex
7
+ LaTeX2e <2023-11-01> patch level 1
8
+ L3 programming layer <2024-01-04>
9
+ (C:\Program Files\MiKTeX\tex/latex/base\report.cls
10
+ Document Class: report 2023/05/17 v1.4n Standard LaTeX document class
11
+ (C:\Program Files\MiKTeX\tex/latex/base\size12.clo
12
+ File: size12.clo 2023/05/17 v1.4n Standard LaTeX file (size option)
13
+ )
14
+ \c@part=\count187
15
+ \c@chapter=\count188
16
+ \c@section=\count189
17
+ \c@subsection=\count190
18
+ \c@subsubsection=\count191
19
+ \c@paragraph=\count192
20
+ \c@subparagraph=\count193
21
+ \c@figure=\count194
22
+ \c@table=\count195
23
+ \abovecaptionskip=\skip48
24
+ \belowcaptionskip=\skip49
25
+ \bibindent=\dimen140
26
+ )
27
+ (C:\Program Files\MiKTeX\tex/latex/base\inputenc.sty
28
+ Package: inputenc 2021/02/14 v1.3d Input encoding file
29
+ \inpenc@prehook=\toks17
30
+ \inpenc@posthook=\toks18
31
+ )
32
+ (C:\Program Files\MiKTeX\tex/generic/babel\babel.sty
33
+ Package: babel 2024/01/07 v24.1 The Babel package
34
+ \babel@savecnt=\count196
35
+ \U@D=\dimen141
36
+ \l@unhyphenated=\language79
37
+
38
+ (C:\Program Files\MiKTeX\tex/generic/babel\txtbabel.def)
39
+ \bbl@readstream=\read2
40
+ \bbl@dirlevel=\count197
41
+
42
+ *************************************
43
+ * Local config file bblopts.cfg used
44
+ *
45
+ (C:\Program Files\MiKTeX\tex/latex/arabi\bblopts.cfg
46
+ File: bblopts.cfg 2005/09/08 v0.1 add Arabic and Farsi to "declared" options of
47
+ babel
48
+ )
49
+ (C:\Program Files\MiKTeX\tex/generic/babel-french\french.ldf
50
+ Language: french 2024-07-25 v3.6c French support from the babel system
51
+ Package babel Info: Hyphen rules for 'acadian' set to \l@french
52
+ (babel) (\language22). Reported on input line 91.
53
+ Package babel Info: Hyphen rules for 'canadien' set to \l@french
54
+ (babel) (\language22). Reported on input line 92.
55
+ \FB@stdchar=\count198
56
+ Package babel Info: Making : an active character on input line 421.
57
+ Package babel Info: Making ; an active character on input line 422.
58
+ Package babel Info: Making ! an active character on input line 423.
59
+ Package babel Info: Making ? an active character on input line 424.
60
+ \FBguill@level=\count199
61
+ \FBold@everypar=\toks19
62
+ \FB@Mht=\dimen142
63
+ \mc@charclass=\count266
64
+ \mc@charfam=\count267
65
+ \mc@charslot=\count268
66
+ \std@mcc=\count269
67
+ \dec@mcc=\count270
68
+ \FB@parskip=\dimen143
69
+ \listindentFB=\dimen144
70
+ \descindentFB=\dimen145
71
+ \labelindentFB=\dimen146
72
+ \labelwidthFB=\dimen147
73
+ \leftmarginFB=\dimen148
74
+ \parindentFFN=\dimen149
75
+ \FBfnindent=\dimen150
76
+ ))
77
+ (C:\Program Files\MiKTeX\tex/generic/babel/locale/fr\babel-french.tex
78
+ Package babel Info: Importing font and identification data for french
79
+ (babel) from babel-fr.ini. Reported on input line 11.
80
+ )
81
+ (C:\Program Files\MiKTeX\tex/latex/carlisle\scalefnt.sty)
82
+ (C:\Program Files\MiKTeX\tex/latex/graphics\graphicx.sty
83
+ Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
84
+
85
+ (C:\Program Files\MiKTeX\tex/latex/graphics\keyval.sty
86
+ Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
87
+ \KV@toks@=\toks20
88
+ )
89
+ (C:\Program Files\MiKTeX\tex/latex/graphics\graphics.sty
90
+ Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR)
91
+
92
+ (C:\Program Files\MiKTeX\tex/latex/graphics\trig.sty
93
+ Package: trig 2021/08/11 v1.11 sin cos tan (DPC)
94
+ )
95
+ (C:\Program Files\MiKTeX\tex/latex/graphics-cfg\graphics.cfg
96
+ File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
97
+ )
98
+ Package graphics Info: Driver file: pdftex.def on input line 107.
99
+
100
+ (C:\Program Files\MiKTeX\tex/latex/graphics-def\pdftex.def
101
+ File: pdftex.def 2022/09/22 v1.2b Graphics/color driver for pdftex
102
+ ))
103
+ \Gin@req@height=\dimen151
104
+ \Gin@req@width=\dimen152
105
+ )
106
+ (C:\Program Files\MiKTeX\tex/latex/fancyhdr\fancyhdr.sty
107
+ Package: fancyhdr 2025/02/07 v5.2 Extensive control of page headers and footers
108
+
109
+ \f@nch@headwidth=\skip50
110
+ \f@nch@offset@elh=\skip51
111
+ \f@nch@offset@erh=\skip52
112
+ \f@nch@offset@olh=\skip53
113
+ \f@nch@offset@orh=\skip54
114
+ \f@nch@offset@elf=\skip55
115
+ \f@nch@offset@erf=\skip56
116
+ \f@nch@offset@olf=\skip57
117
+ \f@nch@offset@orf=\skip58
118
+ \f@nch@height=\skip59
119
+ \f@nch@footalignment=\skip60
120
+ \f@nch@widthL=\skip61
121
+ \f@nch@widthC=\skip62
122
+ \f@nch@widthR=\skip63
123
+ \@temptokenb=\toks21
124
+ )
125
+ (C:\Program Files\MiKTeX\tex/latex/hyperref\hyperref.sty
126
+ Package: hyperref 2023-11-26 v7.01g Hypertext links for LaTeX
127
+
128
+ (C:\Program Files\MiKTeX\tex/generic/iftex\iftex.sty
129
+ Package: iftex 2022/02/03 v1.0f TeX engine tests
130
+ )
131
+ (C:\Program Files\MiKTeX\tex/generic/infwarerr\infwarerr.sty
132
+ Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
133
+ )
134
+ (C:\Program Files\MiKTeX\tex/latex/kvsetkeys\kvsetkeys.sty
135
+ Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO)
136
+ )
137
+ (C:\Program Files\MiKTeX\tex/generic/kvdefinekeys\kvdefinekeys.sty
138
+ Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
139
+ )
140
+ (C:\Program Files\MiKTeX\tex/generic/pdfescape\pdfescape.sty
141
+ Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
142
+
143
+ (C:\Program Files\MiKTeX\tex/generic/ltxcmds\ltxcmds.sty
144
+ Package: ltxcmds 2023-12-04 v1.26 LaTeX kernel commands for general use (HO)
145
+ )
146
+ (C:\Program Files\MiKTeX\tex/generic/pdftexcmds\pdftexcmds.sty
147
+ Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO
148
+ )
149
+ Package pdftexcmds Info: \pdf@primitive is available.
150
+ Package pdftexcmds Info: \pdf@ifprimitive is available.
151
+ Package pdftexcmds Info: \pdfdraftmode found.
152
+ ))
153
+ (C:\Program Files\MiKTeX\tex/latex/hycolor\hycolor.sty
154
+ Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
155
+ )
156
+ (C:\Program Files\MiKTeX\tex/latex/letltxmacro\letltxmacro.sty
157
+ Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)
158
+ )
159
+ (C:\Program Files\MiKTeX\tex/latex/auxhook\auxhook.sty
160
+ Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
161
+ )
162
+ (C:\Program Files\MiKTeX\tex/latex/hyperref\nameref.sty
163
+ Package: nameref 2023-11-26 v2.56 Cross-referencing by name of section
164
+
165
+ (C:\Program Files\MiKTeX\tex/latex/refcount\refcount.sty
166
+ Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
167
+ )
168
+ (C:\Program Files\MiKTeX\tex/generic/gettitlestring\gettitlestring.sty
169
+ Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
170
+
171
+ (C:\Program Files\MiKTeX\tex/latex/kvoptions\kvoptions.sty
172
+ Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO)
173
+ ))
174
+ \c@section@level=\count271
175
+ )
176
+ (C:\Program Files\MiKTeX\tex/latex/etoolbox\etoolbox.sty
177
+ Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW)
178
+ \etb@tempcnta=\count272
179
+ )
180
+ \@linkdim=\dimen153
181
+ \Hy@linkcounter=\count273
182
+ \Hy@pagecounter=\count274
183
+
184
+ (C:\Program Files\MiKTeX\tex/latex/hyperref\pd1enc.def
185
+ File: pd1enc.def 2023-11-26 v7.01g Hyperref: PDFDocEncoding definition (HO)
186
+ Now handling font encoding PD1 ...
187
+ ... no UTF-8 mapping file for font encoding PD1
188
+ )
189
+ (C:\Program Files\MiKTeX\tex/generic/intcalc\intcalc.sty
190
+ Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
191
+ )
192
+ \Hy@SavedSpaceFactor=\count275
193
+
194
+ (C:\Program Files\MiKTeX\tex/latex/hyperref\puenc.def
195
+ File: puenc.def 2023-11-26 v7.01g Hyperref: PDF Unicode definition (HO)
196
+ Now handling font encoding PU ...
197
+ ... no UTF-8 mapping file for font encoding PU
198
+ )
199
+ Package hyperref Info: Hyper figures OFF on input line 4181.
200
+ Package hyperref Info: Link nesting OFF on input line 4186.
201
+ Package hyperref Info: Hyper index ON on input line 4189.
202
+ Package hyperref Info: Plain pages OFF on input line 4196.
203
+ Package hyperref Info: Backreferencing OFF on input line 4201.
204
+ Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
205
+ Package hyperref Info: Bookmarks ON on input line 4448.
206
+ \c@Hy@tempcnt=\count276
207
+
208
+ (C:\Program Files\MiKTeX\tex/latex/url\url.sty
209
+ \Urlmuskip=\muskip16
210
+ Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
211
+ )
212
+ LaTeX Info: Redefining \url on input line 4786.
213
+ \XeTeXLinkMargin=\dimen154
214
+
215
+ (C:\Program Files\MiKTeX\tex/generic/bitset\bitset.sty
216
+ Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
217
+
218
+ (C:\Program Files\MiKTeX\tex/generic/bigintcalc\bigintcalc.sty
219
+ Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO
220
+ )
221
+ ))
222
+ \Fld@menulength=\count277
223
+ \Field@Width=\dimen155
224
+ \Fld@charsize=\dimen156
225
+ Package hyperref Info: Hyper figures OFF on input line 6065.
226
+ Package hyperref Info: Link nesting OFF on input line 6070.
227
+ Package hyperref Info: Hyper index ON on input line 6073.
228
+ Package hyperref Info: backreferencing OFF on input line 6080.
229
+ Package hyperref Info: Link coloring OFF on input line 6085.
230
+ Package hyperref Info: Link coloring with OCG OFF on input line 6090.
231
+ Package hyperref Info: PDF/A mode OFF on input line 6095.
232
+
233
+ (C:\Program Files\MiKTeX\tex/latex/base\atbegshi-ltx.sty
234
+ Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi
235
+ package with kernel methods
236
+ )
237
+ \Hy@abspage=\count278
238
+ \c@Item=\count279
239
+ \c@Hfootnote=\count280
240
+ )
241
+ Package hyperref Info: Driver (autodetected): hpdftex.
242
+
243
+ (C:\Program Files\MiKTeX\tex/latex/hyperref\hpdftex.def
244
+ File: hpdftex.def 2023-11-26 v7.01g Hyperref driver for pdfTeX
245
+
246
+ (C:\Program Files\MiKTeX\tex/latex/base\atveryend-ltx.sty
247
+ Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend pac
248
+ kage
249
+ with kernel methods
250
+ )
251
+ \Fld@listcount=\count281
252
+ \c@bookmark@seq@number=\count282
253
+
254
+ (C:\Program Files\MiKTeX\tex/latex/rerunfilecheck\rerunfilecheck.sty
255
+ Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO)
256
+
257
+ (C:\Program Files\MiKTeX\tex/generic/uniquecounter\uniquecounter.sty
258
+ Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
259
+ )
260
+ Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
261
+ 85.
262
+ )
263
+ \Hy@SectionHShift=\skip64
264
+ )
265
+ Package hyperref Info: Option `colorlinks' set `true' on input line 13.
266
+
267
+ (C:\Program Files\MiKTeX\tex/latex/l3backend\l3backend-pdftex.def
268
+ File: l3backend-pdftex.def 2024-01-04 L3 backend support: PDF output (pdfTeX)
269
+ \l__color_backend_stack_int=\count283
270
+ \l__pdf_internal_box=\box51
271
+ )
272
+ (rapport_pfe.aux)
273
+ \openout1 = `rapport_pfe.aux'.
274
+
275
+ LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 25.
276
+ LaTeX Font Info: ... okay on input line 25.
277
+ LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 25.
278
+ LaTeX Font Info: ... okay on input line 25.
279
+ LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 25.
280
+ LaTeX Font Info: ... okay on input line 25.
281
+ LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 25.
282
+ LaTeX Font Info: ... okay on input line 25.
283
+ LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 25.
284
+ LaTeX Font Info: ... okay on input line 25.
285
+ LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 25.
286
+ LaTeX Font Info: ... okay on input line 25.
287
+ LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 25.
288
+ LaTeX Font Info: ... okay on input line 25.
289
+ LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 25.
290
+ LaTeX Font Info: ... okay on input line 25.
291
+ LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 25.
292
+ LaTeX Font Info: ... okay on input line 25.
293
+ LaTeX Info: Redefining \degres on input line 25.
294
+ LaTeX Info: Redefining \up on input line 25.
295
+
296
+
297
+ Package french.ldf Warning: OT1 encoding should not be used for French.
298
+ (french.ldf) Add \usepackage[T1]{fontenc} to the preamble
299
+ (french.ldf) of your document; reported on input line 25.
300
+
301
+ (C:\Program Files\MiKTeX\tex/context/base/mkii\supp-pdf.mkii
302
+ [Loading MPS to PDF converter (version 2006.09.02).]
303
+ \scratchcounter=\count284
304
+ \scratchdimen=\dimen157
305
+ \scratchbox=\box52
306
+ \nofMPsegments=\count285
307
+ \nofMParguments=\count286
308
+ \everyMPshowfont=\toks22
309
+ \MPscratchCnt=\count287
310
+ \MPscratchDim=\dimen158
311
+ \MPnumerator=\count288
312
+ \makeMPintoPDFobject=\count289
313
+ \everyMPtoPDFconversion=\toks23
314
+ ) (C:\Program Files\MiKTeX\tex/latex/epstopdf-pkg\epstopdf-base.sty
315
+ Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
316
+ Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
317
+ 85.
318
+
319
+ (C:\Program Files\MiKTeX\tex/latex/00miktex\epstopdf-sys.cfg
320
+ File: epstopdf-sys.cfg 2021/03/18 v2.0 Configuration of epstopdf for MiKTeX
321
+ ))
322
+ (C:\Program Files\MiKTeX\tex/latex/graphics\color.sty
323
+ Package: color 2022/01/06 v1.3d Standard LaTeX Color (DPC)
324
+
325
+ (C:\Program Files\MiKTeX\tex/latex/graphics-cfg\color.cfg
326
+ File: color.cfg 2016/01/02 v1.6 sample color configuration
327
+ )
328
+ Package color Info: Driver file: pdftex.def on input line 149.
329
+
330
+ (C:\Program Files\MiKTeX\tex/latex/graphics\mathcolor.ltx))
331
+ Package hyperref Info: Link coloring ON on input line 25.
332
+ (rapport_pfe.out)
333
+ (rapport_pfe.out)
334
+ \@outlinefile=\write3
335
+ \openout3 = `rapport_pfe.out'.
336
+
337
+ LaTeX Font Info: External font `cmex10' loaded for size
338
+ (Font) <14.4> on input line 28.
339
+ LaTeX Font Info: External font `cmex10' loaded for size
340
+ (Font) <7> on input line 28.
341
+ [1
342
+
343
+ {C:/Users/hamro/AppData/Local/MiKTeX/fonts/map/pdftex/pdftex.map}] (rapport_pfe
344
+ .toc
345
+ LaTeX Font Info: External font `cmex10' loaded for size
346
+ (Font) <12> on input line 3.
347
+ LaTeX Font Info: External font `cmex10' loaded for size
348
+ (Font) <8> on input line 3.
349
+ LaTeX Font Info: External font `cmex10' loaded for size
350
+ (Font) <6> on input line 3.
351
+ )
352
+ \tf@toc=\write4
353
+ \openout4 = `rapport_pfe.toc'.
354
+
355
+
356
+ pdfTeX warning (ext4): destination with the same identifier (name{page.1}) has
357
+ been already used, duplicate ignored
358
+ <to be read again>
359
+ \relax
360
+ l.29 \newpage
361
+ [1
362
+
363
+ ]
364
+ Chapitre 1.
365
+ [2
366
+
367
+ ]
368
+
369
+ Package fancyhdr Warning: \headheight is too small (12.0pt):
370
+ (fancyhdr) Make it at least 15.71667pt, for example:
371
+ (fancyhdr) \setlength{\headheight}{15.71667pt}.
372
+ (fancyhdr) You might also make \topmargin smaller:
373
+ (fancyhdr) \addtolength{\topmargin}{-3.71667pt}.
374
+
375
+ [3] (rapport_pfe.aux)
376
+ ***********
377
+ LaTeX2e <2023-11-01> patch level 1
378
+ L3 programming layer <2024-01-04>
379
+ ***********
380
+ Package rerunfilecheck Info: File `rapport_pfe.out' has not changed.
381
+ (rerunfilecheck) Checksum: 3EE8BAE7C5596D6C97ACEA2FBAB7472C;1532.
382
+ )
383
+ Here is how much of TeX's memory you used:
384
+ 10770 strings out of 474486
385
+ 174935 string characters out of 5753571
386
+ 1930542 words of memory out of 5000000
387
+ 32928 multiletter control sequences out of 15000+600000
388
+ 563843 words of font info for 55 fonts, out of 8000000 for 9000
389
+ 1141 hyphenation exceptions out of 8191
390
+ 75i,12n,79p,274b,475s stack positions out of 10000i,1000n,20000p,200000b,200000s
391
+ <C:/Program Files/MiKTeX/fonts/type1/public/amsfonts/cm/cmbx12.pfb><C:/Progra
392
+ m Files/MiKTeX/fonts/type1/public/amsfonts/cm/cmr12.pfb><C:/Program Files/MiKTe
393
+ X/fonts/type1/public/amsfonts/cm/cmr17.pfb>
394
+ Output written on rapport_pfe.pdf (4 pages, 59939 bytes).
395
+ PDF statistics:
396
+ 95 PDF objects out of 1000 (max. 8388607)
397
+ 18 named destinations out of 1000 (max. 500000)
398
+ 81 words of extra memory for PDF output out of 10000 (max. 10000000)
399
+
@@ -0,0 +1,10 @@
1
+ \BOOKMARK [0][-]{chapter.1}{\376\377\000\311\000T\000U\000D\000E\000\040\000P\000R\000E\000A\000L\000A\000B\000L\000E}{}% 1
2
+ \BOOKMARK [1][-]{section.1.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{chapter.1}% 2
3
+ \BOOKMARK [1][-]{section.1.2}{\376\377\000O\000r\000g\000a\000n\000i\000s\000m\000e\000\040\000d\000'\000a\000c\000c\000u\000e\000i\000l}{chapter.1}% 3
4
+ \BOOKMARK [1][-]{section.1.3}{\376\377\000\311\000t\000u\000d\000e\000\040\000e\000t\000\040\000c\000r\000i\000t\000i\000q\000u\000e\000\040\000d\000e\000\040\000l\000'\000e\000x\000i\000s\000t\000a\000n\000t}{chapter.1}% 4
5
+ \BOOKMARK [2][-]{subsection.1.3.1}{\376\377\000C\000r\000i\000t\000i\000q\000u\000e\000\040\000d\000e\000\040\000l\000'\000e\000x\000i\000s\000t\000a\000n\000t}{section.1.3}% 5
6
+ \BOOKMARK [2][-]{subsection.1.3.2}{\376\377\000S\000o\000l\000u\000t\000i\000o\000n\000\040\000p\000r\000o\000p\000o\000s\000\351\000e}{section.1.3}% 6
7
+ \BOOKMARK [1][-]{section.1.4}{\376\377\000C\000h\000o\000i\000x\000\040\000m\000\351\000t\000h\000o\000d\000o\000l\000o\000g\000i\000q\000u\000e}{chapter.1}% 7
8
+ \BOOKMARK [2][-]{subsection.1.4.1}{\376\377\000F\000o\000r\000m\000a\000l\000i\000s\000m\000e\000\040\000d\000e\000\040\000m\000o\000d\000\351\000l\000i\000s\000a\000t\000i\000o\000n}{section.1.4}% 8
9
+ \BOOKMARK [2][-]{subsection.1.4.2}{\376\377\000M\000\351\000t\000h\000o\000d\000o\000l\000o\000g\000i\000e}{section.1.4}% 9
10
+ \BOOKMARK [1][-]{section.1.5}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n}{chapter.1}% 10
@@ -0,0 +1,68 @@
1
+ \documentclass[12pt,a4paper]{report}
2
+ \usepackage[utf8]{inputenc}
3
+ \usepackage[french]{babel}
4
+ \usepackage{graphicx}
5
+ \usepackage{fancyhdr}
6
+ \usepackage{hyperref}
7
+
8
+ \hypersetup{
9
+ colorlinks=true,
10
+ linkcolor=blue,
11
+ filecolor=magenta,
12
+ urlcolor=cyan,
13
+ }
14
+
15
+ \pagestyle{fancy}
16
+ \fancyhf{}
17
+ \rhead{Projet de Fin d'Études}
18
+ \lhead{Rapport de Stage}
19
+ \rfoot{Page \thepage}
20
+
21
+ \title{Rapport de Projet de Fin d'Études}
22
+ \author{Votre Nom}
23
+ \date{\today}
24
+
25
+ \begin{document}
26
+
27
+ \maketitle
28
+ \tableofcontents
29
+ \newpage
30
+
31
+ \chapter{ÉTUDE PREALABLE}
32
+
33
+ \section{Introduction}
34
+ Cette section présente une introduction générale au projet, incluant le contexte, les objectifs et la problématique abordée dans ce projet de fin d'études.
35
+
36
+ \section{Organisme d'accueil}
37
+ Cette section décrit l'organisme d'accueil où s'est déroulé le stage, incluant sa présentation, ses activités principales et sa structure organisationnelle.
38
+
39
+ \section{Étude et critique de l'existant}
40
+ Cette section analyse la situation actuelle avant l'implémentation du projet.
41
+
42
+ \subsection{Critique de l'existant}
43
+ Cette partie détaille les limitations, problèmes et défis identifiés dans le système existant qui ont motivé le développement d'une nouvelle solution.
44
+
45
+ \subsection{Solution proposée}
46
+ Cette partie présente la solution proposée pour résoudre les problèmes identifiés, en décrivant ses principales caractéristiques et avantages.
47
+
48
+ \section{Choix méthodologique}
49
+
50
+ \subsection{Formalisme de modélisation}
51
+ Cette section détaille les formalismes de modélisation utilisés pour concevoir et représenter la solution.
52
+
53
+ \subsection{Méthodologie}
54
+ Cette partie décrit l'approche méthodologique adoptée pour la réalisation du projet.
55
+
56
+ \subsubsection{Présentation de la méthode SCRUM}
57
+ Cette partie introduit la méthode SCRUM, ses principes fondamentaux et ses avantages dans le contexte du développement logiciel.
58
+
59
+ \subsubsection{La répartition des rôles dans la méthode SCRUM}
60
+ Cette section explique les différents rôles dans la méthode SCRUM (Product Owner, Scrum Master, équipe de développement) et leurs responsabilités.
61
+
62
+ \subsubsection{Le processus de SCRUM}
63
+ Cette partie détaille le processus SCRUM avec ses différentes cérémonies (Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective) et artefacts (Product Backlog, Sprint Backlog, Increment).
64
+
65
+ \section{Conclusion}
66
+ Cette section résume les points clés abordés dans ce chapitre et fait la transition vers le chapitre suivant.
67
+
68
+ \end{document}
@@ -0,0 +1,14 @@
1
+ \babel@toc {french}{}\relax
2
+ \contentsline {chapter}{\numberline {1}ÉTUDE PREALABLE}{2}{chapter.1}%
3
+ \contentsline {section}{\numberline {1.1}Introduction}{2}{section.1.1}%
4
+ \contentsline {section}{\numberline {1.2}Organisme d'accueil}{2}{section.1.2}%
5
+ \contentsline {section}{\numberline {1.3}Étude et critique de l'existant}{2}{section.1.3}%
6
+ \contentsline {subsection}{\numberline {1.3.1}Critique de l'existant}{2}{subsection.1.3.1}%
7
+ \contentsline {subsection}{\numberline {1.3.2}Solution proposée}{2}{subsection.1.3.2}%
8
+ \contentsline {section}{\numberline {1.4}Choix méthodologique}{3}{section.1.4}%
9
+ \contentsline {subsection}{\numberline {1.4.1}Formalisme de modélisation}{3}{subsection.1.4.1}%
10
+ \contentsline {subsection}{\numberline {1.4.2}Méthodologie}{3}{subsection.1.4.2}%
11
+ \contentsline {subsubsection}{Présentation de la méthode SCRUM}{3}{section*.2}%
12
+ \contentsline {subsubsection}{La répartition des rôles dans la méthode SCRUM}{3}{section*.3}%
13
+ \contentsline {subsubsection}{Le processus de SCRUM}{3}{section*.4}%
14
+ \contentsline {section}{\numberline {1.5}Conclusion}{3}{section.1.5}%