Aktuelles PDF gibt's auch hier: https://flavigny.de/lecture/pdf/analysis2 zum bequemeren Lesen.
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

252 Zeilen
7.1KB

  1. \ProvidesClass{lecture}
  2. \LoadClass[a4paper]{book}
  3. \RequirePackage[utf8]{inputenc}
  4. \RequirePackage[T1]{fontenc}
  5. \RequirePackage{textcomp}
  6. \RequirePackage[german]{babel}
  7. \RequirePackage{amsmath, amssymb, amsthm}
  8. \RequirePackage{mdframed}
  9. \RequirePackage{geometry}
  10. \RequirePackage{import}
  11. \RequirePackage{pdfpages}
  12. \RequirePackage{transparent}
  13. \RequirePackage{xcolor}
  14. \RequirePackage{array}
  15. \RequirePackage[shortlabels]{enumitem}
  16. \RequirePackage{tikz}
  17. \RequirePackage{pgfplots}
  18. \RequirePackage[pagestyles, nobottomtitles]{titlesec}
  19. \RequirePackage{listings}
  20. \RequirePackage{mathtools}
  21. \RequirePackage{forloop}
  22. \RequirePackage{totcount}
  23. \RequirePackage[hidelinks, unicode]{hyperref} %[unicode, hidelinks]{hyperref}
  24. \RequirePackage{bookmark}
  25. \RequirePackage{wasysym}
  26. \RequirePackage{environ}
  27. \usetikzlibrary{quotes, angles}
  28. \geometry{
  29. bottom=35mm
  30. }
  31. %\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
  32. \DeclareOption{uebung}{
  33. \makeatletter
  34. \lhead{\@title}
  35. \rhead{\@author}
  36. \makeatother
  37. }
  38. \ProcessOptions\relax
  39. % PARAGRAPH no indent but skip
  40. \setlength{\parskip}{3mm}
  41. \setlength{\parindent}{0mm}
  42. \theoremstyle{definition}
  43. \newmdtheoremenv{satz}{Satz}[chapter]
  44. \newmdtheoremenv{lemma}[satz]{Lemma}
  45. \newmdtheoremenv{korrolar}[satz]{Korrolar}
  46. \newmdtheoremenv{definition}[satz]{Definition}
  47. \newtheorem{bsp}[satz]{Beispiel}
  48. \newtheorem{bem}[satz]{Bemerkung}
  49. \newtheorem{aufgabe}{Aufgabe}
  50. % enable aufgaben counting
  51. \regtotcounter{aufgabe}
  52. \newcommand{\N}{\mathbb{N}}
  53. \newcommand{\R}{\mathbb{R}}
  54. \newcommand{\Z}{\mathbb{Z}}
  55. \newcommand{\Q}{\mathbb{Q}}
  56. \renewcommand{\C}{\mathbb{C}}
  57. % HEADERS
  58. %\newpagestyle{main}[\small]{
  59. % \setheadrule{.55pt}%
  60. % \sethead[\thepage]% even-left
  61. % []% even-center
  62. % [\thechapter~\chaptertitle]% even-right
  63. % {\thesection~\sectiontitle}% odd-left
  64. % {}% odd-center
  65. % {\thepage}% odd-right
  66. %}
  67. %\pagestyle{main}
  68. \newcommand{\incfig}[1]{%
  69. \def\svgwidth{\columnwidth}
  70. \import{./figures/}{#1.pdf_tex}
  71. }
  72. \pdfsuppresswarningpagegroup=1
  73. % horizontal rule
  74. \newcommand\hr{
  75. \noindent\rule[0.5ex]{\linewidth}{0.5pt}
  76. }
  77. % punkte tabelle
  78. \newcommand{\punkte}{
  79. \@punkten{\totvalue{aufgabe}}
  80. }
  81. \def\@punkten#1{
  82. \newcounter{n}
  83. \begin{tabular}{|c|*{#1}{m{1cm}|}m{1cm}|@{}m{0cm}@{}}
  84. \hline
  85. Aufgabe
  86. \forloop{n}{1}{\not{\value{n} > #1}}{
  87. & \centering A\then
  88. }
  89. & \centering $\sum$ & \\[5mm] \hline
  90. Punkte
  91. \forloop{n}{1}{\not{\value{n} > #1}}{
  92. &
  93. }
  94. & & \\[5mm] \hline
  95. \end{tabular}
  96. }
  97. % code listings, define style
  98. \lstdefinestyle{mystyle}{
  99. commentstyle=\color{gray},
  100. keywordstyle=\color{blue},
  101. numberstyle=\tiny\color{gray},
  102. stringstyle=\color{black},
  103. basicstyle=\ttfamily\footnotesize,
  104. breakatwhitespace=false,
  105. breaklines=true,
  106. captionpos=b,
  107. keepspaces=true,
  108. numbers=left,
  109. numbersep=5pt,
  110. showspaces=false,
  111. showstringspaces=false,
  112. showtabs=false,
  113. tabsize=2
  114. }
  115. % activate my colour style
  116. \lstset{style=mystyle}
  117. % better stackrel
  118. \let\oldstackrel\stackrel
  119. \renewcommand{\stackrel}[2]{%
  120. \oldstackrel{\mathclap{#1}}{#2}
  121. }%
  122. % integral d sign
  123. \makeatletter \renewcommand\d[2][]{\ensuremath{%
  124. \,\mathrm{d}^{#1}#2\@ifnextchar^{}{\@ifnextchar\d{}{\,}}}}
  125. \makeatother
  126. % remove page before chapters
  127. \let\cleardoublepage=\clearpage
  128. %josua
  129. \newcommand{\norm}[1]{\left\Vert#1\right\Vert}
  130. % contradiction
  131. \newcommand{\contr}{\text{\Large\lightning}}
  132. % people seem to prefer varepsilon over epsilon
  133. \renewcommand{\epsilon}{\varepsilon}
  134. \ExplSyntaxOn
  135. % S-tackrelcompatible ALIGN environment
  136. % some might also call it the S-uper ALIGN environment
  137. % uses regular expressions to calculate the widest stackrel
  138. % to put additional padding on both sides of relation symbols
  139. \NewEnviron{salign}
  140. {
  141. \begin{align}
  142. \lec_insert_padding:V \BODY
  143. \end{align}
  144. }
  145. % starred version that does no equation numbering
  146. \NewEnviron{salign*}
  147. {
  148. \begin{align*}
  149. \lec_insert_padding:V \BODY
  150. \end{align*}
  151. }
  152. % some helper variables
  153. \tl_new:N \l__lec_text_tl
  154. \seq_new:N \l_lec_stackrels_seq
  155. \int_new:N \l_stackrel_count_int
  156. \int_new:N \l_idx_int
  157. \box_new:N \l_tmp_box
  158. \dim_new:N \l_tmp_dim_a
  159. \dim_new:N \l_tmp_dim_b
  160. \dim_new:N \l_tmp_dim_needed
  161. % function to insert padding according to widest stackrel
  162. \cs_new_protected:Nn \lec_insert_padding:n
  163. {
  164. \tl_set:Nn \l__lec_text_tl { #1 }
  165. % get all stackrels in this align environment
  166. \regex_extract_all:nnN { \c{stackrel}{(.*?)}{(.*?)} } { #1 } \l_lec_stackrels_seq
  167. % get number of stackrels
  168. \int_set:Nn \l_stackrel_count_int { \seq_count:N \l_lec_stackrels_seq }
  169. \int_set:Nn \l_idx_int { 1 }
  170. \dim_set:Nn \l_tmp_dim_needed { 0pt }
  171. % iterate over stackrels
  172. \int_while_do:nn { \l_idx_int <= \l_stackrel_count_int }
  173. {
  174. % calculate width of text
  175. \hbox_set:Nn \l_tmp_box {$\seq_item:Nn \l_lec_stackrels_seq { \l_idx_int + 1 }$}
  176. \dim_set:Nn \l_tmp_dim_a {\box_wd:N \l_tmp_box}
  177. % calculate width of relation symbol
  178. \hbox_set:Nn \l_tmp_box {$\seq_item:Nn \l_lec_stackrels_seq { \l_idx_int + 2 }$}
  179. \dim_set:Nn \l_tmp_dim_b {\box_wd:N \l_tmp_box}
  180. % check if 0.5*(a-b) > minimum padding, if yes updated minimum padding
  181. \dim_compare:nNnTF
  182. { 1pt * \dim_ratio:nn { \l_tmp_dim_a - \l_tmp_dim_b } { 2pt } } > { \l_tmp_dim_needed }
  183. { \dim_set:Nn \l_tmp_dim_needed { 1pt * \dim_ratio:nn { \l_tmp_dim_a - \l_tmp_dim_b } { 2pt } } }
  184. { }
  185. \quad
  186. % increment list index by three, as every stackrel produces three list entries
  187. \int_incr:N \l_idx_int
  188. \int_incr:N \l_idx_int
  189. \int_incr:N \l_idx_int
  190. }
  191. % replace all relations with align characters (&) and add the needed padding
  192. \regex_replace_all:nnN
  193. { (\c{iff}&|&\c{iff}|\c{impliedby}&|&\c{impliedby}|\c{implies}&|&\c{implies}|\c{approx}&|&\c{approx}|\c{equiv}&|&\c{equiv}|=&|&=|\c{le}&|&\c{le}|\c{ge}&|&\c{ge}|&\c{stackrel}{.*?}{.*?}|\c{stackrel}{.*?}{.*?}&|&\c{neq}|\c{neq}&|>&|&>|<&|&<) }
  194. { \c{kern} \u{l_tmp_dim_needed} \1 \c{kern} \u{l_tmp_dim_needed} }
  195. \l__lec_text_tl
  196. % replace all parantheses with \left( \right)
  197. %\regex_replace_all:nnN { \( } { \c{left}( } \l__lec_text_tl
  198. %\regex_replace_all:nnN { \) } { \c{right}) } \l__lec_text_tl
  199. %\regex_replace_all:nnN { \[ } { \c{left}[ } \l__lec_text_tl
  200. %\regex_replace_all:nnN { \] } { \c{right}] } \l__lec_text_tl
  201. \l__lec_text_tl
  202. }
  203. \cs_generate_variant:Nn \lec_insert_padding:n { V }
  204. \NewEnviron{leftright}
  205. {
  206. \lec_replace_parens:V \BODY
  207. }
  208. % function to replace parens with left right
  209. \cs_new_protected:Nn \lec_replace_parens:n
  210. {
  211. \tl_set:Nn \l__lec_text_tl { #1 }
  212. % replace all parantheses with \left( \right)
  213. \regex_replace_all:nnN { \( } { \c{left}( } \l__lec_text_tl
  214. \regex_replace_all:nnN { \) } { \c{right}) } \l__lec_text_tl
  215. \regex_replace_all:nnN { \[ } { \c{left}[ } \l__lec_text_tl
  216. \regex_replace_all:nnN { \] } { \c{right}] } \l__lec_text_tl
  217. \l__lec_text_tl
  218. }
  219. \cs_generate_variant:Nn \lec_replace_parens:n { V }
  220. \ExplSyntaxOff