diff --git a/.codebook.toml b/.codebook.toml new file mode 100644 index 0000000..ff431ee --- /dev/null +++ b/.codebook.toml @@ -0,0 +1 @@ +words = ["noack"] diff --git a/LinuxInformationstag.tex b/LinuxInformationstag.tex new file mode 100644 index 0000000..a5ce0b8 --- /dev/null +++ b/LinuxInformationstag.tex @@ -0,0 +1,83 @@ +% Title: Linux - Mehr als nur ein Betriebssystem +% Author: Alexander Noack +% Created On: Mon 20 Apr 2026 +% Summary: Presentation for the talk +% Language: de-DE + +%% preamble + +\documentclass{beamer} + +% use special colour tables for pdf output +\ifpdf +\usepackage{pdfcolmk} +\fi + +% change the theme into something more fancy +\usetheme{Warsaw} + +% all our source code is utf-8 +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} + +% allow the import of images +\usepackage{graphicx} + +% set the language to German +\usepackage[ngerman]{babel} + +% we may need some code examples +\usepackage{verbatim} +\usepackage{listings} + +% alllow quotes in the text +\usepackage[autostyle=true]{csquotes} + +% enable strike through text +\usepackage[normalem]{ulem} + +% we need to use advanced tables +\usepackage{multirow} +\usepackage{booktabs} + +% place a logo +\logo{\includegraphics[scale=0.2]{images/ccchb.png}} + +% we want urls to be clickable +\usepackage{hyperref} + +% redefine the caption source for figures to "Quelle" +\addto\captionsngerman{\renewcommand{\figurename}{Quelle}} + +% create header info +\title{Linux - Mehr als ein Betriebssystem} +\subtitle{Wie eine Software aus Versehen die Welt verändert hat} +\author{Alexander Noack \\ \texttt{jali@orca-central.de}} +\institute{Chaos Computer Club Bremen \- CCCHB e.V.} + +% document starts here +\begin{document} +\begin{frame} + \titlepage +\end{frame} + +% import the slides here +\input{slides/01.Introduction.tex} + +% epilogue +\begin{frame} + \frametitle{Fragen?} + \begin{center} + Fragen? \par + Alexander Noack \texttt{} + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Fragen?} + \begin{center} + \includegraphics[scale=1.0]{images/ccchb.png} + \end{center} +\end{frame} + +\end{document} diff --git a/codebook.toml b/codebook.toml new file mode 100644 index 0000000..c01c488 --- /dev/null +++ b/codebook.toml @@ -0,0 +1,5 @@ +words = [ + "ccchb", + "ngerman", + "noack", +] diff --git a/images/Tux.png b/images/Tux.png new file mode 100644 index 0000000..bdc5b1d Binary files /dev/null and b/images/Tux.png differ diff --git a/images/ccchb.png b/images/ccchb.png new file mode 100644 index 0000000..092eeac Binary files /dev/null and b/images/ccchb.png differ diff --git a/slides/01.Introduction.tex b/slides/01.Introduction.tex new file mode 100644 index 0000000..8f16b59 --- /dev/null +++ b/slides/01.Introduction.tex @@ -0,0 +1,15 @@ +% Title: Linux - Mehr als nur ein Betriebssystem +% Author: Alexander Noack +% Created On: Mon 20 Apr 2026 +% Summary: Presentation for the talk +% Language: de-DE + +\section{Überblick} +\begin{frame} + \frametitle{Überblick} + \begin{figure} + \centering + \includegraphics[scale=0.2]{images/Tux.png} + \caption{By lewing@isc.tamu.edu Larry Ewing and The GIMP, Attribution, https://commons.wikimedia.org/w/index.php?curid=80930} + \end{figure} +\end{frame} diff --git a/wscript b/wscript new file mode 100644 index 0000000..088f388 --- /dev/null +++ b/wscript @@ -0,0 +1,202 @@ +#!/usr/bin/env python +# encoding: utf-8 +# Created On: Tue 28 Aug 2012 11:44:05 CEST +# Last Modified: Tue 21 Mar 2017 08:40:17 pm CET +# MAKEFILE for compiling LaTeX Files + +VERSION='1.0.0' +APPNAME='MAKEFILE FOR LaTeX' + +top='.' +out='build' +chapterpath='./chapters' + +# query the options that are possible outputs +def options(ctx): + ctx.add_option('--form',action='store',default='pdflatex',help='Specify the output format. Allowed values are: pdflatex, latex, htlatex, oolatex, epub, handlatex') + ctx.add_option('--cover',action='store',help='Specify an image as cover for ePubs.\nOnly works with --form=epub') + ctx.add_option('--infile',action='store',help='Specify the tex file to use as input file.\nIf not given, all files in the top level directory will be compiled.') + ctx.add_option('--spellckpath',action='store',help='Specify the path in which to look for the content files for spellcheck.\nDefault is ./chapters',default=chapterpath); + +# configure script +def configure(ctx): + # local functions to configure the selected element + def find_tex_files(path): + import os + ret = [] + for name in os.listdir(path): + if os.path.isfile(os.path.join(path,name)): + if (name.endswith('.tex')) or (name.endswith('.ltx')): + ret.append(name) + return ret + + def conf_tex(ctx): + ctx.load('tex') + + def conf_htlatex(ctx): + ctx.find_program('mk4ht',var='TEX') + ctx.env.TEXINPUT = ctx.path.abspath() + '//' + + def conf_epub(ctx): + ctx.find_program('mk4ht',var='TEX') + ctx.find_program('ebook-convert',var='EPUB') + ctx.env.TEXINPUT = ctx.path.abspath() + '//' + + def conf_handlatex(ctx): + ctx.find_program('handlatex',var='TEX') + ctx.env.TEXINPUT = ctx.path.abspath() + '//' + + # define a structure to assign the functions to the parameters + conf_output = {'pdflatex' : conf_tex, + 'latex' : conf_tex, + 'htlatex' : conf_htlatex, + 'oolatex' : conf_htlatex, + 'epub' : conf_epub, + 'handlatex' : conf_handlatex + + } + + # set the selected mode + if ctx.options.form: + ctx.env.FORM = ctx.options.form + conf_output[ctx.env.FORM](ctx) + else: + ctx.fatal('Output format is not set!') + + # set a cover image + if ctx.options.cover: + ctx.env.COVER = ctx.options.cover + else: + ctx.env.COVER = '' + + # find the aspell program + ctx.find_program('aspell',var='ASPELL') + + # set a default path to look for spellck sources + if ctx.options.spellckpath: + ctx.env.SPELLCK = ctx.options.spellckpath + + # Set a list of all files to use + if ctx.options.infile: + sf = [] + sf.append(ctx.options.infile) + ctx.env.SOURCEFILES = sf + else: + ctx.env.SOURCEFILES = find_tex_files(top) + + +def build(ctx): + # metadata parameters + def build_metadata(fileName,cover): + ret = '--level1-toc \'//*[@class="title"]\' ' + with open(fileName,'r') as in_file: + count = 0 + for line in in_file: + if '% Author' in line: + ret += ' --authors "' + line.split(':')[1].rstrip().lstrip() +'"' + count += 1 + elif '% Title' in line: + ret += ' --title "' + line.split(':')[1].rstrip().lstrip() + '"' + count += 1 + elif count > 1: + break + in_file.close() + + if cover: + ret += ' --cover "' + cover + '"' + + return ret + + # local functions to control the build process + def build_tex(ctx): + import os + for f in ctx.env.SOURCEFILES: + ctx(features = 'tex', + type = ctx.env.FORM, + source = f, + prompt = 0 + ) + if ctx.cmd == 'install': + outExt = '.dvi' + if ctx.env.FORM == 'pdflatex': + outExt = '.pdf' + fileName, fileExt = os.path.splitext(f) + ctx.install_files('${PREFIX}',fileName + outExt) + + def build_htlatex(ctx): + import os + for f in ctx.env.SOURCEFILES: + fileName, fileExt = os.path.splitext(f) + ctx(rule='TEXINPUTS=${TEXINPUT}: ${TEX} ${FORM} ${SRC} >/dev/null',source=f, target=fileName + '.html') + if ctx.cmd == 'install': + fileName, fileExt = os.path.splitext(f) + ctx.install_files('${PREFIX}',fileName + '.html') + + def build_epub(ctx): + import os + for f in ctx.env.SOURCEFILES: + print(ctx.path.find_resource(ctx.env.COVER)) + if ctx.env.COVER : + ctx.env.META = build_metadata(f,ctx.path.find_resource(ctx.env.COVER).abspath()) + else: + ctx.env.META = build_metadata(f,'') + fileName, fileExt = os.path.splitext(f) + ctx(rule='TEXINPUTS=${TEXINPUT}: ${TEX} htlatex ${SRC} >/dev/null',source=f, target=fileName + '.html') + ctx(rule='${EPUB} ${SRC} ${TGT} ${META}',source=fileName + '.html', target=fileName + '.epub') + if ctx.cmd == 'install': + ctx.install_files('${PREFIX}',fileName + '.epub') + + def build_handlatex(ctx): + import os + for f in ctx.env.SOURCEFILES: + ctx(rule='TEXINPUTS=${TEXINPUT}: ${TEX} ${SRC} >/dev/null && rm -f ../*.h*',source=f) + if ctx.cmd == 'install': + fileName, fileExt = os.path.splitext(f) + ctx.install_files('${PREFIX}',fileName + outExt) + + + # define a structure to assign the functions to the parameters + build_output = {'pdflatex' : build_tex, + 'latex' : build_tex, + 'htlatex' : build_htlatex, + 'oolatex' : build_htlatex, + 'epub' : build_epub, + 'handlatex' : build_handlatex + } + + # call the configured build method + build_output[ctx.env.FORM](ctx) + + +# Custom command to spellcheck all +def spellck(ctx): + + # Search for all possible TEX files + def find_tex_files(path): + import os + ret = [] + for root, dirs, files in os.walk(path): + for name in files: + if (name.endswith('.tex')) or (name.endswith('.ltx')): + ret.append(os.path.join(root,name)) + return ret + + # Set a list of input files to use + if ctx.options.infile: + sf = [] + sf.append(ctx.options.infile) + ctx.env.SOURCEFILES = sf + else : + ctx.env.SOURCEFILES = find_tex_files(ctx.env.SPELLCK) + + # run aspell + from os import system + for f in ctx.env.SOURCEFILES : + system(ctx.env.ASPELL + ' -c ' + f) + system('rm ' + f + '.' +'bak') + +# Class declarartion to bind the build context to the spellck command +from waflib.Build import BuildContext +class spck(BuildContext): + cmd='spellck' + fun='spellck'