Remove obsolete instruction notebooks and update ToC

Deleted instructie.ipynb, instructie_2.ipynb, and lesoefeningen.ipynb from the book. Updated _toc.yml to remove references to these files and moved the Sphinx-Gated-Directives manual link to the correct section. Minor update to intro.md.
This commit is contained in:
Dennis den Ouden-van der Horst 2026-01-04 16:51:14 +01:00
parent ab38930bb3
commit a4cb6d7090
5 changed files with 1 additions and 3467 deletions

View file

@ -2,12 +2,6 @@ format: jb-book
root: intro
parts:
- caption: test sphinx_gated_directives
chapters:
- external: https://github.com/TeachBooks/Sphinx-Gated-Directives/blob/main/MANUAL.md
- file: instructie.ipynb
- file: instructie_2.ipynb
- file: lesoefeningen.ipynb
- caption: Your First TeachBook!
chapters:
- file: intro/book.md
@ -95,6 +89,7 @@ parts:
- external: https://github.com/TeachBooks/Sphinx-ref-graph/blob/manual/README.md
- external: https://github.com/TeachBooks/Sphinx-GitHub-Alerts/blob/main/README.md
- external: https://github.com/TeachBooks/Sphinx-Metadata-Figure/blob/main/MANUAL.ipynb # BUMP
- external: https://github.com/TeachBooks/Sphinx-Gated-Directives/blob/main/MANUAL.md
- file: features/visuals.md
sections:
- external: https://github.com/TeachBooks/Sphinx-Accessibility/blob/manual/README.md

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,210 +1,5 @@
---
file_format: mystnb
kernelspec:
name: python3
---
# TeachBooks Manual
## Nesting inside of a start-directive
### Different directives
::::{prf:theorem-start} The parent theorem
:label: parent-theorem-label
This is a parent theorem. This text is inside the parent theorem.
:::{prf:axiom-start} A child axiom
:label: child-axiom-label
This is a child axiom. This text is inside the child directive.
:::
This is text after the child-start, before the child-end, inside the parent theorem.
:::{prf:axiom-end}
Text inside the end. This text will not be rendered.
:::
Finally some text after the entire child, inside the theorem start.
::::
Some text after the entire parent theorem start, but before the parent theorem end.
:::{prf:theorem-end}
:::
### Same directives
::::{prf:theorem-start} The parent theorem
:label: parent-theorem-label2
This is a parent theorem. This text is inside the parent theorem.
:::{prf:theorem-start} A child theorem
:label: child-theorem-label
This is a child theorem. This text is inside the child directive.
:::
This is text after the child-start, before the child-end, inside the parent theorem.
:::{prf:theorem-end}
:::
Finally some text after the entire child, inside the theorem start.
::::
Some text after the entire parent theorem start, but before the parent theorem end.
:::{prf:theorem-end}
:::
## Nesting outside of a start-directive
### Different directives
::::{prf:theorem-start} The parent theorem
:label: parent-theorem-label3
This is a parent theorem. This text is inside the parent theorem.
::::
Some text outside the parent theorem start, before the child start directive.
:::{exercise-start} A child exercise
:label: child-exercise-label2
This is a child exercise. This text is inside the child directive.
:::
This is text after the child-start, before the child-end.
:::{exercise-end}
:::
Finally some text after the entire child, outside the theorem start, before the end.
:::{prf:theorem-end}
:::
:::{exercise} This is an exercise outside any theorem.
:label: exercise-outside-theorem
Solve this exercise.
:::
### Same directives
::::{prf:theorem-start} The parent theorem
:label: parent-theorem-label4
This is a parent theorem. This text is inside the parent theorem.
::::
Some text outside the parent theorem start, before the child start directive.
:::{prf:theorem-start} A child theorem
:label: child-theorem-label5
This is a child theorem. This text is inside the child directive.
:::
This is text after the child-start, before the child-end.
:::{prf:theorem-end}
:::
Finally some text after the entire child, outside the theorem start, before the end.
:::{prf:theorem-end}
:::
### Nested exercise directives
:::{exercise-start} An outer exercise with an inner exercise between start and end
:label: outer-exercise-label
This is an outer exercise. This text is inside the outer exercise.
:::
:::{exercise-start} An inner exercise
:label: inner-exercise-label
This is an inner exercise. This text is inside the inner exercise.
:::
This is text after the inner exercise start, before the inner exercise end.
:::{exercise-end}
:::
Finally some text after the entire inner exercise, inside the outer exercise.
:::{exercise-end}
:::
## Examples with code
### Block directive with also a figure
:::{prf:theorem-start} A title
:label: theorem-label
This is a theorem. This text is inside the directive.
:::
Now some extra text that should come inside the theorem.
:::{figure} images/sphinx-logo.svg
:alt: Sphinx logo
:width: 200px
:align: center
Sphinx is a great tool for documentation! This figure should be inside the theorem.
:::
```{code-cell} ipython3
a = "This is some"
b = "Python code"
c = "that should be inside the theorem."
print(f"{a} {b} {c}")
```
:::{prf:theorem-end}
:::
### Figure directive with nothing with also another figure
:::{figure-start} images/nothing.svg
:name: figure-label
:alt: Nothing
:align: center
This is a figure. This text is inside the caption.
:::
```{code-cell} ipython3
a = "This is some"
b = "Python code"
c = "that should be inside the figure,"
d = "above the caption."
print(f"{a} {b} {c} {d}")
```
Now some extra text that should come inside the figure, above the caption.
:::{figure} images/sphinx-logo.svg
:alt: Sphinx logo
:width: 200px
:align: center
Sphinx is a great tool for documentation! This figure should be inside the parent figure, above the parent caption.
:::
:::{figure-end}
:::
This manual is primarily designed for and by teachers for use in education, but should be a useful resource for anyone interested in creating and collaborating on a TeachBook: a <a href="https://jupyterbook.org/v1/"><img style="display:inline-block; height:1.5em; width:auto; transform:translate(0, -0.15em)" src="images/logo-wide.svg" alt="Jupyter book v1"> v1</a> using the <a href="https://www.sphinx-doc.org/"><img style="display:inline-block; height:1.5em; width:auto; transform:translate(0, -0.15em)" src="images/sphinx-logo.svg" alt="Sphinx logo"> Sphinx backend</a> with additional editing tools and book features. Our aim is to provide a simple way to start book-making for new users (it only takes 10 clicks!), ease the editing process for anyone, and provide additional features developed for education-purposes. We hope you find this resource useful and refer back to it often.
TeachBooks originated at Delft University of Technology in the Netherlands, and some of the material in this Manual reflects tools and resources specific to TU Delft. With the exception of a few tools for which we have educational licenses at Delft, everything in this Manual is open source. Despite this, we are happy to grow our open source community beyond Delft and welcome contributions from all users.

View file

@ -1,316 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "44f13f99",
"metadata": {},
"source": [
"````{margin}\n",
"```{attributiongrey} Bronvermelding\n",
":class: attribution\n",
"\n",
"Deze oefening is aangepast van https://oit.tudelft.nl/CT1000/2024/week_3/session_1/intro.html\n",
"\n",
"% Figures from https://github.com/TUDelft-books/CT1000/blob/2025/book/week_3/session_1/intro_data/Tekening1.vsdx\n",
"\n",
"```\n",
"```` \n",
"\n",
"# Begeleide oefening 1_oud\n",
"\n",
"Gegeven is de volgende constructie:\n",
"\n",
"```{figure} lesoefeningen_data/figure2.svg\n",
"---\n",
"align: center\n",
"---\n",
"Constructie, $EI = 6400 \\ \\rm{kNm^2}$\n",
"```\n",
"\n",
":::::{exercise}\n",
":label: ODE_3_1\n",
":nonumber: true\n",
"\n",
"Bepaal de segmenten en teken de vrijlichaamsschema's.\n",
"\n",
"```{h5p} https://tudelft.h5p.com/content/1292630673009985967/embed\n",
"```\n",
"\n",
":::::\n",
"\n",
"% solution_start\n",
"\n",
"::::{admonition} Solution\n",
":class: solution, dropdown\n",
"\n",
"$q_z = -12 \\cdot x + 0$\n",
"\n",
"::::\n",
"\n",
"% solution_end\n",
"\n",
":::::{exercise}\n",
":label: ODE_3_2\n",
":nonumber: true\n",
"\n",
"Bepaal de relaties van de krachtsgrootheden en verplaatsingen.\n",
"\n",
"```{h5p} https://tudelft.h5p.com/content/1292630677998825487/embed\n",
"```\n",
"\n",
":::::\n",
"\n",
"% solution_start\n",
"\n",
"::::{admonition} Solution\n",
":class: solution, dropdown\n",
"\n",
"- $ w \\left( 0\\right) = 0 $\n",
"- $ M \\left( 0\\right) = 0$\n",
"- $ w \\left( 8\\right) = 0$\n",
"- $ \\varphi \\left( 8 \\right) = 0$\n",
"\n",
"::::\n",
"\n",
"% solution_end\n",
"\n",
":::::{exercise-start}\n",
":label: ODE_3_3\n",
":nonumber: true\n",
"\n",
"Los de integratieconstanten op. Je kan gebruik maken van de volgende code cellen. (Klik op {fa}`rocket` --> {guilabel}`Live Code` om live python code te activeren op deze pagina.)\n",
"\n",
"```{h5p} https://tudelft.h5p.com/content/1292630704310133517/embed\n",
"```\n",
"\n",
":::::\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "91dc34be",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"A = np.array([\n",
" [ , , , ],\n",
" [ , , , ],\n",
" [ , , , ],\n",
" [ , , , ],\n",
"])\n",
"\n",
"b = np.array([\n",
" ,\n",
" ,\n",
" ,\n",
" ,\n",
"])\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ce6f1792",
"metadata": {},
"outputs": [],
"source": [
"np.linalg.solve(A,b)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9e466305",
"metadata": {},
"outputs": [],
"source": [
"import sympy as sym\n",
"sym.init_printing()\n",
"\n",
"x = sym.symbols('x')\n",
"\n",
"q = \n",
"EI = 6400\n",
"\n",
"C_1, C_2, C_3, C_4 = sym.symbols('C_1 C_2 C_3 C_4')\n",
"\n",
"V = -sym.integrate(q, x) + C_1\n",
"M = sym.integrate(V, x) + C_2\n",
"kappa = M/EI\n",
"phi = sym.integrate(kappa, x) + C_3\n",
"w = -sym.integrate(phi, x) + C_4\n",
"\n",
"eq1 = sym.Eq(w.subs(x,0), )\n",
"eq2 = sym.Eq( .subs(x,0), )\n",
"eq3 = sym.Eq(w.subs(x,8), )\n",
"eq4 = sym.Eq( .subs(x,8),0)\n",
"\n",
"sol = sym.solve([eq1,eq2,eq3,eq4],(C_1,C_2,C_3,C_4))\n",
"for k, v in sol.items():\n",
" print(f\"{k} = {v} ≈ {v.evalf()}\")"
]
},
{
"cell_type": "markdown",
"id": "94270e4f",
"metadata": {},
"source": [
":::::{exercise-end}\n",
":::::\n",
"\n",
"% solution_start\n",
"\n",
"::::{solution-start} ODE_3_3\n",
":class: dropdown\n",
"::::\n",
"\n",
"$ w = - \\cfrac{x^{5}}{10} + \\cfrac{64 x^{3}}{5} - \\cfrac{2048 x}{5} = - 0.1 x^{5} + 12.8 x^{3} - 409.6 x $\n",
"% solution_end"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "f46e4efd",
"metadata": {
"tags": [
"solution"
]
},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"A = np.array([\n",
" [ 0 , 0 , 0,1],\n",
" [ 0 , 1 , 0,0],\n",
" [-1/75 ,-1/200,-8,1],\n",
" [ 1/200, 1/800, 1,0],\n",
"])\n",
"\n",
"b = np.array([\n",
" 0,\n",
" 0,\n",
" 64/125,\n",
" -8/25,\n",
"])\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "300cd851",
"metadata": {
"tags": [
"solution"
]
},
"outputs": [
{
"data": {
"text/plain": [
"array([-7.68e+01, 0.00e+00, 6.40e-02, 0.00e+00])"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.linalg.solve(A,b)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "96516034",
"metadata": {
"tags": [
"solution"
]
},
"outputs": [
{
"data": {
"image/png": "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",
"text/latex": [
"$\\displaystyle - 0.1 x^{5} + 12.8 x^{3} - 409.6 x$"
],
"text/plain": [
" 5 3 \n",
"- 0.1⋅x + 12.8⋅x - 409.6⋅x"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import sympy as sym\n",
"sym.init_printing()\n",
"\n",
"x = sym.symbols('x')\n",
"\n",
"q = -12 * x\n",
"EI = 6400\n",
"\n",
"C_1, C_2, C_3, C_4 = sym.symbols('C_1 C_2 C_3 C_4')\n",
"\n",
"V = -sym.integrate(q, x) + C_1\n",
"M = sym.integrate(V, x) + C_2\n",
"kappa = M/EI\n",
"phi = sym.integrate(kappa, x) + C_3\n",
"w = -sym.integrate(phi, x) + C_4\n",
"\n",
"eq1 = sym.Eq(w.subs(x,0),0)\n",
"eq2 = sym.Eq(M.subs(x,0),0)\n",
"eq3 = sym.Eq(w.subs(x,8),0)\n",
"eq4 = sym.Eq(phi.subs(x,8),0)\n",
"\n",
"sol = sym.solve([eq1,eq2,eq3,eq4],(C_1,C_2,C_3,C_4))\n",
"\n",
"display((w.subs(sol)*EI).evalf())\n",
"\n",
"A,b = sym.linear_eq_to_matrix((eq1,eq2,eq3,eq4), (C_1,C_2,C_3,C_4))"
]
},
{
"cell_type": "markdown",
"id": "b3a4c9d4",
"metadata": {},
"source": [
"% solution_start\n",
"\n",
"::::{solution-end}\n",
"::::\n",
"\n",
"% solution_end"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}