From b7b2906e3fdaa9ce31819395b1cc27e318929f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Thu, 24 Feb 2022 19:50:02 +0100 Subject: changes --- vorlesungsnotizen/MSE/1 - Komplexe Funktionen.pdf | Bin 3563548 -> 4678152 bytes 1 file changed, 0 insertions(+), 0 deletions(-) (limited to 'vorlesungsnotizen') diff --git a/vorlesungsnotizen/MSE/1 - Komplexe Funktionen.pdf b/vorlesungsnotizen/MSE/1 - Komplexe Funktionen.pdf index c7c3a41..ff1050b 100644 Binary files a/vorlesungsnotizen/MSE/1 - Komplexe Funktionen.pdf and b/vorlesungsnotizen/MSE/1 - Komplexe Funktionen.pdf differ -- cgit v1.2.1 From 11c94692a0e4936667ed1a646b3d7bcdb26ebdee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Sat, 26 Feb 2022 09:14:14 +0100 Subject: add page numbering program --- vorlesungsnotizen/bin/Makefile | 12 +++ vorlesungsnotizen/bin/numbered.tex | 33 +++++++ vorlesungsnotizen/bin/numberpages.cpp | 171 ++++++++++++++++++++++++++++++++++ 3 files changed, 216 insertions(+) create mode 100644 vorlesungsnotizen/bin/Makefile create mode 100644 vorlesungsnotizen/bin/numbered.tex create mode 100644 vorlesungsnotizen/bin/numberpages.cpp (limited to 'vorlesungsnotizen') diff --git a/vorlesungsnotizen/bin/Makefile b/vorlesungsnotizen/bin/Makefile new file mode 100644 index 0000000..e3feff8 --- /dev/null +++ b/vorlesungsnotizen/bin/Makefile @@ -0,0 +1,12 @@ +# +# Makefile to build numbering script +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +numberpages: numberpages.cpp + c++ -std=c++11 -g -Wall -o numberpages numberpages.cpp + +test: numberpages + ./numberpages --debug --section "Komplexe Funktionentheorie" \ + --force \ + "../MSE/1 - Komplexe Funktionen.pdf" blubb.pdf diff --git a/vorlesungsnotizen/bin/numbered.tex b/vorlesungsnotizen/bin/numbered.tex new file mode 100644 index 0000000..bba61b6 --- /dev/null +++ b/vorlesungsnotizen/bin/numbered.tex @@ -0,0 +1,33 @@ +% +% numbered.tex +% +% (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[8pt,a4paper]{article} +\usepackage[final]{pdfpages} +\usepackage{geometry} +\usepackage{times} +\geometry{papersize={210mm,297mm},total={180mm,260mm},top=21mm} +\usepackage{fancyhdr} + +%\topmargin 20pt +%\oddsidemargin 20pt + +% from the TeXBook, page 308, exercise 7.7 +\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax} + +\pagestyle{fancy} +\ifundefined{sectionnumber} +\cfoot{\sffamily\Large\thepage} +\else +\cfoot{\sffamily\Large \sectionnumber{} -- \thepage} +\fi +\renewcommand {\headrulewidth}{0pt} + +\begin{document} +\includepdfset{pagecommand=\thispagestyle{empty}} +\includepdf[fitpaper=true,scale=0.95,pages={1}]{unnumbered.pdf} +\setcounter{page}{1} +\includepdfset{pagecommand=\thispagestyle{fancy}} +\includepdf[fitpaper=true,scale=0.94,pages=2-]{unnumbered.pdf} +\end{document} diff --git a/vorlesungsnotizen/bin/numberpages.cpp b/vorlesungsnotizen/bin/numberpages.cpp new file mode 100644 index 0000000..b990453 --- /dev/null +++ b/vorlesungsnotizen/bin/numberpages.cpp @@ -0,0 +1,171 @@ +/* + * numberpages.cpp -- driver program to number pages in a PDF, this was + * mainly necessary because the shell breaks blanks + * in the section option string + * + * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule + */ +#include +#include +#include +#include +#include +#include +#include + +void usage(char *progname) { + std::cout << "usage: " << progname << " [ -f ] [ -s section ] " << std::endl; +} + +struct option longoptions[] = { +{ "debug", no_argument, NULL, 'd' }, +{ "section", required_argument, NULL, 's' }, +{ "force", no_argument, NULL, 'f' }, +{ NULL, no_argument, NULL, 0 } +}; + +int main(int argc, char *argv[]) { + bool force = false; + bool debug = false; + std::string section; + int c, longindex, rc; + while (EOF != (c = getopt_long(argc, argv, "dfhs:?", longoptions, &longindex))) { + switch (c) { + case 'd': + debug = true; + break; + case 'f': + force = true; + break; + case 'h': + case '?': + usage(argv[0]); + return EXIT_SUCCESS; + case 's': + section = std::string(optarg); + if (debug) { + std::cout << "section string: " << section; + std::cout << std::endl; + } + break; + } + } + + // remaining arguments are file names + if ((argc - optind) < 2) { + std::cerr << "not enough arguments" << std::endl; + usage(argv[0]); + return EXIT_FAILURE; + } + std::string unnumbered = std::string(argv[optind++]); + std::string numbered = std::string(argv[optind++]); + if (debug) { + std::cout << "numbering " << unnumbered; + std::cout << ", sending output to " << unnumbered; + std::cout << std::endl; + } + + // make sure input file does exist + struct stat sb; + rc = stat(unnumbered.c_str(), &sb); + if ((0 == rc) && S_ISREG(sb.st_mode)) { + if (debug) { + std::cout << "input file " << unnumbered << " found"; + std::cout << std::endl; + } + } else { + std::cerr << "cannot find " << unnumbered << std::endl; + return EXIT_FAILURE; + } + + // make sure the "unnumbered.pdf" file does not exist + rc = stat("unnumbered.pdf", &sb); + if (0 == rc) { + std::cerr << "file unnumbered.pdf exists, clean up first"; + std::cerr << std::endl; + return EXIT_FAILURE; + } + + // test for existence of output file + rc = stat(numbered.c_str(), &sb); + if ((!force) && (0 == rc)) { + std::cerr << "output file exists, use --force option"; + std::cerr << std::endl; + return EXIT_FAILURE; + } + + // make sure the numbered.tex is present + rc = stat("numbered.tex", &sb); + if ((0 != rc) || (!S_ISREG(sb.st_mode))) { + std::cerr << "file 'numbered.tex' is missing" << std::endl; + return EXIT_FAILURE; + } + + // remove the "numbered.pdf" if it exists + if (debug) { + std::cout << "removing numbered.pdf" << std::endl; + } + unlink("numbered.pdf"); + + // copy the file + { + std::ostringstream out; + out << "cp '" << unnumbered << "' unnumbered.pdf"; + out.flush(); + std::string copycommand = out.str(); + rc = system(copycommand.c_str()); + if (0 != rc) { + std::cerr << "could not copy " << unnumbered; + std::cerr << " to unnumbered.pdf: " << rc << std::endl; + return EXIT_FAILURE; + } + if (debug) { + std::cout << "file " << unnumbered << " copied to "; + std::cout << "unnumbered.pdf" << std::endl; + } + } + + // prepare command line + std::ostringstream out; + out << "pdflatex "; + if (section.size() > 0) { + out << "\\\\def\\\\sectionnumber{" << section << "} "; + out << "\\\\input{numbered.tex}"; + } else { + out << unnumbered; + } + if (debug) { + std::cout << "command line: " << out.str() << std::endl; + } + + // run the command + rc = system(out.str().c_str()); + if (0 != rc) { + std::cerr << "pdflatex failed: " << rc << std::endl; + return EXIT_FAILURE; + } + + // check for the existence of the output file + rc = stat("numbered.pdf", &sb); + if ((0 != rc) || (!S_ISREG(sb.st_mode))) { + std::cerr << "output file 'numbered.pdf' not found"; + std::cerr << std::endl; + return EXIT_FAILURE; + } + + // rename the output file + rc = rename("numbered.pdf", numbered.c_str()); + if (rc != 0) { + std::string error(strerror(errno)); + std::cerr << "cannot rename file to '" << numbered << ": "; + std::cerr << error << std::endl; + return EXIT_FAILURE; + } + + // perform some cleanup + unlink("unnumbered.pdf"); + unlink("numbered.log"); + unlink("numbered.aux"); + + return EXIT_SUCCESS; +} -- cgit v1.2.1 From 68ee82159ae49195ccbec50872339965ae80f507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Sat, 26 Feb 2022 09:47:23 +0100 Subject: number PDFs --- vorlesungsnotizen/B/1 - Gamma-Funktion.pdf | Bin 2657414 -> 2663810 bytes vorlesungsnotizen/B/2 - Potenzreihenmethode.pdf | Bin 0 -> 2280737 bytes vorlesungsnotizen/MSE/1 - Komplexe Funktionen.pdf | Bin 4678152 -> 4748585 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 vorlesungsnotizen/B/2 - Potenzreihenmethode.pdf (limited to 'vorlesungsnotizen') diff --git a/vorlesungsnotizen/B/1 - Gamma-Funktion.pdf b/vorlesungsnotizen/B/1 - Gamma-Funktion.pdf index e2f7110..5fad38e 100644 Binary files a/vorlesungsnotizen/B/1 - Gamma-Funktion.pdf and b/vorlesungsnotizen/B/1 - Gamma-Funktion.pdf differ diff --git a/vorlesungsnotizen/B/2 - Potenzreihenmethode.pdf b/vorlesungsnotizen/B/2 - Potenzreihenmethode.pdf new file mode 100644 index 0000000..2a7f06b Binary files /dev/null and b/vorlesungsnotizen/B/2 - Potenzreihenmethode.pdf differ diff --git a/vorlesungsnotizen/MSE/1 - Komplexe Funktionen.pdf b/vorlesungsnotizen/MSE/1 - Komplexe Funktionen.pdf index ff1050b..47c4e51 100644 Binary files a/vorlesungsnotizen/MSE/1 - Komplexe Funktionen.pdf and b/vorlesungsnotizen/MSE/1 - Komplexe Funktionen.pdf differ -- cgit v1.2.1 From 3cd07dec42d0019ef7b875de24a963af119e647d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Sat, 26 Feb 2022 10:25:04 +0100 Subject: cleanup --- vorlesungsnotizen/bin/numberpages.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'vorlesungsnotizen') diff --git a/vorlesungsnotizen/bin/numberpages.cpp b/vorlesungsnotizen/bin/numberpages.cpp index b990453..704a671 100644 --- a/vorlesungsnotizen/bin/numberpages.cpp +++ b/vorlesungsnotizen/bin/numberpages.cpp @@ -14,7 +14,8 @@ #include void usage(char *progname) { - std::cout << "usage: " << progname << " [ -f ] [ -s section ] " << std::endl; + std::cout << "usage: " << progname << " [ -f ] [ -s section ] "; + std::cout << " " << std::endl; } struct option longoptions[] = { @@ -29,7 +30,8 @@ int main(int argc, char *argv[]) { bool debug = false; std::string section; int c, longindex, rc; - while (EOF != (c = getopt_long(argc, argv, "dfhs:?", longoptions, &longindex))) { + while (EOF != (c = getopt_long(argc, argv, "dfhs:?", longoptions, + &longindex))) { switch (c) { case 'd': debug = true; -- cgit v1.2.1 From edd08ccdcf5e4d3f95997c4eb3be987d49852d4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Mon, 7 Mar 2022 10:09:07 +0100 Subject: =?UTF-8?q?Vorlesungsnotizen=20f=C3=BCr=20Woche=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../B/3 - Verallgemeinerte Potenzreihen.pdf | Bin 0 -> 2377226 bytes .../MSE/2 - Gamma- und Beta-Funktion.pdf | Bin 0 -> 4698780 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 vorlesungsnotizen/B/3 - Verallgemeinerte Potenzreihen.pdf create mode 100644 vorlesungsnotizen/MSE/2 - Gamma- und Beta-Funktion.pdf (limited to 'vorlesungsnotizen') diff --git a/vorlesungsnotizen/B/3 - Verallgemeinerte Potenzreihen.pdf b/vorlesungsnotizen/B/3 - Verallgemeinerte Potenzreihen.pdf new file mode 100644 index 0000000..780b958 Binary files /dev/null and b/vorlesungsnotizen/B/3 - Verallgemeinerte Potenzreihen.pdf differ diff --git a/vorlesungsnotizen/MSE/2 - Gamma- und Beta-Funktion.pdf b/vorlesungsnotizen/MSE/2 - Gamma- und Beta-Funktion.pdf new file mode 100644 index 0000000..1475e2d Binary files /dev/null and b/vorlesungsnotizen/MSE/2 - Gamma- und Beta-Funktion.pdf differ -- cgit v1.2.1 From 53884109790df35cf666acf7694701ec0efa4ce9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Mon, 7 Mar 2022 12:33:37 +0100 Subject: fix page numbering --- .../B/3 - Verallgemeinerte Potenzreihen.pdf | Bin 2377226 -> 2385923 bytes .../MSE/2 - Gamma- und Beta-Funktion.pdf | Bin 4698780 -> 4710774 bytes 2 files changed, 0 insertions(+), 0 deletions(-) (limited to 'vorlesungsnotizen') diff --git a/vorlesungsnotizen/B/3 - Verallgemeinerte Potenzreihen.pdf b/vorlesungsnotizen/B/3 - Verallgemeinerte Potenzreihen.pdf index 780b958..b6c280b 100644 Binary files a/vorlesungsnotizen/B/3 - Verallgemeinerte Potenzreihen.pdf and b/vorlesungsnotizen/B/3 - Verallgemeinerte Potenzreihen.pdf differ diff --git a/vorlesungsnotizen/MSE/2 - Gamma- und Beta-Funktion.pdf b/vorlesungsnotizen/MSE/2 - Gamma- und Beta-Funktion.pdf index 1475e2d..667ac4b 100644 Binary files a/vorlesungsnotizen/MSE/2 - Gamma- und Beta-Funktion.pdf and b/vorlesungsnotizen/MSE/2 - Gamma- und Beta-Funktion.pdf differ -- cgit v1.2.1