├── .envrc ├── default.nix ├── checkbiw ├── MAINTAINER ├── src │ ├── checkbiw │ ├── cite-space │ ├── emdash-space │ ├── emdash-nospace │ ├── passive │ ├── lang-american │ └── biw ├── contrib │ └── diction │ │ ├── test │ │ ├── rundiction.in │ │ ├── test02 │ │ ├── test04 │ │ ├── test01 │ │ ├── test03 │ │ ├── test05 │ │ └── test06 │ │ ├── de │ │ ├── de.po │ │ ├── style.c │ │ ├── style.1.in │ │ ├── config.h.in │ │ ├── NEWS │ │ ├── misc.h │ │ ├── sentence.h │ │ ├── README │ │ ├── diction.spec │ │ ├── diction.spec.in │ │ ├── misc.c │ │ ├── configure.in │ │ ├── Makefile.in │ │ ├── diction.1.in │ │ ├── getopt.h │ │ ├── getopt1.c │ │ ├── install-sh │ │ ├── sentence.c │ │ ├── INSTALL │ │ ├── diction.pot │ │ ├── diction.texi.in │ │ ├── diction.c │ │ ├── COPYING │ │ └── en ├── doc │ ├── own.bib │ ├── manual.gosh │ ├── Makefile │ ├── manpage.txt │ └── mustread.txt └── TODO ├── THANKS ├── .gitmodules ├── images ├── squirrel.jpg └── diplom-aufgabe.pdf ├── preamble ├── color.tex ├── newcommands.tex ├── packages.tex └── style.tex ├── .github ├── dependabot.yml └── workflows │ └── build.yml ├── content ├── 60_futurework.tex ├── 02_abstract.tex ├── 01_disclaimer.tex ├── 50_evaluation.tex ├── 70_conclusion.tex ├── 30_design.tex ├── 00_title.tex ├── 40_implementation.tex ├── 20_state.tex └── 10_introduction.tex ├── .editorconfig ├── .gitignore ├── nix ├── tex-toolchain.nix └── thesis.nix ├── flake.lock ├── .latexmkrc ├── CHECKLIST ├── flake.nix ├── own.bib ├── diplom.tex ├── Makefile └── README.md /.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | (import ./nix/release.nix { }).pdf 2 | -------------------------------------------------------------------------------- /checkbiw/MAINTAINER: -------------------------------------------------------------------------------- 1 | mailaddr hohmuth@os.inf.tu-dresden.de 2 | -------------------------------------------------------------------------------- /THANKS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUD-OS/latex-template/HEAD/THANKS -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "gosh"] 2 | path = gosh 3 | url = git@github.com:nfeske/gosh 4 | -------------------------------------------------------------------------------- /images/squirrel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUD-OS/latex-template/HEAD/images/squirrel.jpg -------------------------------------------------------------------------------- /checkbiw/src/checkbiw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUD-OS/latex-template/HEAD/checkbiw/src/checkbiw -------------------------------------------------------------------------------- /checkbiw/contrib/diction/test/rundiction.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | @VALGRIND@ ./diction -f /dev/null -n "$@" 4 | -------------------------------------------------------------------------------- /images/diplom-aufgabe.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUD-OS/latex-template/HEAD/images/diplom-aufgabe.pdf -------------------------------------------------------------------------------- /checkbiw/contrib/diction/de: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUD-OS/latex-template/HEAD/checkbiw/contrib/diction/de -------------------------------------------------------------------------------- /checkbiw/contrib/diction/de.po: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUD-OS/latex-template/HEAD/checkbiw/contrib/diction/de.po -------------------------------------------------------------------------------- /checkbiw/contrib/diction/style.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUD-OS/latex-template/HEAD/checkbiw/contrib/diction/style.c -------------------------------------------------------------------------------- /checkbiw/contrib/diction/style.1.in: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TUD-OS/latex-template/HEAD/checkbiw/contrib/diction/style.1.in -------------------------------------------------------------------------------- /preamble/color.tex: -------------------------------------------------------------------------------- 1 | \definecolor{mygreen}{rgb}{0,0.6,0} 2 | \definecolor{mygray}{rgb}{0.5,0.5,0.5} 3 | \definecolor{mymauve}{rgb}{0.58,0,0.82} 4 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: "/" 5 | schedule: 6 | interval: monthly 7 | open-pull-requests-limit: 10 8 | -------------------------------------------------------------------------------- /checkbiw/doc/own.bib: -------------------------------------------------------------------------------- 1 | @Book{BugsInWriting, 2 | author = {Lyn Dupré}, 3 | title = {BUGS in Writing --- A Guide to Debugging Your Prose}, 4 | publisher = {Addison-Wesley}, 5 | year = 1998 6 | } 7 | 8 | -------------------------------------------------------------------------------- /content/60_futurework.tex: -------------------------------------------------------------------------------- 1 | \chapter{Future Work} 2 | \label{sec:futurework} 3 | 4 | \ldots future work \ldots 5 | 6 | \todo{write future work} 7 | 8 | \cleardoublepage 9 | 10 | %%% Local Variables: 11 | %%% TeX-master: "diplom" 12 | %%% End: 13 | -------------------------------------------------------------------------------- /preamble/newcommands.tex: -------------------------------------------------------------------------------- 1 | % some common commands 2 | \newcommand{\drops}{\texorpdfstring{\textsc{Drops}\xspace}{DROPS}} 3 | \newcommand{\LLinux}{\texorpdfstring{L$\!^4$Linux}{L4Linux}} 4 | 5 | \newcommand{\NOVA}{NOVA\xspace} 6 | \newcommand{\QEMU}{QEMU\xspace} 7 | -------------------------------------------------------------------------------- /checkbiw/src/cite-space: -------------------------------------------------------------------------------- 1 | \cite ! 2 | \cite (put space before \cite) 3 | #Local Variables: 4 | #mode:fundamental 5 | #mode:flyspell 6 | #tab-width:20 7 | #ispell-local-dictionary: "american" 8 | #comment-start: ";" 9 | #comment-start-skip: "; *" 10 | #End: 11 | -------------------------------------------------------------------------------- /checkbiw/src/emdash-space: -------------------------------------------------------------------------------- 1 | --- which ! 2 | --- ! 3 | ---~ (add space after ---) 4 | --- (add space before ---) 5 | ---~ (add space before and after ---) 6 | #Local Variables: 7 | #mode:fundamental 8 | #mode:flyspell 9 | #tab-width:20 10 | #ispell-local-dictionary: "american" 11 | #comment-start: ";" 12 | #comment-start-skip: "; *" 13 | #End: 14 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/config.h.in: -------------------------------------------------------------------------------- 1 | /* Define if you have the strerror function. */ 2 | #undef HAVE_STRERROR 3 | 4 | /* Define if realloc(0,n) fails. */ 5 | #undef BROKEN_REALLOC 6 | 7 | /* Define if you have the msgfmt(1) program and the gettext(3) function. */ 8 | #undef HAVE_GETTEXT 9 | 10 | /* The version string. */ 11 | #define VERSION @VERSION@ 12 | 13 | /* The package name. */ 14 | #define PACKAGE @PACKAGE@ 15 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # top-most EditorConfig file 2 | root = true 3 | 4 | # Unix-style newlines with a newline ending every file 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | insert_final_newline = true 9 | indent_style = space 10 | indent_size = 4 11 | trim_trailing_whitespace = true 12 | max_line_length = 80 13 | 14 | [Makefile] 15 | indent_style = tab 16 | 17 | [*.yml] 18 | indent_size = 2 19 | 20 | [*.tex] 21 | max_line_length = 100 22 | -------------------------------------------------------------------------------- /checkbiw/src/emdash-nospace: -------------------------------------------------------------------------------- 1 | ---which ! 2 | }---which ! 3 | '---which ! 4 | $---which ! 5 | }---~ ! 6 | '---~ ! 7 | $---~ ! 8 | ---- ! 9 | --- (remove space before and after ---) 10 | --- (remove space after ---) 11 | ---~ (remove space before ---) 12 | #Local Variables: 13 | #mode:fundamental 14 | #mode:flyspell 15 | #tab-width:20 16 | #ispell-local-dictionary: "american" 17 | #comment-start: ";" 18 | #comment-start-skip: "; *" 19 | #End: 20 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/test/test02: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo -n $0: 'Ending ellipsis... ' 4 | 5 | cat >test.in <test.ref <test.data 14 | 15 | if cmp test.ref test.data 16 | then 17 | rm -f test.* 18 | echo passed 19 | else 20 | echo failed 21 | exit 1 22 | fi 23 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/test/test04: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo -n $0: 'Omission ellipsis... ' 4 | 5 | cat >test.in <test.ref <test.data 14 | 15 | if cmp test.ref test.data 16 | then 17 | rm -f test.* 18 | echo passed 19 | else 20 | echo failed 21 | exit 1 22 | fi 23 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/test/test01: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo -n $0: 'Two regular sentences... ' 4 | 5 | cat >test.in <test.ref <test.data 14 | 15 | if cmp test.ref test.data 16 | then 17 | rm -f test.* 18 | echo passed 19 | else 20 | echo failed 21 | exit 1 22 | fi 23 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/test/test03: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo -n $0: 'Beginning ellipsis... ' 4 | 5 | cat >test.in <test.ref <test.data 14 | 15 | if cmp test.ref test.data 16 | then 17 | rm -f test.* 18 | echo passed 19 | else 20 | echo failed 21 | exit 1 22 | fi 23 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/NEWS: -------------------------------------------------------------------------------- 1 | The following things have been changed compared to version 1.02: 2 | 3 | o makefile bug fixed 4 | o No default prefix of /usr on Linux (confuses packaging systems 5 | when updating diction from source and a package was installed 6 | before) 7 | o Migration from catgets to GNU gettext inspired by patches from 8 | Jochen Hein 9 | o Diction loads phrase file for current locale by default, switching 10 | to locale C if there is no phrase file 11 | -------------------------------------------------------------------------------- /content/02_abstract.tex: -------------------------------------------------------------------------------- 1 | % -*- Mode: Latex -*- 2 | 3 | % Zusammenfassung 4 | 5 | % Zu einer runden Arbeit gehört auch eine Zusammenfassung, die 6 | % eigenständig einen kurzen Abriß der Arbeit gibt. Eine halbe bis ganze 7 | % DINA4 Seite ist angemessen. Dafür läßt sich keine Gebrauchsanweisung 8 | % geben (für irgendetwas müssen die Betreuer ja auch noch da 9 | % sein). 10 | 11 | \ldots abstract \ldots 12 | 13 | %%% Local Variables: 14 | %%% TeX-master: "diplom" 15 | %%% End: 16 | 17 | 18 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/test/test05: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo -n $0: 'Stemming... ' 4 | 5 | cat >test.in <test.db <test.ref < frob is evil]nification. 15 | 16 | 1 phrase in 1 sentence found. 17 | eof 18 | 19 | sh ./test/rundiction -f test.db test.in >test.data 20 | 21 | if cmp test.ref test.data 22 | then 23 | rm -f test.* 24 | echo passed 25 | else 26 | echo failed 27 | exit 1 28 | fi 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | auto 3 | *.log 4 | *.aux 5 | *.bbl 6 | *.blg 7 | *.brf 8 | *.lod 9 | *.lof 10 | *.out 11 | *.acn 12 | *.acr 13 | *.alg 14 | *.glg 15 | *.glo 16 | *.ist 17 | *.lot 18 | *.gls 19 | *.bak 20 | *.toc 21 | .sconsign.dblite 22 | *~ 23 | *.fdb_latexmk 24 | *.fls 25 | *.tdo 26 | 27 | .texlive* 28 | 29 | *.bcf 30 | diplom.pdf 31 | # comes from the "make stats" command 32 | diplom.pdf.txt 33 | *.run.xml 34 | *.synctex.gz 35 | 36 | # vim tmp files 37 | *.swp 38 | *.swo 39 | 40 | # Nix 41 | .direnv 42 | /result* 43 | 44 | # "make" produces PDFs in this format. 45 | /*DRAFT*.pdf 46 | 47 | -------------------------------------------------------------------------------- /nix/tex-toolchain.nix: -------------------------------------------------------------------------------- 1 | # Returns a tex toolchain with all packages needed for this thesis. 2 | # This is more lightweight than using `pkgs.texliveFull`. 3 | 4 | { pkgs }: 5 | with pkgs; 6 | texlive.combine { 7 | inherit (texlive) 8 | biber 9 | biblatex 10 | csquotes 11 | detex # Only for Makefile convenience scripts; not for the actual thesis 12 | hyphenat 13 | lastpage 14 | latexmk 15 | scheme-small 16 | scrhack 17 | lscapeenhanced 18 | setspaceenhanced 19 | siunitx 20 | todonotes 21 | xpatch 22 | tudscr 23 | newunicodechar 24 | ; 25 | } 26 | -------------------------------------------------------------------------------- /checkbiw/TODO: -------------------------------------------------------------------------------- 1 | - Diction does not really interpret "#" as a comment character in its 2 | rules file -- we currently just hope it never matches. 3 | 4 | - Remove comments for `gosh' input, just as for LaTeX input. 5 | 6 | - Parse LaTeX's \include directives 7 | 8 | - A better algorithm for detecting double words 9 | 10 | - Add an option for showing the error message separate from the text 11 | 12 | - Should we return an error code when we found problems? 13 | 14 | - Add a method for disabling warnings on a per-sentence basis inside 15 | the document. 16 | 17 | - Allow disabling warnings. Maybe introduce warning levels. 18 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/test/test06: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo -n $0: 'Recovery... ' 4 | 5 | cat >test.in <test.db <test.ref < flip prefix][flap -> flap alarm]. 16 | 17 | 2 phrases in 1 sentence found. 18 | eof 19 | 20 | sh ./test/rundiction -f test.db test.in >test.data 21 | 22 | if cmp test.ref test.data 23 | then 24 | rm -f test.* 25 | echo passed 26 | else 27 | echo failed 28 | exit 1 29 | fi 30 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/misc.h: -------------------------------------------------------------------------------- 1 | /* Notes */ /*{{{C}}}*//*{{{*/ 2 | /* 3 | 4 | This file is free software; as a special exception the author gives 5 | unlimited permission to copy and/or distribute it, with or without 6 | modifications, as long as this notice is preserved. 7 | 8 | This program is distributed in the hope that it will be useful, but 9 | WITHOUT ANY WARRANTY, to the extent permitted by law; without even the 10 | implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | 12 | */ 13 | /*}}}*/ 14 | 15 | #ifndef MISC_H 16 | #define MISC_H 17 | 18 | #ifdef BROKEN_REALLOC 19 | #define realloc(p,s) myrealloc(p,s) 20 | #endif 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /content/01_disclaimer.tex: -------------------------------------------------------------------------------- 1 | \selectlanguage{ngerman} 2 | 3 | \section*{\vfill{} \thispagestyle{empty} 4 | Selbstständigkeitserklärung} 5 | %\section*{\vfill{} \thispagestyle{empty} 6 | %Statement of authorship} 7 | 8 | Hiermit erkläre ich, dass ich diese Arbeit selbstständig verfasst 9 | und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe. 10 | %I hereby certify that I have completed this work on my own and without the 11 | %help of anything other than the indicated sources and resources. 12 | \bigskip{} 13 | 14 | \noindent Dresden, den \today % \printdate % if you defined date earlier 15 | \vspace{2.5cm} 16 | 17 | \noindent Otto Mustermann \cleardoublepage{} 18 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1750215678, 6 | "narHash": "sha256-Rc/ytpamXRf6z8UA2SGa4aaWxUXRbX2MAWIu2C8M+ok=", 7 | "owner": "nixos", 8 | "repo": "nixpkgs", 9 | "rev": "5395fb3ab3f97b9b7abca147249fa2e8ed27b192", 10 | "type": "github" 11 | }, 12 | "original": { 13 | "owner": "nixos", 14 | "ref": "nixpkgs-unstable", 15 | "repo": "nixpkgs", 16 | "type": "github" 17 | } 18 | }, 19 | "root": { 20 | "inputs": { 21 | "nixpkgs": "nixpkgs" 22 | } 23 | } 24 | }, 25 | "root": "root", 26 | "version": 7 27 | } 28 | -------------------------------------------------------------------------------- /nix/thesis.nix: -------------------------------------------------------------------------------- 1 | { 2 | stdenvNoCC, 3 | nix-gitignore, 4 | tex, 5 | gnumake, 6 | }: 7 | 8 | stdenvNoCC.mkDerivation { 9 | pname = "latex-template"; 10 | version = "1.0.0"; 11 | 12 | src = nix-gitignore.gitignoreSource [ ] ../.; 13 | 14 | nativeBuildInputs = [ 15 | gnumake 16 | tex 17 | ]; 18 | 19 | # Avoid luatex failing due to non-writable cache. 20 | TEXMFVAR = "/tmp/texlive/"; 21 | TEXTMFHOME = "/tmp/texlive/"; 22 | 23 | preBuild = '' 24 | # Ensure that \today doesn't show 1980-01-01 25 | export SOURCE_DATE_EPOCH=$(date +%s) 26 | ''; 27 | 28 | installPhase = '' 29 | mkdir -p $out 30 | install -m 0644 diplom.pdf $out/ 31 | ''; 32 | } 33 | -------------------------------------------------------------------------------- /content/50_evaluation.tex: -------------------------------------------------------------------------------- 1 | \chapter{Evaluation} 2 | \label{sec:evaluation} 3 | 4 | % Zu jeder Arbeit in unserem Bereich gehört eine Leistungsbewertung. Aus 5 | % diesem Kapitel sollte hervorgehen, welche Methoden angewandt worden, 6 | % die Leistungsfähigkeit zu bewerten und welche Ergebnisse dabei erzielt 7 | % wurden. Wichtig ist es, dem Leser nicht nur ein paar Zahlen 8 | % hinzustellen, sondern auch eine Diskussion der Ergebnisse 9 | % vorzunehmen. Es wird empfohlen zunächst die eigenen Erwartungen 10 | % bezüglich der Ergebnisse zu erläutern und anschließend eventuell 11 | % festgestellte Abweichungen zu erklären. 12 | 13 | \ldots evaluation \ldots 14 | 15 | \todo{write evaluation} 16 | 17 | \cleardoublepage 18 | 19 | %%% Local Variables: 20 | %%% TeX-master: "diplom" 21 | %%% End: 22 | -------------------------------------------------------------------------------- /checkbiw/src/passive: -------------------------------------------------------------------------------- 1 | there are ! 2 | are (passive voice) §1 3 | there was ! 4 | was (passive voice) §1 5 | is needed (passive voice) §1 6 | has been (passive voice) §1 7 | has not been (passive voice) §1 8 | can be (passive voice) §1 9 | cannot be (passive voice) §1 10 | must be able ! 11 | must be (passive voice) §1 12 | must not be (passive voice) §1 13 | should be (passive voice) §1 14 | should not be (passive voice) §1 15 | shall be (passive voice) §1 16 | shall not be (passive voice) §1 17 | will be (passive voice) §1 18 | will not be (passive voice) §1 19 | needs to be (passive voice) §1 20 | not needed (passive voice) §1 21 | #Local Variables: 22 | #mode:fundamental 23 | #mode:flyspell 24 | #tab-width:20 25 | #ispell-local-dictionary: "american" 26 | #comment-start: ";" 27 | #comment-start-skip: "; *" 28 | #End: 29 | -------------------------------------------------------------------------------- /.latexmkrc: -------------------------------------------------------------------------------- 1 | # make sure that "makeglossaries" works with latexmk 2 | # # https://tex.stackexchange.com/questions/1226/how-to-make-latexmk-use-makeglossaries/44316#44316 3 | 4 | add_cus_dep('glo', 'gls', 0, 'run_makeglossaries'); 5 | add_cus_dep('acn', 'acr', 0, 'run_makeglossaries'); 6 | 7 | sub run_makeglossaries { 8 | if ( $silent ) { 9 | system "makeglossaries -q -s '$_[0].ist' '$_[0]'"; 10 | } 11 | else { 12 | system "makeglossaries -s '$_[0].ist' '$_[0]'"; 13 | }; 14 | } 15 | 16 | push @generated_exts, 'glo', 'gls', 'glg'; 17 | push @generated_exts, 'acn', 'acr', 'alg'; 18 | 19 | # ----------------------------------- 20 | 21 | # Clean everything. 22 | # https://tex.stackexchange.com/questions/84006 23 | # https://tex.stackexchange.com/questions/83341 24 | $clean_ext .= ' %R.ist %R.xdy %R.bbl %R.glsdefs %R.run.xml %R.lol %R.tdo'; 25 | -------------------------------------------------------------------------------- /CHECKLIST: -------------------------------------------------------------------------------- 1 | http://www.ics.mq.edu.au/~rdale/resources/writingnotes/latexstyle.html#dashes 2 | 3 | * Dashes 4 | 5 | The single minus —the hyphen— appears within words; use the double 6 | minus — the en-dash — in number ranges; and use the treble dash, or 7 | em-dash, as in the previous clauses here. 8 | 9 | * Headings 10 | 11 | In section headings, capitalize all words except closed class words 12 | (i.e., prepositions, conjuctions, and so on). 13 | 14 | in subsection headings and below, only capitalize the first word and 15 | any proper names. 16 | 17 | * Structure 18 | 19 | Tell them what you're going to tell them, tell them it, then tell them 20 | you've told them it. 21 | 22 | * Footnotes 23 | 24 | Don't put a space before a \footnote command. Put the footnote after 25 | the punctuation mark it is next to, not before it. 26 | 27 | Make sure you include a full stop at the end of the footnote text. And 28 | make sure your footnotes are complete sentences. 29 | -------------------------------------------------------------------------------- /content/70_conclusion.tex: -------------------------------------------------------------------------------- 1 | \chapter{Conclusion And Outlook} 2 | \label{sec:conclusion} 3 | 4 | % Schlußfolgerungen, Fragen, Ausblicke 5 | 6 | % Dieses Kapitel ist sicherlich das am Schwierigsten zu schreibende. Es 7 | % dient einer gerafften Zusammenfassung dessen, was man gelernt hat. Es 8 | % ist möglicherweise gespickt von Rückwärtsverweisen in den Text, um dem 9 | % faulen aber interessierten Leser (der Regelfall) doch noch einmal die 10 | % Chance zu geben, sich etwas fundierter weiterzubilden. Manche guten 11 | % Arbeiten werfen mehr Probleme auf als sie lösen. Dies darf man ruhig 12 | % zugeben und diskutieren. Man kann gegebenenfalls auch schreiben, was 13 | % man in dieser Sache noch zu tun gedenkt oder den Nachfolgern ein paar 14 | % Tips geben. Aber man sollte nicht um jeden Preis Fragen, die gar nicht 15 | % da sind, mit Gewalt aufbringen und dem Leser suggerieren, wie 16 | % weitsichtig man doch ist. Dieses Kapitel muß kurz sein, damit es 17 | % gelesen wird. 18 | 19 | \ldots conclusion \ldots 20 | 21 | \todo{write conclusion} 22 | 23 | \cleardoublepage 24 | 25 | %%% Local Variables: 26 | %%% TeX-master: "diplom" 27 | %%% End: 28 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/sentence.h: -------------------------------------------------------------------------------- 1 | /* Notes */ /*{{{C}}}*//*{{{*/ 2 | /* 3 | 4 | This program is GNU software, copyright 1997, 1998, 1999, 2000, 2001 5 | Michael Haardt . 6 | 7 | This program is free software; you can redistribute it and/or modify it 8 | under the terms of the GNU General Public License as published by the 9 | Free Software Foundation; either version 2 of the License, or (at your 10 | option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, but 13 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 | for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program. If not, write to the Free Software Foundation, Inc., 19 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 | 21 | */ 22 | /*}}}*/ 23 | 24 | #ifndef SENTENCE_H 25 | #define SENTENCE_H 26 | 27 | #include 28 | #include 29 | 30 | void sentence(const char *cmd, FILE *in, const char *file, void (*process)(const char *, size_t, const char *, int), const char *lang); 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/README: -------------------------------------------------------------------------------- 1 | GNU diction and style are free implementations of old standard unix 2 | commands, that are not available on many modern systems, because they 3 | have been unbundled. Diction prints wordy and commonly misused phrases. 4 | Style analyses surface characteristics of a document, e.g. sentence 5 | length and various readability measures, but unlike the original code, 6 | it lacks sentence type, word usage and most sentence beginning processing. 7 | 8 | Both commands support English and German documents. 9 | 10 | This program is free software; you can redistribute it and/or modify it 11 | under the terms of the GNU General Public License as published by the 12 | Free Software Foundation; either version 2 of the License, or (at your 13 | option) any later version. 14 | 15 | This program is distributed in the hope that it will be useful, but 16 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 17 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 18 | for more details. 19 | 20 | You should have received a copy of the GNU General Public License along 21 | with this program. If not, write to the Free Software Foundation, Inc., 22 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 23 | -------------------------------------------------------------------------------- /content/30_design.tex: -------------------------------------------------------------------------------- 1 | \chapter{Design} 2 | \label{sec:design} 3 | 4 | % Ist das zentrale Kapitel der Arbeit. Hier werden das Ziel sowie die 5 | % eigenen Ideen, Wertungen, Entwurfsentscheidungen vorgebracht. Es kann 6 | % sich lohnen, verschiedene Möglichkeiten durchzuspielen und dann 7 | % explizit zu begründen, warum man sich für eine bestimmte entschieden 8 | % hat. Dieses Kapitel sollte - zumindest in Stichworten - schon bei den 9 | % ersten Festlegungen eines Entwurfs skizziert werden. 10 | % Es wird sich aber in einer normal verlaufenden 11 | % Arbeit dauernd etwas daran ändern. Das Kapitel darf nicht zu 12 | % detailliert werden, sonst langweilt sich der Leser. Es ist sehr 13 | % wichtig, das richtige Abstraktionsniveau zu finden. Beim Verfassen 14 | % sollte man auf die Wiederverwendbarkeit des Textes achten. 15 | 16 | % Plant man eine Veröffentlichung aus der Arbeit zu machen, können von 17 | % diesem Kapitel Teile genommen werden. Das Kapitel wird in der Regel 18 | % wohl mindestens 8 Seiten haben, mehr als 20 können ein Hinweis darauf 19 | % sein, daß das Abstraktionsniveau verfehlt wurde. 20 | 21 | \ldots design \ldots 22 | 23 | \todo{write design} 24 | 25 | \cleardoublepage 26 | 27 | %%% Local Variables: 28 | %%% TeX-master: "diplom" 29 | %%% End: 30 | -------------------------------------------------------------------------------- /checkbiw/doc/manual.gosh: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | 3 | ### WRITE HEADER OF TEX FILE ### 4 | proc produce_head_latex {} { 5 | global title authors 6 | 7 | puts {\documentclass[twoside]{article}} 8 | puts {\special{papersize=8.5in,11in} % Letter paper - for `dvips'} 9 | puts {\usepackage[T1]{fontenc}} 10 | puts {\usepackage[utf8]{inputenc}} 11 | #puts {\input macros.tex} 12 | 13 | puts {\date{\today}} 14 | 15 | if {$title != ""} { 16 | puts "\\title{[out_latex $title]}" 17 | if {$authors != ""} { 18 | puts "\\author{[out_latex $authors]}" 19 | } 20 | } 21 | puts {\begin{document}} 22 | if {$title != ""} { 23 | puts {\maketitle} 24 | } 25 | puts { \tableofcontents \clearpage} 26 | } 27 | 28 | ### WRITE TAIL OF TEX FILE ### 29 | proc produce_tail_latex {} { 30 | # puts "\\clearpage" 31 | puts "\\bibliographystyle{plain}" 32 | # puts "\\footnotesize" 33 | puts "\\addcontentsline{toc}{section}{References}" 34 | puts "\\index{references}" 35 | puts "\\bibliography{own}" 36 | puts "\\end{document}" 37 | } 38 | 39 | 40 | ### DOCUMENT-SPECIFIC TEXT REPLACEMENTS ### 41 | proc out_latex_private {string} { 42 | regsub -all {LaTeX} $string "\\LaTeX{}" string 43 | # regsub {\\\$Revision([ 0-9.]*)\\\$} $string {\\date{\\today{} --- Revision \1}} string 44 | return $string 45 | } 46 | -------------------------------------------------------------------------------- /checkbiw/doc/Makefile: -------------------------------------------------------------------------------- 1 | TXTFILES := mustread.txt manpage.txt 2 | BIBFILES := own.bib 3 | 4 | # NOTE: Remember to check out the gosh submodule using 5 | # git submodule init 6 | # git submodule update 7 | GOSHDIR := ../../gosh 8 | GOSH := $(GOSHDIR)/gosh 9 | TXT2TEX_OPT := --style manual.gosh 10 | TXT2MAN_OPT := --style $(GOSHDIR)/man.gosh 11 | 12 | TEXFILES := $(patsubst %.txt, %.tex,$(TXTFILES)) 13 | PDFFILES := $(TEXFILES:.tex=.pdf) 14 | 15 | MANPAGES := checkbiw.1 bugsinwriting.7 16 | 17 | all:: mustread.pdf $(MANPAGES) 18 | 19 | # Make sure the corresponding txt files are the first dependency of 20 | # each manpage -- the rule to create the manpages depends on this. 21 | checkbiw.1: manpage.txt 22 | bugsinwriting.7: mustread.txt 23 | $(MANPAGES): $(GOSHDIR)/man.gosh $(GOSH) 24 | 25 | $(TEXFILES): manual.gosh $(GOSH) 26 | $(PDFFILES) $(DVIFILES): $(BIBFILES) 27 | 28 | clean:: 29 | rm -f *.aux *.bbl *.blg *.log *.ps *.toc *.pdf *.dvi *.idx *.new \ 30 | $(TEXFILES) $(MANPAGES) 31 | 32 | cleanall:: clean 33 | rm -f *~ 34 | 35 | $(MANPAGES): 36 | $(GOSH) $(TXT2MAN_OPT) $< > $@.new 37 | mv $@.new $@ 38 | 39 | .PRECIOUS: .tex 40 | %.tex: %.txt 41 | $(GOSH) $(TXT2TEX_OPT) $< > $@.new 42 | mv $@.new $@ 43 | 44 | %.pdf: %.tex 45 | pdflatex $< 46 | bibtex $(basename $<) || true 47 | pdflatex $< 48 | pdflatex $< 49 | 50 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/diction.spec: -------------------------------------------------------------------------------- 1 | %define prefix /usr 2 | 3 | %define RELEASE 1 4 | %define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE} 5 | 6 | Summary: analyze text for style 7 | Name: diction 8 | Version: 1.03 9 | Release: %rel 10 | Copyright: GPL 11 | Group: Text/Utilities 12 | Source: http://www.moria.de/~michael/diction/diction-%{version}.tar.gz 13 | BuildRoot: /var/tmp/%{name}-%{version}-root 14 | URL: http://www.moria.de/~michael/diction/ 15 | DocDir: %{prefix}/doc 16 | 17 | %description 18 | diction [desc] 19 | 20 | %changelog 21 | * Thu May 12 2000 HWN 22 | - Initial spec file copied GGV 23 | 24 | %prep 25 | %setup 26 | 27 | %build 28 | 29 | # Needed for snapshot releases. 30 | if [ ! -f configure ]; then 31 | CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh $ARCH_FLAGS --prefix=%{prefix} 32 | else 33 | CFLAGS="$RPM_OPT_FLAGS" ./configure $ARCH_FLAGS --prefix=%{prefix} 34 | fi 35 | 36 | if [ "$SMP" != "" ]; then 37 | (make "MAKE=make -k -j $SMP"; exit 0) 38 | make 39 | else 40 | make 41 | fi 42 | 43 | %install 44 | rm -rf $RPM_BUILD_ROOT 45 | 46 | make prefix=$RPM_BUILD_ROOT%{prefix} install 47 | 48 | %clean 49 | rm -rf $RPM_BUILD_ROOT 50 | 51 | %files 52 | %defattr(-, root, root) 53 | 54 | %doc COPYING README 55 | %{prefix}/bin/* 56 | %{prefix}/share/* 57 | %{prefix}/man/* 58 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/diction.spec.in: -------------------------------------------------------------------------------- 1 | %define prefix /usr 2 | 3 | %define RELEASE 1 4 | %define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE} 5 | 6 | Summary: analyze text for style 7 | Name: diction 8 | Version: @VERSION@ 9 | Release: %rel 10 | Copyright: GPL 11 | Group: Text/Utilities 12 | Source: http://www.moria.de/~michael/diction/diction-%{version}.tar.gz 13 | BuildRoot: /var/tmp/%{name}-%{version}-root 14 | URL: http://www.moria.de/~michael/diction/ 15 | DocDir: %{prefix}/doc 16 | 17 | %description 18 | diction [desc] 19 | 20 | %changelog 21 | * Thu May 12 2000 HWN 22 | - Initial spec file copied GGV 23 | 24 | %prep 25 | %setup 26 | 27 | %build 28 | 29 | # Needed for snapshot releases. 30 | if [ ! -f configure ]; then 31 | CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh $ARCH_FLAGS --prefix=%{prefix} 32 | else 33 | CFLAGS="$RPM_OPT_FLAGS" ./configure $ARCH_FLAGS --prefix=%{prefix} 34 | fi 35 | 36 | if [ "$SMP" != "" ]; then 37 | (make "MAKE=make -k -j $SMP"; exit 0) 38 | make 39 | else 40 | make 41 | fi 42 | 43 | %install 44 | rm -rf $RPM_BUILD_ROOT 45 | 46 | make prefix=$RPM_BUILD_ROOT%{prefix} install 47 | 48 | %clean 49 | rm -rf $RPM_BUILD_ROOT 50 | 51 | %files 52 | %defattr(-, root, root) 53 | 54 | %doc COPYING README 55 | %{prefix}/bin/* 56 | %{prefix}/share/* 57 | %{prefix}/man/* 58 | -------------------------------------------------------------------------------- /content/00_title.tex: -------------------------------------------------------------------------------- 1 | \selectlanguage{ngerman} 2 | 3 | \begin{singlespace} 4 | 5 | % Depending on the thesis that you are writing, choose the proper setting here 6 | \subject{diploma} % for Diploma Thesis 7 | \graduation[Dipl.-Inf.]{Diplom-Informatiker*in} 8 | % \subject{master} % for Master Thesis 9 | % \graduation[M.Sc.]{Master of Science} 10 | % \subject{bachelor} % for Bachelor Thesis 11 | % \graduation[B.Sc.]{Bachelor of Science} 12 | % \subject{evidence} % for Student Research Project (Großer Beleg) 13 | 14 | \title{Dein Titel} 15 | 16 | \author{% 17 | Otto Mustermann% 18 | \matriculationnumber{123456789}% 19 | \dateofbirth{2.1.1990}% 20 | \placeofbirth{Dresden}% 21 | } 22 | 23 | \date{\today} % \printdate % if you defined date earlier 24 | 25 | % English version 26 | \faculty{Faculty of Computer Science} 27 | \institute{Institute of Systems Architecture} 28 | \chair{Chair of Operating Systems} 29 | % German version 30 | %\faculty{Fakultät Informatik} 31 | %\institute{Institut für Systemarchitektur} 32 | %\chair{Professur für Betriebssysteme} 33 | 34 | \professor{Prof.\ Dr.-Ing.\ Horst Schirmeier} 35 | \supervisor{ 36 | Dipl.-Inf.\ Betreuer Eins% 37 | \and% 38 | M.Sc.\ Betreuer Zwei% 39 | } 40 | 41 | \maketitle 42 | \end{singlespace} 43 | 44 | \cleardoublepage 45 | -------------------------------------------------------------------------------- /content/40_implementation.tex: -------------------------------------------------------------------------------- 1 | \chapter{Implementation} 2 | \label{sec:implementation} 3 | 4 | % Hier greift man einige wenige, interessante Gesichtspunkte der 5 | % Implementierung heraus. Das Kapitel darf nicht mit Dokumentation oder 6 | % gar Programmkommentaren verwechselt werden. Es kann vorkommen, daß 7 | % sehr viele Gesichtspunkte aufgegriffen werden müssen, ist aber nicht 8 | % sehr häufig. Zweck dieses Kapitels ist einerseits, glaubhaft zu 9 | % machen, daß man es bei der Arbeit nicht mit einem "Papiertiger" 10 | % sondern einem real existierenden System zu tun hat. Es ist sicherlich 11 | % auch ein sehr wichtiger Text für jemanden, der die Arbeit später 12 | % fortsetzt. Der dritte Gesichtspunkt dabei ist, einem Leser einen etwas 13 | % tieferen Einblick in die Technik zu geben, mit der man sich hier 14 | % beschäftigt. Schöne Bespiele sind "War Stories", also Dinge mit denen 15 | % man besonders zu kämpfen hatte, oder eine konkrete, beispielhafte 16 | % Verfeinerung einer der in Kapitel 3 vorgestellten Ideen. Auch hier 17 | % gilt, mehr als 20 Seiten liest keiner, aber das ist hierbei nicht so 18 | % schlimm, weil man die Lektüre ja einfach abbrechen kann, ohne den 19 | % Faden zu verlieren. Vollständige Quellprogramme haben in einer Arbeit 20 | % nichts zu suchen, auch nicht im Anhang, sondern gehören auf Rechner, 21 | % auf denen man sie sich ansehen kann. 22 | 23 | \ldots implementation \ldots 24 | 25 | \todo{write implementation} 26 | 27 | \cleardoublepage 28 | 29 | %%% Local Variables: 30 | %%% TeX-master: "diplom" 31 | %%% End: 32 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/misc.c: -------------------------------------------------------------------------------- 1 | /* Notes */ /*{{{C}}}*//*{{{*/ 2 | /* 3 | 4 | This file is free software; as a special exception the author gives 5 | unlimited permission to copy and/or distribute it, with or without 6 | modifications, as long as this notice is preserved. 7 | 8 | This program is distributed in the hope that it will be useful, but 9 | WITHOUT ANY WARRANTY, to the extent permitted by law; without even the 10 | implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | 12 | */ 13 | /*}}}*/ 14 | /* #includes *//*{{{*/ 15 | #ifndef NO_POSIX_SOURCE 16 | #undef _POSIX_SOURCE 17 | #define _POSIX_SOURCE 1 18 | #undef _POSIX_C_SOURCE 19 | #define _POSIX_C_SOURCE 2 20 | #endif 21 | 22 | #ifdef DMALLOC 23 | #include "dmalloc.h" 24 | #endif 25 | 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | 35 | #include "config.h" 36 | 37 | #include "misc.h" 38 | /*}}}*/ 39 | 40 | #ifdef BROKEN_REALLOC 41 | /* myrealloc -- ANSI conforming realloc() */ /*{{{*/ 42 | #undef realloc 43 | void *myrealloc(void *p, size_t n) 44 | { 45 | return (p==(void*)0 ? malloc(n) : realloc(p,n)); 46 | } 47 | /*}}}*/ 48 | #endif 49 | #ifndef HAVE_STRERROR 50 | /* strerror -- ANSI strerror */ /*{{{*/ 51 | extern int sys_nerr; 52 | extern char *sys_errlist[]; 53 | 54 | char *strerror(int errno) 55 | { 56 | assert(errno>=0); 57 | assert(errno 30 | #include 31 | #include 32 | 33 | static void sigsegv(int n) 34 | { 35 | exit(1); 36 | } 37 | 38 | int main(void) 39 | { 40 | signal(SIGSEGV,sigsegv); 41 | realloc((void*)0,1); 42 | exit(0); 43 | } 44 | ],AC_MSG_RESULT(no),AC_DEFINE(BROKEN_REALLOC) AC_MSG_RESULT(yes)) 45 | 46 | USE_NLS=no 47 | AC_CHECK_PROG(MSGFMT,msgfmt,yes,no) 48 | if test "$MSGFMT" = yes 49 | then 50 | AC_CHECK_HEADERS(libintl.h,[LIBINTL=yes]) 51 | if test "$LIBINTL" = yes 52 | then 53 | AC_SEARCH_LIBS(gettext,intl,[AC_DEFINE(HAVE_GETTEXT) USE_NLS=yes]) 54 | fi 55 | fi 56 | 57 | AC_DEFINE_UNQUOTED(VERSION,"$VERSION") 58 | AC_SUBST(VERSION) 59 | AC_SUBST(UPDATED) 60 | eval DATADIR=$datadir 61 | AC_SUBST(DATADIR) 62 | AC_SUBST(USE_NLS) 63 | AC_OUTPUT(Makefile diction.1 diction.texi diction.spec style.1) 64 | -------------------------------------------------------------------------------- /preamble/packages.tex: -------------------------------------------------------------------------------- 1 | % You can choose style "numeric" instead which is common in many papers. 2 | % Without "maxbibnames=99" the bibliography entries only contain "First Name et al." 3 | \usepackage[backend=biber,style=alphabetic,alldates=long,maxbibnames=99]{biblatex} 4 | 5 | % FONT SETTINGS & ENCODING 6 | % By default this build setup uses lualatex which supports special characters 7 | % (öäüß<>) out of the box. If you ever want to switch to pdflatex but also 8 | % keep the support for lualatex, add these three packages: 9 | % \usepackage[T1]{fontenc} 10 | % \usepackage[utf8]{luainputenc} 11 | % \usepackage{lmodern} 12 | 13 | \usepackage[nospace]{varioref} % nice refs 14 | \usepackage{csquotes} 15 | \usepackage{graphicx} % graphics 16 | \usepackage{caption} % manipulate fugures 17 | \usepackage{subcaption} % allow for subfigures 18 | % Also checkout "minted" instead of "listings" - looks much nicer and supports 19 | % more languages but requires "pygmentize" to be available on the command line 20 | \usepackage{listings} % nice source code listings 21 | \usepackage{xcolor} 22 | \usepackage{booktabs} % nice tables 23 | \usepackage{microtype} % better looking text borders 24 | \usepackage{siunitx} % unified way of setting values with units 25 | \usepackage{array} 26 | \usepackage{fancybox} % provide nice boxes 27 | \usepackage{fancyvrb} % algorithm-boxes 28 | \usepackage{pdfpages} 29 | \usepackage{hyphenat} 30 | \usepackage{todonotes} 31 | \usepackage{xspace} 32 | \usepackage{setspace} 33 | 34 | % use this one last 35 | % (redefines some macros for compatibility with KOMAScript) 36 | \usepackage{scrhack} 37 | -------------------------------------------------------------------------------- /content/20_state.tex: -------------------------------------------------------------------------------- 1 | \chapter{Technical Background} 2 | \label{sec:state} 3 | 4 | % Hier werden zwei wesentliche Aufgaben erledigt: 5 | 6 | % 1. Der Leser muß alles beigebracht bekommen, was er zum Verständnis 7 | % der späteren Kapitel braucht. Insbesondere sind in unserem Fach die 8 | % Systemvoraussetzungen zu klären, die man später benutzt. Zulässig ist 9 | % auch, daß man hier auf Tutorials oder Ähnliches verweist, die hier auf 10 | % dem Netz zugänglich sind. 11 | 12 | % 2. Es muß klar werden, was anderswo zu diesem Problem gearbeitet 13 | % wird. Insbesondere sollen natürlich die Lücken der anderen klar 14 | % werden. Warum ist die eigene Arbeit, der eigene Ansatz wichtig, um 15 | % hier den Stand der Technik weiterzubringen? Dieses Kapitel wird von 16 | % vielen Lesern übergangen (nicht aber vom Gutachter ;-), auch später 17 | % bei Veröffentlichungen ist "Related Work" eine wichtige Sache. 18 | 19 | % Viele Leser stellen dann später fest, daß sie einige der Grundlagen 20 | % doch brauchen und blättern zurück. Deshalb ist es gut, 21 | % Rückwärtsverweise in späteren Kapiteln zu haben, und zwar so, daß man 22 | % die Abschnitte, auf die verwiesen wird, auch für sich lesen 23 | % kann. Diese Kapitel kann relativ lang werden, je größer der Kontext 24 | % der Arbeit, desto länger. Es lohnt sich auch! Den Text kann man unter 25 | % Umständen wiederverwenden, indem man ihn als "Tutorial" zu einem 26 | % Gebiet auch dem Netz zugänglich macht. 27 | 28 | % Dadurch gewinnt man manchmal wertvolle Hinweise von Kollegen. Dieses 29 | % Kapitel wird in der Regel zuerst geschrieben und ist das Einfachste 30 | % (oder das Schwerste weil erste). 31 | 32 | \ldots state of the art \ldots 33 | 34 | \todo{write state} 35 | 36 | \cleardoublepage 37 | 38 | %%% Local Variables: 39 | %%% TeX-master: "diplom" 40 | %%% End: 41 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | # Nix Flake exporting an attribute to build the thesis in a Nix derivation. 2 | # Also exporting a dev shell to get the relevant tooling to build the 3 | # thesis traditionally on the shell. 4 | # 5 | # Make sure to configure your `nix` with: 6 | # `experimental-features = flakes nix-command` 7 | # in order to be able to use flakes. 8 | # 9 | # Feel free to ping "@phip1611" for maintenance guidance and questions. 10 | { 11 | description = "TUD OS LaTex Template"; 12 | 13 | inputs = { 14 | nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; 15 | }; 16 | 17 | outputs = 18 | { self, ... }@inputs: 19 | let 20 | # Systems definition for dev shells and exported packages, 21 | # independent of the NixOS configurations and modules defined here. We 22 | # just use "every system" here to not restrict any user. However, it 23 | # likely happens that certain packages don't build for/under certain 24 | # systems. 25 | systems = inputs.nixpkgs.lib.systems.flakeExposed; 26 | forAllSystems = 27 | function: 28 | inputs.nixpkgs.lib.genAttrs systems (system: function inputs.nixpkgs.legacyPackages.${system}); 29 | in 30 | { 31 | 32 | devShells.default = forAllSystems ( 33 | pkgs: 34 | pkgs.mkShell { 35 | inputsFrom = [ self.packages.${pkgs.system}.thesis ]; 36 | packages = with pkgs; [ 37 | nixfmt-rfc-style 38 | ]; 39 | } 40 | ); 41 | 42 | # for `nix fmt .` 43 | formatter = forAllSystems (pkgs: pkgs.nixfmt-rfc-style); 44 | 45 | packages = 46 | forAllSystems ( 47 | pkgs: 48 | let 49 | texToolchain = pkgs.callPackage ./nix/tex-toolchain.nix { }; 50 | thesis = pkgs.callPackage ./nix/thesis.nix { 51 | tex = texToolchain; 52 | }; 53 | in 54 | { 55 | default = thesis; 56 | inherit thesis; 57 | } 58 | ); 59 | }; 60 | } 61 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: "Build" 2 | on: 3 | pull_request: 4 | push: 5 | merge_group: 6 | 7 | jobs: 8 | # Builds the Nix derivation. 9 | nix_build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - uses: cachix/install-nix-action@v30 14 | - uses: DeterminateSystems/magic-nix-cache-action@main 15 | - run: nix build . 16 | # -s: test if this is a file and if it has a size. 17 | - run: test -s result/diplom.pdf 18 | 19 | # Tests the regular build but with a toolchain from the Nix shell. 20 | nix_shell: 21 | runs-on: ubuntu-latest 22 | steps: 23 | - uses: actions/checkout@v4 24 | - uses: cachix/install-nix-action@v30 25 | - uses: DeterminateSystems/magic-nix-cache-action@main 26 | - run: nix develop -i --command bash -c "make" 27 | - run: nix develop -i --command bash -c "make stats" 28 | 29 | # Builds with a regular toolchain via latexmk. 30 | regular_build: 31 | runs-on: ubuntu-latest 32 | steps: 33 | - name: Set up Git repository 34 | uses: actions/checkout@v4 35 | - name: Compile LaTeX document 36 | uses: xu-cheng/latex-action@v3 37 | with: 38 | # options listed here: 39 | # https://github.com/xu-cheng/latex-action 40 | root_file: diplom.tex 41 | latexmk_use_lualatex: true 42 | # required when using the "minted" package for beautiful styled code 43 | # latexmk_shell_escape: true 44 | 45 | # checkbiw and check-french-spacing must execute without error 46 | check_scripts: 47 | runs-on: ubuntu-latest 48 | steps: 49 | - name: Set up Git repository 50 | uses: actions/checkout@v4 51 | # additionally: check out submodules 52 | with: 53 | submodules: recursive 54 | - name: install make 55 | run: sudo apt update && sudo apt install make 56 | - name: make check-french-spacing 57 | run: make check-french-spacing 58 | - name: install diction 59 | run: sudo apt update && sudo apt install diction 60 | - name: make checkbiw 61 | run: make checkbiw 62 | -------------------------------------------------------------------------------- /own.bib: -------------------------------------------------------------------------------- 1 | % This file was created with JabRef 2.9.2. 2 | % Encoding: UTF-8 3 | 4 | @INPROCEEDINGS{becher04:_feurig_hacken_mit_firew, 5 | author = {Michael Becher and Maximillian Dornseif}, 6 | title = {{Feuriges Hacken - Spaß mit Firewire}}, 7 | booktitle = {21C3: Proceedings of the 21st Chaos Communication Congress}, 8 | date = {2004-12} 9 | } 10 | 11 | @CONFERENCE{bellard2005qfa, 12 | author = {Fabrice Bellard}, 13 | title = {{QEMU, a fast and portable dynamic translator}}, 14 | booktitle = {Proceedings of the USENIX Annual Technical Conference, FREENIX Track}, 15 | date = {2005}, 16 | pages = {41--46} 17 | } 18 | 19 | @INPROCEEDINGS{boileau06, 20 | author = {Adam Boileau}, 21 | title = {{Hit by a Bus: Physical Access Attacks with Firewire}}, 22 | booktitle = {RUXCON}, 23 | date = {2006} 24 | } 25 | 26 | @BOOK{frederick95, 27 | author = {Brooks,Jr., Frederick P.}, 28 | title = {The mythical man-month (anniversary ed.)}, 29 | date = {1995}, 30 | publisher = {Addison-Wesley Longman Publishing Co., Inc.}, 31 | location = {Boston, MA, USA}, 32 | isbn = {0-201-83595-9} 33 | } 34 | 35 | @ARTICLE{collins97a, 36 | author = {Robert R. Collins}, 37 | title = {{In-Circuit Emulation: How the Microprocessor Evolved Over Time}}, 38 | date = {1997-09}, 39 | journal = {Dr. Dobbs Journal} 40 | } 41 | 42 | @ARTICLE{feske07, 43 | author = {Norman Feske}, 44 | title = {{A case study on the cost and benefit of dynamic RPC marshalling 45 | for low-level system components}}, 46 | date = {2007}, 47 | volume = {41}, 48 | number = {4}, 49 | pages = {40--48}, 50 | issn = {0163-5980}, 51 | doi = {http://doi.acm.org/10.1145/1278901.1278908}, 52 | journal = {SIGOPS Operating Systems Review}, 53 | location = {New York, NY, USA}, 54 | publisher = {ACM} 55 | } 56 | 57 | @ONLINE{green04, 58 | author = {Tom Green}, 59 | title = {{1394 Kernel Debugging Tips and Tricks}}, 60 | date = {2004}, 61 | url = {http://download.microsoft.com/download/1/8/f/18f8cee2-0b64-41f2-893d-a6f2295b40c8/DW04001_WINHEC2004.ppt}, 62 | note = {Slide presentation at the WinHEC 2004}, 63 | urldate = {2009-06-03} 64 | } 65 | 66 | @PATENT{patent:4819234, 67 | author = {Huber, William S.}, 68 | title = {Operating system debugger}, 69 | number = {4819234}, 70 | date = {1989-04}, 71 | location = {Needham, MA}, 72 | url = {http://www.freepatentsonline.com/4819234.html} 73 | } 74 | 75 | -------------------------------------------------------------------------------- /diplom.tex: -------------------------------------------------------------------------------- 1 | \documentclass[ 2 | a4paper, 3 | abstract=true, 4 | twoside, 5 | listof=totoc, 6 | numbers=noenddot, 7 | bibliography=totoc, 8 | BCOR=1.5cm, 9 | headsepline, 10 | DIV=12, 11 | appendixprefix, 12 | final 13 | ] {tudscrreprt} 14 | 15 | % You should select either american or british instead of english here: 16 | \usepackage[ngerman,english]{babel} 17 | \usepackage{fontspec} 18 | 19 | \usepackage[citebordercolor={0.75 0.75 1}, 20 | filebordercolor={0.75 0.75 1}, 21 | linkbordercolor={0.75 0.75 1}, 22 | % pagebordercolor={0.75 0.75 1}, 23 | urlbordercolor={0.75 0.75 1}, 24 | pdfborder={0.75 0.75 1}, 25 | hidelinks, 26 | plainpages=false,pdfpagelabels=true]{hyperref} 27 | \hypersetup{% 28 | pdftitle={Dein Titel}, 29 | pdfauthor={Otto Mustermann}, 30 | pdfkeywords={foo, bar}, 31 | } 32 | 33 | \input{preamble/packages.tex} 34 | \addbibresource{own.bib} 35 | \input{preamble/color.tex} 36 | \input{preamble/style.tex} 37 | \input{preamble/newcommands.tex} 38 | 39 | % If you know when you will hand in your thesis, enter the date here. 40 | %\date{30. April 2009} 41 | %\newcommand{\printdate}{\@date} 42 | 43 | \begin{document} 44 | 45 | \pagenumbering{Roman} 46 | 47 | \input{content/00_title.tex} 48 | 49 | \includepdf{images/diplom-aufgabe.pdf} 50 | \cleardoublepage 51 | 52 | \input{content/01_disclaimer.tex} 53 | 54 | % NOTE: if you selected british or american above, change that here too 55 | \selectlanguage{english} 56 | 57 | \begin{abstract} 58 | \input{content/02_abstract.tex} 59 | \end{abstract} 60 | 61 | \cleardoublepage 62 | 63 | \tableofcontents 64 | 65 | \cleardoublepage 66 | 67 | % remove this on final 68 | \listoftodos 69 | \cleardoublepage 70 | 71 | \listoffigures 72 | \cleardoublepage 73 | 74 | \listoftables 75 | \cleardoublepage 76 | 77 | \pagenumbering{arabic} 78 | % use \input for small stuff (like a list you include twice or a tiks figure) 79 | % and \include for large latex compilation workloads (like a chapter) to get faster builds. 80 | \include{content/10_introduction} 81 | \include{content/20_state} 82 | \include{content/30_design} 83 | \include{content/40_implementation} 84 | \include{content/50_evaluation} 85 | \include{content/60_futurework} 86 | \include{content/70_conclusion} 87 | 88 | \appendix 89 | 90 | %\addchap{Glossar} 91 | 92 | % makeglossaries diplom 93 | %\printglossary[style=altlist] 94 | %\printglossary[type=\acronymtype,style=long] 95 | 96 | \printbibliography 97 | \iffalse 98 | % an aid for Kile autocompletion 99 | \bibliography{own.bib} 100 | \fi 101 | 102 | \end{document} 103 | -------------------------------------------------------------------------------- /content/10_introduction.tex: -------------------------------------------------------------------------------- 1 | \chapter{Introduction} 2 | \label{sec:intro} 3 | 4 | % Die Einleitung schreibt man zuletzt, wenn die Arbeit im Großen und 5 | % Ganzen schon fertig ist. (Wenn man mit der Einleitung beginnt - ein 6 | % häufiger Fehler - braucht man viel länger und wirft sie später doch 7 | % wieder weg). Sie hat als wesentliche Aufgabe, den Kontext für die 8 | % unterschiedlichen Klassen von Lesern herzustellen. Man muß hier die 9 | % Leser für sich gewinnen. Das Problem, mit dem sich die Arbeit befaßt, 10 | % sollte am Ende wenigsten in Grundzügen klar sein und dem Leser 11 | % interessant erscheinen. Das Kapitel schließt mit einer Übersicht über 12 | % den Rest der Arbeit. Meist braucht man mindestens 4 Seiten dafür, mehr 13 | % als 10 Seiten liest keiner. 14 | 15 | \todo{adopt title page} 16 | 17 | \todo{adopt disclaimer} 18 | 19 | \todo{write introduction} 20 | 21 | \section{A Section} 22 | 23 | Referencing other chapters: \ref{sec:state} \ref{sec:design} 24 | \ref{sec:implementation} \ref{sec:evaluation} \ref{sec:futurework} 25 | \ref{sec:conclusion} 26 | 27 | \begin{table}[htp] 28 | \centering 29 | \begin{tabular}{lrr} 30 | \textbf{Name} & \textbf{Y} & \textbf{Z} \\ 31 | \hline 32 | \textit{Foo} & 20,614 & \SI{23}{\percent} \\ 33 | \textit{Bar} & 9,914 & \SI{11}{\percent} \\ 34 | \textit{Foo + Bar} & 30,528 & \SI{34}{\percent} \\ 35 | \hline 36 | \textit{total} & 88,215 & \SI{100}{\percent} \\ 37 | 38 | \end{tabular} 39 | \caption[Some interesting numbers]{Various very important looking numbers and sums.} 40 | \label{tab:numbers} 41 | \end{table} 42 | 43 | More text referencing Table~\ref{tab:numbers}. 44 | 45 | \section{Another Section} 46 | 47 | \begin{figure}[tbp] 48 | \centering 49 | \includegraphics[width=0.8\textwidth]{images/squirrel} 50 | \caption[Short description]{A long description of this squirrel figure. 51 | Image taken from 52 | \url{http://commons.wikimedia.org/wiki/File:Sciurus-vulgaris_hernandeangelis_stockholm_2008-06-04.jpg}} 53 | \label{fig:squirrel} 54 | \end{figure} 55 | 56 | Citing \cite{bellard2005qfa} other documents \cite{bellard2005qfa, boileau06} 57 | and Figure~\ref{fig:squirrel}. 58 | 59 | Something with umlauts and a year/month date: 60 | \cite{becher04:_feurig_hacken_mit_firew}. 61 | 62 | And some online resources: \cite{green04}, \cite{patent:4819234} 63 | 64 | 65 | \section{Yet Another Section} 66 | 67 | \todo{add content} 68 | 69 | \begin{figure}[tbp] 70 | \missingfigure{Come up with a mindblowing figure.} 71 | \caption{A mindblowing figure} 72 | \label{fig:todo} 73 | \end{figure} 74 | 75 | \section{Test commands} 76 | 77 | \drops \LLinux \NOVA \QEMU 78 | \texttt{memcpy} 79 | A sentence about BASIC. And a correctly formatted one about ECC\@. 80 | 81 | \section{Test Special Chars} 82 | Before you start writing your thesis please make sure that your build setup 83 | compiles the following special chars correctly into the PDF! 84 | If for example ß is printed as 'SS' then you should fix this! 85 | There are a few hints in the repository in \mbox{\texttt{preamble/packages.txt}}. 86 | 87 | ö ä ü Ö Ä Ü ß < > 88 | 89 | 90 | \cleardoublepage 91 | 92 | %%% Local Variables: 93 | %%% TeX-master: "diplom" 94 | %%% End: 95 | -------------------------------------------------------------------------------- /preamble/style.tex: -------------------------------------------------------------------------------- 1 | % Biblatex Style 2 | \setcounter{secnumdepth}{3} % limit enumeration depth 3 | \setcounter{tocdepth}{1} % limit TOC depth 4 | 5 | % Listing Style 6 | 7 | \lstset{ % 8 | frame=shadowbox, 9 | rulesepcolor=\color{blue}, 10 | backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor} 11 | % basicstyle=\footnotesize, % the size of the fonts that are used for the code 12 | breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace 13 | breaklines=true, % sets automatic line breaking 14 | captionpos=b, % sets the caption-position to bottom 15 | commentstyle=\color{mygreen}, % comment style 16 | deletekeywords={...}, % if you want to delete keywords from the given language 17 | escapeinside={\%*}{*)}, % if you want to add LaTeX within your code 18 | extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8 19 | frame=single, % adds a frame around the code 20 | keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible) 21 | keywordstyle=\color{blue}, % keyword style 22 | language=C, % the language of the code 23 | % morekeywords={*,...}, % if you want to add more keywords to the set 24 | numbers=left, % where to put the line-numbers; possible values are (none, left, right) 25 | numbersep=7pt, % how far the line-numbers are from the code 26 | numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers 27 | rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here)) 28 | showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces' 29 | showstringspaces=false, % underline spaces within strings only 30 | showtabs=false, % show tabs within strings adding particular underscores 31 | stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered 32 | stringstyle=\color{mymauve}, % string literal style 33 | tabsize=2, % sets default tabsize to 2 spaces 34 | title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title 35 | } 36 | 37 | % Typesetting options 38 | \tolerance 2414 39 | \hbadness 2414 40 | \emergencystretch 1.5em 41 | \hfuzz 0.3pt 42 | \widowpenalty=10000 % Hurenkinder 43 | \clubpenalty=10000 % Schusterjungen 44 | \vfuzz \hfuzz 45 | \raggedbottom 46 | 47 | % use nice footnote indentation 48 | \deffootnote[1em]{1em}{1em}{\textsuperscript{\thefootnotemark}\,} 49 | 50 | % ######################################################## 51 | 52 | % - Roman/Serif font for all headings. 53 | % Default is sans-serif which looks kind of unprofessional with the default font family. 54 | % - Packages like titlesec don't work well together with KOMA 55 | % - "disposition" means, that this setting is for all headings (chapter level, section level, ...) 56 | % see: https://mirror.physik.tu-berlin.de/pub/CTAN/macros/latex/contrib/koma-script/doc/scrguide.pdf 57 | \addtokomafont{disposition}{\rmfamily} 58 | 59 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/Makefile.in: -------------------------------------------------------------------------------- 1 | # This file is free software; as a special exception the author gives 2 | # unlimited permission to copy and/or distribute it, with or without 3 | # modifications, as long as this notice is preserved. 4 | # 5 | # This program is distributed in the hope that it will be useful, but 6 | # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the 7 | # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 | 9 | srcdir= @srcdir@ 10 | VPATH= @srcdir@ 11 | prefix= @prefix@ 12 | exec_prefix= @exec_prefix@ 13 | datadir= @datadir@ 14 | localedir= $(datadir)/locale 15 | 16 | CC= @CC@ 17 | CFLAGS= @CFLAGS@ 18 | CPPFLAGS= @CPPFLAGS@ -I. -DSHAREDIR=\"@datadir@\" -DLOCALEDIR=\"$(localedir)\" 19 | LDFLAGS= @LDFLAGS@ 20 | LIBM= -lm 21 | LIBS= @LIBS@ 22 | 23 | CATALOGS= de.mo 24 | 25 | all: diction style all-po-@USE_NLS@ 26 | all-po-no: 27 | all-po-yes: $(CATALOGS) 28 | 29 | diction: diction.o sentence.o misc.o getopt.o getopt1.o 30 | $(CC) -o $@ $(LDFLAGS) diction.o sentence.o misc.o \ 31 | getopt.o getopt1.o $(LIBS) 32 | 33 | style: style.o sentence.o misc.o getopt.o getopt1.o 34 | $(CC) -o $@ $(LDFLAGS) style.o sentence.o misc.o \ 35 | getopt.o getopt1.o $(LIBM) $(LIBS) 36 | 37 | check: diction 38 | for i in $(srcdir)/test/test*; do $$i || break; done 39 | 40 | install: all 41 | [ -d $(DESTDIR)@bindir@ ] || @INSTALL@ -m 755 -d $(DESTDIR)@bindir@ 42 | @INSTALL@ diction $(DESTDIR)@bindir@/diction 43 | @INSTALL@ style $(DESTDIR)@bindir@/style 44 | @INSTALL@ -m 755 -d $(DESTDIR)@datadir@/diction 45 | @INSTALL@ -m 644 $(srcdir)/de $(DESTDIR)@datadir@/diction/de 46 | @INSTALL@ -m 644 $(srcdir)/en $(DESTDIR)@datadir@/diction/en 47 | (cd $(DESTDIR)@datadir@/diction; rm -f C; ln en C) 48 | [ -d $(DESTDIR)@mandir@/man1 ] || @INSTALL@ -m 755 -d $(DESTDIR)@mandir@/man1 49 | @INSTALL@ -m 644 diction.1 $(DESTDIR)@mandir@/man1/diction.1 50 | @INSTALL@ -m 644 style.1 $(DESTDIR)@mandir@/man1/style.1 51 | make install-po-@USE_NLS@ 52 | install-po-no: 53 | install-po-yes: $(CATALOGS) 54 | for cat in $(CATALOGS); do \ 55 | dir=$(localedir)/`basename $$cat .mo`/LC_MESSAGES; \ 56 | [ -d $(DESTDIR)$$dir ] || @INSTALL@ -m 755 -d $(DESTDIR)$$dir; \ 57 | @INSTALL@ -m 644 $$cat $(DESTDIR)$$dir/diction.mo; \ 58 | done 59 | 60 | .c.o: 61 | $(CC) -c $(CPPFLAGS) $(CFLAGS) $< 62 | 63 | .SUFFIXES: .po .mo 64 | 65 | .po.mo: 66 | msgfmt -o $@ $< 67 | 68 | $(CATALOGS:.mo=.po): diction.pot 69 | for cat in $@; do \ 70 | [ -f $$cat ] || cp $(srcdir)/$$cat .; \ 71 | if msgmerge $$cat $< -o $$cat.tmp; then \ 72 | mv -f $$cat.tmp $$cat; \ 73 | cmp -s $$cat $(srcdir)/$$cat || \ 74 | cp $$cat $(srcdir)/$$cat; \ 75 | else \ 76 | echo "msgmerge for $$cat failed!"; \ 77 | rm -f $$cat.tmp; \ 78 | exit 1; \ 79 | fi; \ 80 | done 81 | 82 | diction.pot: $(srcdir)/*.c 83 | (objdir=`pwd`; cd $(srcdir); \ 84 | xgettext --add-comments --keyword=_ \ 85 | --output=$$objdir/messages.po *.c ) 86 | test -f messages.po && mv messages.po $@ 87 | # The sources have changed -- update diction.pot in srcdir as well. 88 | cp $@ $(srcdir)/$@ 89 | 90 | diction.html: diction.texi 91 | makeinfo --html diction.texi 92 | 93 | diction.info: diction.texi 94 | makeinfo diction.texi 95 | 96 | #{{{script}}}#{{{ clean 97 | clean: 98 | rm -f *.out core *.o *.mo diction.html diction.info 99 | #}}} 100 | #{{{ distclean 101 | distclean: clean 102 | rm -f diction style config.cache config.h config.log config.status Makefile diction.1 diction.texi style.1 test/rundiction 103 | rm -rf autom4te.cache 104 | #}}} 105 | #{{{ tar 106 | tar: distclean 107 | (b=`pwd`; b=`basename $$b`; cd ..; tar zcvf $$b.tar.gz $$b/COPYING $$b/INSTALL $$b/Makefile.in $$b/README $$b/NEWS $$b/configure $$b/install-sh $$b/de $$b/en $$b/test $$b/[a-z]*.*) 108 | #}}} 109 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/diction.1.in: -------------------------------------------------------------------------------- 1 | .TH DICTION 1 "@UPDATED@" "GNU" "User commands" 2 | .SH NAME \"{{{roff}}}\"{{{ 3 | diction \- print wordy and commonly misused phrases in sentences 4 | .\"}}} 5 | .SH SYNOPSIS \"{{{ 6 | .ad l 7 | .B diction 8 | .RB [ \-f 9 | .IR file 10 | .RB [ \-n | \-L 11 | .IR language ]] 12 | .RI [ file ...] 13 | .ad b 14 | .br 15 | .ad l 16 | .B diction 17 | .RB [ \-\-file 18 | .IR file 19 | .RB [ \-\-no-default-file | \-\-language 20 | .IR language ]] 21 | .RI [ file ...] 22 | .ad b 23 | .br 24 | .ad l 25 | .B diction 26 | .BR \-h | \-\-help 27 | .ad b 28 | .br 29 | .ad l 30 | .B diction \-\-version 31 | .ad b 32 | .\"}}} 33 | .SH DESCRIPTION \"{{{ 34 | \fBDiction\fP finds all sentences in a document, that contain phrases 35 | from a database of frequently misused, bad or wordy diction. It further 36 | checks for double words. If no files are given, the document is read 37 | from standard input. Each found phrase is enclosed in \fB[ ]\fP 38 | (brackets). Suggestions and advice, if any, are printed headed by a 39 | right arrow \fB->\fP. 40 | A sentence is a sequence of words, that starts with a capitalised word and 41 | ends with a full stop, double colon, question mark or exclaimation mark. 42 | A single letter followed by a dot is considered an abbreviation, so it 43 | does not terminate a sentence. Various multi-letter abbreviations are 44 | recognized, they do not terminate a sentence as well. 45 | .PP 46 | \fBDiction\fP understands \fIcpp\fP(1) \fB#line\fP lines for being able to 47 | give precise locations when printing sentences. 48 | .\"}}} 49 | .SH OPTIONS \"{{{ 50 | .IP "\fB\-f\fP \fIfile\fP, \fB\-\-file\fP \fIfile\fP" 51 | Read the user specified database from the specified \fIfile\fP in addition 52 | to the default database. 53 | .IP "\fB\-n\fP, \fB\-\-no-default-file\fP" 54 | Do not read the default database, so only the user-specified database is used. 55 | .IP "\fB\-L\fP \fIlanguage\fP, \fB\-\-language\fP \fIlanguage\fP" 56 | Set the phrase file language. 57 | .IP "\fB\-h\fP, \fB\-\-help\fP" 58 | Print a short usage message. 59 | .IP \fB\-\-version\fP 60 | Print the version. 61 | .\"}}} 62 | .SH ERRORS \"{{{ 63 | On usage errors, 1 is returned. Termination caused by lack of memory is 64 | signalled by exit code 2. 65 | .\"}}} 66 | .SH EXAMPLE \"{{{ 67 | The following example first removes all roff constructs and headers 68 | from a document and feeds the result to diction with a German database: 69 | .RS 70 | .sp 71 | deroff -s file.mm | diction -L de | fmt 72 | .RE 73 | .\"}}} 74 | .SH ENVIRONMENT \"{{{ 75 | .IP "\fBLC_MESSAGES\fP=\fBde\fP|\fBen\fP" 76 | specifies the message language and is also used as default for the 77 | phrase language. The default language is \fBen\fP. 78 | .\"}}} 79 | .SH FILES \"{{{ 80 | .nf 81 | @DATADIR@/diction/* databases for various languages 82 | .fi 83 | .\"}}} 84 | .SH AUTHOR \"{{{ 85 | This program is GNU software, copyright 1997, 1998, 1999, 2000, 2001, 86 | 2002 Michael Haardt . 87 | .PP 88 | The english phrase file contains contributions by Greg Lindahl 89 | , Wil Baden, Gary D. Kline, Kimberly Hanks and 90 | Beth Morris. 91 | .PP 92 | This program is free software; you can redistribute it and/or modify 93 | it under the terms of the GNU General Public License as published by 94 | the Free Software Foundation; either version 2 of the License, or 95 | (at your option) any later version. 96 | .PP 97 | This program is distributed in the hope that it will be useful, 98 | but WITHOUT ANY WARRANTY; without even the implied warranty of 99 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 100 | GNU General Public License for more details. 101 | .PP 102 | You should have received a copy of the GNU General Public License along 103 | with this program. If not, write to the Free Software Foundation, Inc., 104 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 105 | .\"}}} 106 | .SH HISTORY \"{{{ 107 | There has been a diction command on old UNIX systems, which is now part 108 | of the AT&T DWB package. The original version was bound to roff by 109 | enforcing a call to deroff. 110 | .\"}}} 111 | .SH "SEE ALSO" \"{{{ 112 | deroff(1), fmt(1), style(1) 113 | .PP 114 | Cherry, L.L.; Vesterman, W.: \fIWriting Tools\(emThe STYLE and DICTION 115 | programs\fP, Computer Science Technical Report 91, Bell Laboratories, 116 | Murray Hill, N.J. (1981), republished as part of the 4.4BSD User's 117 | Supplementary Documents by O'Reilly. 118 | .PP 119 | Strunk, William: \fIThe elements of style\fP, Ithaca, N.Y.: Priv. print., 1918, 120 | http://coba.shsu.edu/help/strunk/ 121 | .\"}}} 122 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ###################################################################### 2 | # This Makefile is part of a skeleton (diploma) thesis. If you have 3 | # useful additions, suggestions or questions, please feel free to issue a 4 | # PR or an issue at https://github.com/TUD-OS/latex-template 5 | ###################################################################### 6 | 7 | # main document 8 | DOC_TEX = diplom.tex 9 | # sub documents (chapters) without preamble 10 | # (because we do not need checkbiw on the preamble). 11 | DOC_TEX_ADD = $(wildcard content/*.tex) 12 | # All Tex-files sorted alphabetically and concatenated to a single string. 13 | # (make's shell utility converts newlines to spaces) 14 | # This makes the "checkbiw"-script more convenient. 15 | DOC_TEX_ALL_SORTED = $(shell echo $(DOC_TEX) $(DOC_TEX_ADD) | tr ' ' '\n' | sort) 16 | 17 | DOC_PDF = $(DOC_TEX:.tex=.pdf) 18 | 19 | LATEXMK = latexmk 20 | # Add "-shell-escape" when you use "minted" instead of "listings" for beautiful code listings 21 | LATEXMK_COMMON_FLAGS = -pdf -use-make 22 | LATEXMK_FLAGS = $(LATEXMK_COMMON_FLAGS) -pdflatex=lualatex -halt-on-error 23 | LATEXMK_WATCH_FLAGS = $(LATEXMK_COMMON_FLAGS) -pvc -quiet -f -pdflatex="lualatex -synctex=1 -interaction=nonstopmode" 24 | 25 | # Path to 'checkbiw'-script. 26 | # Do not forget to execute `git submodule update --init` first. 27 | CHECKBIW = checkbiw/src/checkbiw 28 | 29 | # The @-symbol makes the commands quite, i.e., make does not 30 | # output the commands it executes. 31 | QUIET = @ 32 | 33 | .PHONY: default pdf clean check-french-spacing checkbiw stats watch 34 | 35 | default: pdf 36 | 37 | # Builds the PDF and creates a file with the format: "yyyy-MM-dd DRAFT Diplomarbeit - Branch .pdf" 38 | # Is not dependent on anything because latexmk should figure out by itself if everything is fresh. 39 | pdf: 40 | $(LATEXMK) $(LATEXMK_FLAGS) $(DOC_TEX) 41 | cp $(DOC_PDF) "$(shell date +\"%Y-%m-%d_%H%M%S\") DRAFT Diplomarbeit - Branch $(shell git rev-parse --abbrev-ref HEAD).pdf" 42 | 43 | # Performs a watch task, i.e. automatically re-builds everything quickly on changes. 44 | # If your PDF viewer supports a reload on file changes (such as the default PDF viewer in GNOME) 45 | # you get a cool productive working environment. 46 | # 47 | # The dependency to "pdf" exists only that in case something doesn't build from the beginning 48 | # the build immediately stops. 49 | # 50 | # Also see: https://paulklemm.com/blog/2016-03-06-watch-latex-documents-using-latexmk/ 51 | watch: pdf 52 | $(LATEXMK) $(LATEXMK_WATCH_FLAGS) $(DOC_TEX) 53 | 54 | # Cleans all intermediate files except for the produced pdf files. 55 | clean: 56 | $(LATEXMK) -C 57 | $(QUIET)# latexmk does not clean up the aux-files produced by the chapters. 58 | $(QUIET)# They are stand-alone compilation units with a dedicated aux file. 59 | $(QUIET)# This comes because we include them with "\include" instead of "\input". 60 | find "./content" -type f -name "*.aux" | xargs -r rm 61 | $(QUIET)# Cleanup of "minted" package (if you use it - not included by default) 62 | $(QUIET)# find "./content" -type f -name "_minted*" | xargs -r rm -rf 63 | $(QUIET)# Produced by the 'make stats' target 64 | $(QUIET)rm -f diplom.pdf.txt 65 | 66 | # Points out abbreviations and reminds you of escaping 67 | # the space after the period 68 | check-french-spacing: $(DOC_TEX_ALL_SORTED) 69 | $(QUIET)export GREP_COLOR='1;32'; \ 70 | grep --color=auto "[A-Z]\(2,\)\." $+ || \ 71 | grep --color=auto -e 'e\.g\.' -e 'i\.e\.' -e 'd\.h\.' $+ || \ 72 | true 73 | 74 | # check for conformance with "bugs in writing", English only 75 | checkbiw: $(DOC_TEX_ALL_SORTED) 76 | $(QUIET)$(CHECKBIW) -v -c $+ 77 | 78 | 79 | CMD_COUNT_PAGES = pdfinfo $(DOC_PDF) | awk '/^Pages:/ {print $$2}' 80 | CMD_COUNT_WORDS = pdftotext $(DOC_PDF) $(DOC_PDF:.pdf=.pdf.txt) && cat $(DOC_PDF:.pdf=.pdf.txt) | grep -E '^\.+\ *$$' -v | wc -w 81 | 82 | stats: pdf 83 | $(QUIET)echo -e "\e[1mThesis Stats:\e[0m" 84 | $(QUIET)echo -e " \e[1mdetexed sources and removed empty lines:\e[0m" 85 | $(QUIET)echo " lines: $(shell detex $(DOC_TEX_ALL_SORTED) | sed '/^$$/d' | wc -l)" 86 | $(QUIET)echo " words: $(shell detex $(DOC_TEX_ALL_SORTED) | sed '/^$$/d' | wc -w)" 87 | $(QUIET)echo " characters: $(shell detex $(DOC_TEX_ALL_SORTED) | sed '/^$$/d' | wc --chars)" 88 | $(QUIET)echo 89 | $(QUIET)echo " Please note: There are possibly deviations compared to the final PDF as the compiled" 90 | $(QUIET)echo " version might contain additional words, such as 'in Figure 3.5 on the" 91 | $(QUIET)echo " next page' or the bibliography." 92 | $(QUIET)echo 93 | $(QUIET)echo -e " \e[1mCompiled PDF:\e[0m" 94 | $(QUIET)echo " pages: $(shell $(CMD_COUNT_PAGES)) (in total)" 95 | $(QUIET)echo " words: $(shell $(CMD_COUNT_WORDS)) (roughly)" 96 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/getopt.h: -------------------------------------------------------------------------------- 1 | /* Declarations for getopt. 2 | Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. 3 | 4 | NOTE: The canonical source of this file is maintained with the GNU C Library. 5 | Bugs can be reported to bug-glibc@gnu.org. 6 | 7 | This program is free software; you can redistribute it and/or modify it 8 | under the terms of the GNU General Public License as published by the 9 | Free Software Foundation; either version 2, or (at your option) any 10 | later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with this program; if not, write to the Free Software 19 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20 | USA. */ 21 | 22 | #ifndef _GETOPT_H 23 | #define _GETOPT_H 1 24 | 25 | #ifdef __cplusplus 26 | extern "C" { 27 | #endif 28 | 29 | /* For communication from `getopt' to the caller. 30 | When `getopt' finds an option that takes an argument, 31 | the argument value is returned here. 32 | Also, when `ordering' is RETURN_IN_ORDER, 33 | each non-option ARGV-element is returned here. */ 34 | 35 | extern char *optarg; 36 | 37 | /* Index in ARGV of the next element to be scanned. 38 | This is used for communication to and from the caller 39 | and for communication between successive calls to `getopt'. 40 | 41 | On entry to `getopt', zero means this is the first call; initialize. 42 | 43 | When `getopt' returns -1, this is the index of the first of the 44 | non-option elements that the caller should itself scan. 45 | 46 | Otherwise, `optind' communicates from one call to the next 47 | how much of ARGV has been scanned so far. */ 48 | 49 | extern int optind; 50 | 51 | /* Callers store zero here to inhibit the error message `getopt' prints 52 | for unrecognized options. */ 53 | 54 | extern int opterr; 55 | 56 | /* Set to an option character which was unrecognized. */ 57 | 58 | extern int optopt; 59 | 60 | /* Describe the long-named options requested by the application. 61 | The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector 62 | of `struct option' terminated by an element containing a name which is 63 | zero. 64 | 65 | The field `has_arg' is: 66 | no_argument (or 0) if the option does not take an argument, 67 | required_argument (or 1) if the option requires an argument, 68 | optional_argument (or 2) if the option takes an optional argument. 69 | 70 | If the field `flag' is not NULL, it points to a variable that is set 71 | to the value given in the field `val' when the option is found, but 72 | left unchanged if the option is not found. 73 | 74 | To have a long-named option do something other than set an `int' to 75 | a compiled-in constant, such as set a value from `optarg', set the 76 | option's `flag' field to zero and its `val' field to a nonzero 77 | value (the equivalent single-letter option character, if there is 78 | one). For long options that have a zero `flag' field, `getopt' 79 | returns the contents of the `val' field. */ 80 | 81 | struct option 82 | { 83 | #if defined (__STDC__) && __STDC__ 84 | const char *name; 85 | #else 86 | char *name; 87 | #endif 88 | /* has_arg can't be an enum because some compilers complain about 89 | type mismatches in all the code that assumes it is an int. */ 90 | int has_arg; 91 | int *flag; 92 | int val; 93 | }; 94 | 95 | /* Names for the values of the `has_arg' field of `struct option'. */ 96 | 97 | #define no_argument 0 98 | #define required_argument 1 99 | #define optional_argument 2 100 | 101 | #if defined (__STDC__) && __STDC__ 102 | #ifdef __GNU_LIBRARY__ 103 | /* Many other libraries have conflicting prototypes for getopt, with 104 | differences in the consts, in stdlib.h. To avoid compilation 105 | errors, only prototype getopt for the GNU C library. */ 106 | extern int getopt (int argc, char *const *argv, const char *shortopts); 107 | #else /* not __GNU_LIBRARY__ */ 108 | /* extern int getopt (); */ 109 | #endif /* __GNU_LIBRARY__ */ 110 | extern int getopt_long (int argc, char *const *argv, const char *shortopts, 111 | const struct option *longopts, int *longind); 112 | extern int getopt_long_only (int argc, char *const *argv, 113 | const char *shortopts, 114 | const struct option *longopts, int *longind); 115 | 116 | /* Internal only. Users should not call this directly. */ 117 | extern int _getopt_internal (int argc, char *const *argv, 118 | const char *shortopts, 119 | const struct option *longopts, int *longind, 120 | int long_only); 121 | #else /* not __STDC__ */ 122 | extern int getopt (); 123 | extern int getopt_long (); 124 | extern int getopt_long_only (); 125 | 126 | extern int _getopt_internal (); 127 | #endif /* __STDC__ */ 128 | 129 | #ifdef __cplusplus 130 | } 131 | #endif 132 | 133 | #endif /* _GETOPT_H */ 134 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/getopt1.c: -------------------------------------------------------------------------------- 1 | /* getopt_long and getopt_long_only entry points for GNU getopt. 2 | Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc. 3 | 4 | NOTE: The canonical source of this file is maintained with the GNU C Library. 5 | Bugs can be reported to bug-glibc@gnu.org. 6 | 7 | This program is free software; you can redistribute it and/or modify it 8 | under the terms of the GNU General Public License as published by the 9 | Free Software Foundation; either version 2, or (at your option) any 10 | later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with this program; if not, write to the Free Software 19 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20 | USA. */ 21 | 22 | #ifdef HAVE_CONFIG_H 23 | #include "config.h" 24 | #endif 25 | 26 | #include "getopt.h" 27 | 28 | #if !defined (__STDC__) || !__STDC__ 29 | /* This is a separate conditional since some stdc systems 30 | reject `defined (const)'. */ 31 | #ifndef const 32 | #define const 33 | #endif 34 | #endif 35 | 36 | #include 37 | 38 | /* Comment out all this code if we are using the GNU C Library, and are not 39 | actually compiling the library itself. This code is part of the GNU C 40 | Library, but also included in many other GNU distributions. Compiling 41 | and linking in this code is a waste when using the GNU C library 42 | (especially if it is a shared library). Rather than having every GNU 43 | program understand `configure --with-gnu-libc' and omit the object files, 44 | it is simpler to just do this in the source for each such file. */ 45 | 46 | #define GETOPT_INTERFACE_VERSION 2 47 | #if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 48 | #include 49 | #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION 50 | #define ELIDE_CODE 51 | #endif 52 | #endif 53 | 54 | #ifndef ELIDE_CODE 55 | 56 | 57 | /* This needs to come after some library #include 58 | to get __GNU_LIBRARY__ defined. */ 59 | #ifdef __GNU_LIBRARY__ 60 | #include 61 | #endif 62 | 63 | #ifndef NULL 64 | #define NULL 0 65 | #endif 66 | 67 | int 68 | getopt_long (argc, argv, options, long_options, opt_index) 69 | int argc; 70 | char *const *argv; 71 | const char *options; 72 | const struct option *long_options; 73 | int *opt_index; 74 | { 75 | return _getopt_internal (argc, argv, options, long_options, opt_index, 0); 76 | } 77 | 78 | /* Like getopt_long, but '-' as well as '--' can indicate a long option. 79 | If an option that starts with '-' (not '--') doesn't match a long option, 80 | but does match a short option, it is parsed as a short option 81 | instead. */ 82 | 83 | int 84 | getopt_long_only (argc, argv, options, long_options, opt_index) 85 | int argc; 86 | char *const *argv; 87 | const char *options; 88 | const struct option *long_options; 89 | int *opt_index; 90 | { 91 | return _getopt_internal (argc, argv, options, long_options, opt_index, 1); 92 | } 93 | 94 | 95 | #endif /* Not ELIDE_CODE. */ 96 | 97 | #ifdef TEST 98 | 99 | #include 100 | 101 | int 102 | main (argc, argv) 103 | int argc; 104 | char **argv; 105 | { 106 | int c; 107 | int digit_optind = 0; 108 | 109 | while (1) 110 | { 111 | int this_option_optind = optind ? optind : 1; 112 | int option_index = 0; 113 | static struct option long_options[] = 114 | { 115 | {"add", 1, 0, 0}, 116 | {"append", 0, 0, 0}, 117 | {"delete", 1, 0, 0}, 118 | {"verbose", 0, 0, 0}, 119 | {"create", 0, 0, 0}, 120 | {"file", 1, 0, 0}, 121 | {0, 0, 0, 0} 122 | }; 123 | 124 | c = getopt_long (argc, argv, "abc:d:0123456789", 125 | long_options, &option_index); 126 | if (c == -1) 127 | break; 128 | 129 | switch (c) 130 | { 131 | case 0: 132 | printf ("option %s", long_options[option_index].name); 133 | if (optarg) 134 | printf (" with arg %s", optarg); 135 | printf ("\n"); 136 | break; 137 | 138 | case '0': 139 | case '1': 140 | case '2': 141 | case '3': 142 | case '4': 143 | case '5': 144 | case '6': 145 | case '7': 146 | case '8': 147 | case '9': 148 | if (digit_optind != 0 && digit_optind != this_option_optind) 149 | printf ("digits occur in two different argv-elements.\n"); 150 | digit_optind = this_option_optind; 151 | printf ("option %c\n", c); 152 | break; 153 | 154 | case 'a': 155 | printf ("option a\n"); 156 | break; 157 | 158 | case 'b': 159 | printf ("option b\n"); 160 | break; 161 | 162 | case 'c': 163 | printf ("option c with value `%s'\n", optarg); 164 | break; 165 | 166 | case 'd': 167 | printf ("option d with value `%s'\n", optarg); 168 | break; 169 | 170 | case '?': 171 | break; 172 | 173 | default: 174 | printf ("?? getopt returned character code 0%o ??\n", c); 175 | } 176 | } 177 | 178 | if (optind < argc) 179 | { 180 | printf ("non-option ARGV-elements: "); 181 | while (optind < argc) 182 | printf ("%s ", argv[optind++]); 183 | printf ("\n"); 184 | } 185 | 186 | exit (0); 187 | } 188 | 189 | #endif /* TEST */ 190 | -------------------------------------------------------------------------------- /checkbiw/doc/manpage.txt: -------------------------------------------------------------------------------- 1 | checkbiw(1) - Checks your prose's conformance to the "BUGS in 2 | Writing" style guide 3 | 4 | Michael Hohmuth 5 | 6 | Synopsis 7 | ######## 8 | 9 | checkbiw [ -hnvc ] [ -iad _ruleset ..._ ] _files ..._ 10 | 11 | Description 12 | ########### 13 | 14 | The checkbiw tool finds and flags stylistic errors in English 15 | documents. Checkbiw comes with a number of style rule sets that were 16 | derived from Lyn Dupré's book ``BUGS in Writing---A Guide to Debugging 17 | your prose.'' 18 | 19 | To adapt checkbiw to your needs, you can remove and add standard or 20 | custom rule sets. 21 | 22 | Checkbiw outputs error information in a format typical for compilers, 23 | allowing users of editors like Emacs to easily navigate to the error 24 | location. Output is written to stdout. 25 | 26 | Checkbiw reads input from the files supplied on the command line. A 27 | file name of '-' denotes stdin. 28 | 29 | Options 30 | ======= 31 | 32 | Checkbiw reads options from $HOME/.checkbiwrc, from ./.checkbiwrc, and 33 | from the command line, in that order. It processes options from left 34 | to right; later options can undo the effect of earlier ones. 35 | 36 | :-n: Clear current list of rule sets. Also removes all standard rule 37 | sets 38 | 39 | :-v: Print the list of enabled rule sets after all option processing. 40 | 41 | :-h: Prints a short help texts and exits. 42 | 43 | :-c: Use colors for highlighting the output. 44 | 45 | :-a _ruleset_: Add rule set at the end of the set list. Before adding 46 | the set, removes set of same type from the list (see next paragraph) 47 | 48 | :-i _ruleset_: Inserts rule set at the beginning of the list. Before adding 49 | the set, removes set of same type from the list (see next 50 | paragraph) 51 | 52 | :-d _rulesettype_: Deletes rule set of given type from the rule-set 53 | list (see next paragraph) 54 | 55 | The -a, -i, and -d options remove rule sets according to their 56 | ``type,'' which is equivalent to the name of the rule set up to the 57 | first '-' character. For example: 58 | 59 | * Option "-d lang" removes any of the rule sets "lang", "lang-american", 60 | "lang-whatever" 61 | * Option "-a emdash-space" first removes "emdash-nospace" 62 | 63 | Standard rule sets 64 | ================== 65 | 66 | Checkbiw comes with the following standard rule sets. Rule sets 67 | enabled by default are shown with an asterisk (*). 68 | 69 | :* biw: The BUGS in Writing rule set; contains common style errors. 70 | 71 | :* lang-american: The American-English rule set; contains British 72 | English misspellings 73 | 74 | :* cite-space: Checks for space characters before citations indicated 75 | using 'cite' or square brackets [] 76 | 77 | :* emdash-nospace: Enforces that no space characters are set before or 78 | after an em-dash '---' 79 | 80 | :emdash-space: Enforces that space characters _are set_ before or 81 | after an em-dash '---'. 82 | 83 | :passive: Checks for passive-voice construction. This rule set is 84 | disabled by default because it produces a significant number of 85 | false positives, but it can be extremely useful. 86 | 87 | Writing custom rule sets 88 | ======================== 89 | 90 | You can write your own rule-set files and add them using the '-i' and 91 | '-a' options. Custom rule sets are especially useful for removing 92 | false positives from checkbiw's output; I give an example for this use 93 | at the end of this section. 94 | 95 | Rule sets are defined in an extended diction(1) format. Rule-set 96 | files contain one rule per line. Each line has two parts separated by 97 | a tabulator character: The first part is the ``bad phrase,'' the 98 | second is the advice. 99 | 100 | If the bad phrase starts with a space character, the rest of the 101 | phrase matches only after nonalphabetic characters (i.e., after 102 | whitespace and punctuation). If the bad phrase _does not_ end with a 103 | tilde character '~', the phrase matches only before nonalphabetic 104 | characters. Otherwise, the phrase match does not depend on 105 | neighboring characters. 106 | 107 | An empty advice or an advice starting with "!" marks a phrase 108 | checkbiw should ignore; this feature is useful for avoiding false 109 | positives. 110 | 111 | For example: 112 | 113 | ! as though......! 114 | ! even though....! 115 | ! though.........although, even though 116 | 117 | (In this example, I used dots to denote one tab character.) 118 | 119 | Environment 120 | ########### 121 | 122 | :$CHECKBIWPATH: 123 | Colon-separated list of directories in which checkbiw searches for 124 | rule-set files. Before searching these directories, checkbiw always 125 | checks the current directory; after checking $CHECKBIWPATH, checkbiw 126 | looks into the system directory {instprefix}/share/checkbiw/. 127 | 128 | :$DICTIONPATH: 129 | Colon-separated list of directories in which checkbiw searches for 130 | the GNU diction binary. Defaults to {instprefix}/bin. If checkbiw 131 | cannot find in one of these directories, it additionally 132 | searches the ones in $PATH. 133 | 134 | :$HOME: 135 | User's home directory, used to find user-configuration file 136 | 137 | Files 138 | ##### 139 | 140 | :$HOME/.checkbiwrc: 141 | User configuration. Checkbiw reads options from this file first. 142 | 143 | :./.checkbiwrc: 144 | Directory configuration. Checkbiw processes options from this file 145 | after reading $HOME/.checkbiwrc, but before it proceeds to the 146 | command line. 147 | 148 | :{instprefix}/share/checkbiw/*: 149 | Standard rule-set files 150 | 151 | See also 152 | ######## 153 | 154 | diction(1), bugsinwriting(7) 155 | 156 | Michael Hohmuth: "The tech-paper writer's ultimate BUGS in Writing 157 | must-read list". File doc/mustread.pdf; hardcopy version of 158 | bugsinwriting(7). 159 | 160 | Lyn Dupré: "BUGS in Writing---A Guide to Debugging Your Prose". 161 | Addison--Wesley 1998 162 | 163 | ;Local Variables: 164 | ;mode:flyspell 165 | ;ispell-local-dictionary: "american" 166 | ;comment-start: ";" 167 | ;comment-start-skip: "; *" 168 | ;End: 169 | 170 | ; LocalWords: Hohmuth checkbiw 171 | -------------------------------------------------------------------------------- /checkbiw/src/lang-american: -------------------------------------------------------------------------------- 1 | '', ,'' (except for verbatim strings) {warning} §35 2 | ''. .'' (except for verbatim strings) {warning} §35 3 | acknowledgement acknowledgment §250 4 | afterwards afterward §250 5 | backwards backward §250 6 | cancelling canceling §250 7 | catalogue catalog §250 8 | centre center §250 9 | cheque check §250 10 | colour color §250 11 | dialogue dialog §250 12 | favour favor §250 13 | flavour flavor §250 14 | # forwards forward §250 15 | forwards-~ forward- §250 16 | grey gray §250 17 | judgement judgment §250 18 | labour labor §250 19 | modelling modeling §250 20 | modelled modeled §250 21 | theatre theater §250 22 | towards toward §250 23 | travelling traveling §250 24 | disc disk 25 | discs disks 26 | analyse analyze 27 | analyses analyzes (except as plural of analysis) {warning} 28 | analysing analyzing 29 | analysed analyzed 30 | optimise optimize 31 | optimises optimizes 32 | optimising optimizing 33 | optimisation optimization 34 | optimised optimized 35 | penalise penalize 36 | penalises penalizes 37 | penalising penalizing 38 | penalisation penalization 39 | penalised penalized 40 | itemise itemize 41 | itemises itemizes 42 | itemising itemizing 43 | itemisation itemization 44 | itemised itemized 45 | minimise minimize 46 | minimises minimizes 47 | minimising minimizing 48 | minimisation minimization 49 | minimised minimized 50 | maximise maximize 51 | maximises maximizes 52 | maximising maximizing 53 | maximisation maximization 54 | maximised maximized 55 | localise localize 56 | localises localizes 57 | localising localizing 58 | localisation localization 59 | localised localized 60 | stabilise stabilize 61 | stabilises stabilizes 62 | stabilising stabilizing 63 | stabilisation stabilization 64 | stabilised stabilized 65 | normalise normalize 66 | normalises normalizes 67 | normalising normalizing 68 | normalisation normalization 69 | normalised normalized 70 | generalise generalize 71 | generalises generalizes 72 | generalising generalizing 73 | generalisation generalization 74 | generalised generalized 75 | specialise specialize 76 | specialises specializes 77 | specialising specializing 78 | specialisation specialization 79 | specialised specialized 80 | customise customize 81 | customises customizes 82 | customising customizing 83 | customisation customization 84 | customised customized 85 | organise organize 86 | organises organizes 87 | organising organizing 88 | organisation organization 89 | organised organized 90 | organiser organizer 91 | externalise externalize 92 | externalises externalizes 93 | externalising externalizing 94 | externalisation externalization 95 | externalised externalized 96 | synchronise synchronize 97 | synchronises synchronizes 98 | synchronising synchronizing 99 | synchronisation synchronization 100 | synchronised synchronized 101 | characterise characterize 102 | characterises characterizes 103 | characterising characterizing 104 | characterisation characterization 105 | characterised characterized 106 | serialise serialize 107 | serialises serializes 108 | serialising serializing 109 | serialisation serialization 110 | serialised serialized 111 | serialiser serializer 112 | prioritise prioritize 113 | prioritises prioritizes 114 | prioritising prioritizing 115 | prioritisation prioritization 116 | prioritised prioritized 117 | criticise criticize 118 | criticises criticizes 119 | criticising criticizing 120 | criticised criticized 121 | initialise initialize 122 | initialises initializes 123 | initialising initializing 124 | initialisation initialization 125 | initialised initialized 126 | initialiser initializer 127 | realise realize 128 | realises realizes 129 | realising realizing 130 | realisation realization 131 | realised realized 132 | formalise formalize 133 | formalises formalizes 134 | formalising formalizing 135 | formalisation formalization 136 | formalised formalized 137 | idealise idealize 138 | idealises idealizes 139 | idealising idealizing 140 | idealisation idealization 141 | idealised idealized 142 | authorise authorize 143 | authorises authorizes 144 | authorising authorizing 145 | authorisation authorization 146 | authorised authorized 147 | unauthorise unauthorize 148 | unauthorises unauthorizes 149 | unauthorising unauthorizing 150 | unauthorised unauthorized 151 | quantise quantize 152 | quantises quantizes 153 | quantising quantizing 154 | quantisation quantization 155 | quantised quantized 156 | capitalise capitalize 157 | capitalises capitalizes 158 | capitalising capitalizing 159 | capitalisation capitalization 160 | capitalised capitalized 161 | summarise summarize 162 | summarises summarizes 163 | summarising summarizing 164 | summarisation summarization 165 | summarised summarized 166 | monopolise monopolize 167 | monopolises monopolizes 168 | monopolising monopolizing 169 | monopolisation monopolization 170 | monopolised monopolized 171 | virtualise virtualize 172 | virtualises virtualizes 173 | virtualising virtualizing 174 | virtualisation virtualization 175 | virtualised virtualized 176 | categorise categorize 177 | categorises categorizes 178 | categorising categorizing 179 | categorisation categorization 180 | categorised categorized 181 | centralise centralize 182 | centralises centralizes 183 | centralising centralizing 184 | centralisation centralization 185 | centralised centralized 186 | utilise utilize 187 | utilises utilizes 188 | utilising utilizing 189 | utilisation utilization 190 | utilised utilized 191 | kernelise kernelize 192 | kernelises kernelizes 193 | kernelising kernelizing 194 | kernelisation kernelization 195 | kernelised kernelized 196 | recognise recognize 197 | recognises recognizes 198 | recognising recognizing 199 | recognised recognized 200 | emphasise emphasize 201 | emphasises emphasizes 202 | emphasising emphasizing 203 | emphasised emphasized 204 | #Local Variables: 205 | #mode:fundamental 206 | #mode:flyspell 207 | #tab-width:20 208 | #ispell-local-dictionary: "american" 209 | #comment-start: ";" 210 | #comment-start-skip: "; *" 211 | #End: 212 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build](https://github.com/TUD-OS/latex-template/actions/workflows/build.yml/badge.svg)](https://github.com/TUD-OS/latex-template/actions/workflows/build.yml) 2 | 3 | ## Was ist das? 4 | 5 | Dieses Diplomarbeits-Latex-Template stellt ein Skelett für eine 6 | Diplomarbeit mit zugehöriger Make-Datei zur Verfügung. 7 | 8 | ## Checkout Submodules First 9 | 10 | Um das `$ make checkbiw` ausführen zu können, musst du zuerst die 11 | Submodule auschecken: `git submodule update --init --recursive` 12 | 13 | ## So geht's los 14 | 15 | Als erstes solltest du in diplom.tex alle Vorkommen von Otto 16 | Mustermann, "Dein Titel" und "Dein Betreuer" ersetzen. 17 | 18 | `diplom.tex` will deine Aufgabe als PDF einbinden. Es sucht 19 | `images/diplom-aufgabe.pdf`, was eine A4 Seite sein muss. Mit 20 | 21 | convert diplom-aufgabe.pdf 22 | 23 | solltest du eine beliebige Bilddatei in ein PDF umwandeln können, wenn 24 | ImageMagick auf deinem System installiert ist. 25 | 26 | An diesen Punkt sollte `make` ein `diplom.pdf` produzieren. 27 | 28 | Das Template unterstützt sowohl englischen und deutschen Text. Englisch ist 29 | standardmäßig eingestellt. Für deutschen Text kann der letzte `\selectlanguage` 30 | Aufruf in `diplom.tex` einfach weggelassen werden. 31 | 32 | ## How To Build 33 | 34 | - `$ make`: regular build that produces `diplom.pdf` and `yyyy-mm-dd_hhmmss DRAFT Diplomarbeit - Branch .pdf`. 35 | - `$ make watch`: Performs a watch task, i.e. automatically re-builds everything quickly on changes. 36 | If your PDF viewer supports automatic reload on file changes (such as the default PDF viewer in GNOME) 37 | you get a cool productive working environment. 38 | - `$ make clean`: Clean all build artifacts (use in case you see unexpected errors) 39 | 40 | ### Build Prerequisites (Regular Build) 41 | 42 | In case you don't want to install `texlive-full` to save disk space, the following packages are 43 | actually required: \ 44 | 45 | ```shell 46 | $ sudo apt install texlive-base \ 47 | texlive-lang-german \ 48 | texlive-lang-english \ 49 | `# for siunits` \ 50 | texlive-science \ 51 | texlive-luatex \ 52 | `# biber gets invoked by the utilities provided by bibtex-extra` \ 53 | biber \ 54 | texlive-bibtex-extra \ 55 | `# for csquotes` \ 56 | texlive-latex-extra 57 | ``` 58 | 59 | Additionally, please install also: 60 | 61 | ```shell 62 | $ sudo apt install \ 63 | `# for the `make checkbiw` script` 64 | diction \ 65 | `# build system to build the latex project` 66 | latexmk 67 | ``` 68 | 69 | ### Build Prerequisites (Nix Build) 70 | 71 | This template can also be built using [Nix](https://nixos.org/download.html). 72 | You have the following two options: 73 | - Build the full project in Nix: `$ nix build .` 74 | - Use the classic build flow with a toolchain obtained from Nix: `$ nix develop .` 75 | 76 | _Please ensure to have ``experimental-features = flakes nix-command` in your Nix config._ 77 | 78 | ## Grafiken einbinden 79 | 80 | Grafiken sollten im `images/` Verzeichnis abgelegt werden und im 81 | Makefile in die entsprechende `DOC_IMG_*` Variable eingetragen 82 | werden. Momentan werden Grafiken in den Formaten PDF, PNG und JPEG 83 | unterstützt. PDF eignet sich für Vektorgrafiken und kann von den 84 | meisten Vektorgrafikprogrammen erzeugt werden (Inkscape, OpenOffice 85 | Draw, ...). 86 | 87 | ## Tipps 88 | 89 | Diese Datei enthält im Moment ein Sammlung von Tipps und Tricks, sowie 90 | einige Hintergrundinformationen. 91 | 92 | - passive voice: **do not use it** 93 | - There is a Makefile template checking for 'Bugs in Writing' according 94 | to the book of the same name (`make checkbiw`). Diction must be installed 95 | somewhere in the path (check out the directory 96 | `checkbiw/diction` for details). 97 | - Vim users can add detection for passive voice and *weasel words* via 98 | Björn's [`vim-weasel` package](https://github.com/bjoernd/vim-weasel) 99 | - font sizes in images: adapt to other text size 100 | (ideally, use PGF/TikZ and PGFPlots) 101 | - avoid missing meta data in PDF files (title, keywords, author) 102 | - "good" title page 103 | - use biblatex for references, it pays off fast 104 | - convert images to correct include types (vector formats, e.g. PDF) 105 | - protected spaces between, e.g., `Figure~1`, `~\cite{xyz}` 106 | - units: use the `siunitx` package to typeset units 107 | - French spacing: tell latex what is an end of sentence with `\@.` 108 | where it cannot know it (e.g., `This is a sentence ending on an 109 | abbreviation BASIC\@. Next sentence.`) 110 | - Again, you can try to detect a good portion of French spacing 111 | using an automatic algorithm (`make check-french-spacing`). 112 | Improvements are welcome. 113 | - listings with at least three elements have a 114 | comma before the last and/or (*serial* or *Oxford comma*): 115 | *"Set A contains elements a, b, and c."* 116 | - more stylistic information can be found in *Bugs in writing* (BIW) 117 | by Lyn Dupré 118 | - add chapters without a chapter number (e.g. appendix) with `\addchap{Chapter without Number}` 119 | instead of `\chapter*{Chapter without Number}`. Otherwise, `\chaptername` and similar macros 120 | inherit the name of the last chapter with a number in several cases. 121 | `\addchap` is a macro provided by KOMA 122 | - this project uses a `.editorconfig` which makes sure you have the same basic formatting 123 | settings across IDEs **as you type**. Support exists in Clion, VS Code, IntelliJ, 124 | vim, ... make sure to activate the setting or add the plugin for that into your IDE/editor 125 | 126 | 127 | ## spezielle Tipps von Frank 128 | 129 | - Ich verwende in der Vorlage KOMA-Script (`scrbook`), welches vor allem 130 | für den deutschsprachigen Raum gedacht ist. KOMA-Script kann auch 131 | international verwendet werden, das Format ist aber für 132 | Englischsprachige Arbeiten etwas unüblich. 133 | 134 | - Ein Hinweis zum Erstellen der Grafiken: Viele verwenden xfig, ich 135 | habe meine Grafiken mit OpenOffice Draw erzeugt. Dort hat man mehr 136 | Möglichkeiten. Einfach als PDF exportieren. Damit alle Grafiken 137 | eine gleichmäßige Größe besitzen, habe ich einfach immer die 138 | Seitengröße so gesetzt, dass die Zeichnung voll erfasst wird. Dann 139 | habe ich immer die gleiche Schriftgröße gesetzt. Beim Einbinden der 140 | Grafiken ins LaTeX-File habe ich einen Faktor, z.B. 141 | 142 | \includegraphics[width=190\figurewidth]{architecture} 143 | 144 | mit eingebaut. Den Faktor setze ich dann einfach am Anfang mit 145 | 146 | \setlength{\figurewidth}{.070cm} 147 | 148 | und bin damit in der Lage, alle Grafiken zugleich in der Größe zu verändern. 149 | Die Zahl 190 aus dem includegraphics-Statement kommt von der gewählten 150 | Seitengröße in OpenOffice Draw (190mm). 151 | 152 | - Wenn man viele Grafiken hat, die man genau ausrichten will, ist ein 153 | 154 | \usepackage{placeins} 155 | 156 | sinnvoll. Dann kann man am Ende einer Seite 157 | 158 | \FloatBarrier 159 | 160 | schreiben und erzwingt die Ausgabe aller noch offenen Grafiken an 161 | diesem Punkt. Mir ist bewusst, dass das etwas unschön ist, aber 162 | manchmal braucht man das wirklich, z.B. wenn man alle Messwerte auf 163 | einer Seite unterbringen will. 164 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/install-sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # install - install a program, script, or datafile 4 | # This comes from X11R5 (mit/util/scripts/install.sh). 5 | # 6 | # Copyright 1991 by the Massachusetts Institute of Technology 7 | # 8 | # Permission to use, copy, modify, distribute, and sell this software and its 9 | # documentation for any purpose is hereby granted without fee, provided that 10 | # the above copyright notice appear in all copies and that both that 11 | # copyright notice and this permission notice appear in supporting 12 | # documentation, and that the name of M.I.T. not be used in advertising or 13 | # publicity pertaining to distribution of the software without specific, 14 | # written prior permission. M.I.T. makes no representations about the 15 | # suitability of this software for any purpose. It is provided "as is" 16 | # without express or implied warranty. 17 | # 18 | # Calling this script install-sh is preferred over install.sh, to prevent 19 | # `make' implicit rules from creating a file called install from it 20 | # when there is no Makefile. 21 | # 22 | # This script is compatible with the BSD install script, but was written 23 | # from scratch. It can only install one file at a time, a restriction 24 | # shared with many OS's install programs. 25 | 26 | 27 | # set DOITPROG to echo to test this script 28 | 29 | # Don't use :- since 4.3BSD and earlier shells don't like it. 30 | doit="${DOITPROG-}" 31 | 32 | 33 | # put in absolute paths if you don't have them in your path; or use env. vars. 34 | 35 | mvprog="${MVPROG-mv}" 36 | cpprog="${CPPROG-cp}" 37 | chmodprog="${CHMODPROG-chmod}" 38 | chownprog="${CHOWNPROG-chown}" 39 | chgrpprog="${CHGRPPROG-chgrp}" 40 | stripprog="${STRIPPROG-strip}" 41 | rmprog="${RMPROG-rm}" 42 | mkdirprog="${MKDIRPROG-mkdir}" 43 | 44 | transformbasename="" 45 | transform_arg="" 46 | instcmd="$mvprog" 47 | chmodcmd="$chmodprog 0755" 48 | chowncmd="" 49 | chgrpcmd="" 50 | stripcmd="" 51 | rmcmd="$rmprog -f" 52 | mvcmd="$mvprog" 53 | src="" 54 | dst="" 55 | dir_arg="" 56 | 57 | while [ x"$1" != x ]; do 58 | case $1 in 59 | -c) instcmd=$cpprog 60 | shift 61 | continue;; 62 | 63 | -d) dir_arg=true 64 | shift 65 | continue;; 66 | 67 | -m) chmodcmd="$chmodprog $2" 68 | shift 69 | shift 70 | continue;; 71 | 72 | -o) chowncmd="$chownprog $2" 73 | shift 74 | shift 75 | continue;; 76 | 77 | -g) chgrpcmd="$chgrpprog $2" 78 | shift 79 | shift 80 | continue;; 81 | 82 | -s) stripcmd=$stripprog 83 | shift 84 | continue;; 85 | 86 | -t=*) transformarg=`echo $1 | sed 's/-t=//'` 87 | shift 88 | continue;; 89 | 90 | -b=*) transformbasename=`echo $1 | sed 's/-b=//'` 91 | shift 92 | continue;; 93 | 94 | *) if [ x"$src" = x ] 95 | then 96 | src=$1 97 | else 98 | # this colon is to work around a 386BSD /bin/sh bug 99 | : 100 | dst=$1 101 | fi 102 | shift 103 | continue;; 104 | esac 105 | done 106 | 107 | if [ x"$src" = x ] 108 | then 109 | echo "$0: no input file specified" >&2 110 | exit 1 111 | else 112 | : 113 | fi 114 | 115 | if [ x"$dir_arg" != x ]; then 116 | dst=$src 117 | src="" 118 | 119 | if [ -d "$dst" ]; then 120 | instcmd=: 121 | chmodcmd="" 122 | else 123 | instcmd=$mkdirprog 124 | fi 125 | else 126 | 127 | # Waiting for this to be detected by the "$instcmd $src $dsttmp" command 128 | # might cause directories to be created, which would be especially bad 129 | # if $src (and thus $dsttmp) contains '*'. 130 | 131 | if [ -f "$src" ] || [ -d "$src" ] 132 | then 133 | : 134 | else 135 | echo "$0: $src does not exist" >&2 136 | exit 1 137 | fi 138 | 139 | if [ x"$dst" = x ] 140 | then 141 | echo "$0: no destination specified" >&2 142 | exit 1 143 | else 144 | : 145 | fi 146 | 147 | # If destination is a directory, append the input filename; if your system 148 | # does not like double slashes in filenames, you may need to add some logic 149 | 150 | if [ -d "$dst" ] 151 | then 152 | dst=$dst/`basename "$src"` 153 | else 154 | : 155 | fi 156 | fi 157 | 158 | ## this sed command emulates the dirname command 159 | dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` 160 | 161 | # Make sure that the destination directory exists. 162 | # this part is taken from Noah Friedman's mkinstalldirs script 163 | 164 | # Skip lots of stat calls in the usual case. 165 | if [ ! -d "$dstdir" ]; then 166 | defaultIFS=' 167 | ' 168 | IFS="${IFS-$defaultIFS}" 169 | 170 | oIFS=$IFS 171 | # Some sh's can't handle IFS=/ for some reason. 172 | IFS='%' 173 | set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` 174 | IFS=$oIFS 175 | 176 | pathcomp='' 177 | 178 | while [ $# -ne 0 ] ; do 179 | pathcomp=$pathcomp$1 180 | shift 181 | 182 | if [ ! -d "$pathcomp" ] ; 183 | then 184 | $mkdirprog "$pathcomp" 185 | else 186 | : 187 | fi 188 | 189 | pathcomp=$pathcomp/ 190 | done 191 | fi 192 | 193 | if [ x"$dir_arg" != x ] 194 | then 195 | $doit $instcmd "$dst" && 196 | 197 | if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && 198 | if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && 199 | if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && 200 | if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi 201 | else 202 | 203 | # If we're going to rename the final executable, determine the name now. 204 | 205 | if [ x"$transformarg" = x ] 206 | then 207 | dstfile=`basename "$dst"` 208 | else 209 | dstfile=`basename "$dst" $transformbasename | 210 | sed $transformarg`$transformbasename 211 | fi 212 | 213 | # don't allow the sed command to completely eliminate the filename 214 | 215 | if [ x"$dstfile" = x ] 216 | then 217 | dstfile=`basename "$dst"` 218 | else 219 | : 220 | fi 221 | 222 | # Make a couple of temp file names in the proper directory. 223 | 224 | dsttmp=$dstdir/#inst.$$# 225 | rmtmp=$dstdir/#rm.$$# 226 | 227 | # Trap to clean up temp files at exit. 228 | 229 | trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 230 | trap '(exit $?); exit' 1 2 13 15 231 | 232 | # Move or copy the file name to the temp name 233 | 234 | $doit $instcmd "$src" "$dsttmp" && 235 | 236 | # and set any options; do chmod last to preserve setuid bits 237 | 238 | # If any of these fail, we abort the whole thing. If we want to 239 | # ignore errors from any of these, just make sure not to ignore 240 | # errors from the above "$doit $instcmd $src $dsttmp" command. 241 | 242 | if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && 243 | if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && 244 | if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && 245 | if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && 246 | 247 | # Now remove or move aside any old file at destination location. We try this 248 | # two ways since rm can't unlink itself on some systems and the destination 249 | # file might be busy for other reasons. In this case, the final cleanup 250 | # might fail but the new file should still install successfully. 251 | 252 | { 253 | if [ -f "$dstdir/$dstfile" ] 254 | then 255 | $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || 256 | $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || 257 | { 258 | echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 259 | (exit 1); exit 260 | } 261 | else 262 | : 263 | fi 264 | } && 265 | 266 | # Now rename the file to the real destination. 267 | 268 | $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" 269 | 270 | fi && 271 | 272 | # The final little trick to "correctly" pass the exit status to the exit trap. 273 | 274 | { 275 | (exit 0); exit 276 | } 277 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/sentence.c: -------------------------------------------------------------------------------- 1 | /* Notes */ /*{{{C}}}*//*{{{*/ 2 | /* 3 | 4 | This program is GNU software, copyright 1997, 1998, 1999, 2000, 2001 5 | Michael Haardt . 6 | 7 | This program is free software; you can redistribute it and/or modify it 8 | under the terms of the GNU General Public License as published by the 9 | Free Software Foundation; either version 2 of the License, or (at your 10 | option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, but 13 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 | for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program. If not, write to the Free Software Foundation, Inc., 19 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 | 21 | */ 22 | /*}}}*/ 23 | /* #includes */ /*{{{*/ 24 | #undef _POSIX_SOURCE 25 | #define _POSIX_SOURCE 1 26 | #undef _POSIX_C_SOURCE 27 | #define _POSIX_C_SOURCE 2 28 | 29 | #include "config.h" 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #ifdef HAVE_GETTEXT 38 | #include 39 | #define _(String) gettext(String) 40 | #else 41 | #define _(String) String 42 | #endif 43 | #include 44 | #include 45 | #include 46 | #include 47 | 48 | #include "misc.h" 49 | #include "sentence.h" 50 | /*}}}*/ 51 | 52 | static const char *abbreviations_de[]= /*{{{*/ 53 | { 54 | "Dr", 55 | "bzw", 56 | "etc", 57 | "sog", 58 | "usw", 59 | (const char*)0 60 | }; 61 | /*}}}*/ 62 | static const char *abbreviations_en[]= /*{{{*/ 63 | { 64 | "ch", 65 | "Ch", 66 | "ckts", 67 | "dB", 68 | "Dept", 69 | "dept", 70 | "Depts", 71 | "depts", 72 | "Dr", 73 | "Drs", 74 | "Eq", 75 | "eq", 76 | "etc", 77 | "et al", 78 | "Fig", 79 | "fig", 80 | "Figs", 81 | "figs", 82 | "ft", 83 | "0 in", 84 | "1 in", 85 | "2 in", 86 | "3 in", 87 | "4 in", 88 | "5 in", 89 | "6 in", 90 | "7 in", 91 | "8 in", 92 | "9 in", 93 | "Inc", 94 | "Jr", 95 | "jr", 96 | "mi", 97 | "Mr", 98 | "Mrs", 99 | "Ms", 100 | "No", 101 | "no", 102 | "Nos", 103 | "nos", 104 | "Ph", 105 | "Ref", 106 | "ref", 107 | "Refs", 108 | "refs", 109 | "St", 110 | "vs", 111 | "yr", 112 | (const char*)0 113 | }; 114 | /*}}}*/ 115 | static const char *abbreviations_none[]= /*{{{*/ 116 | { 117 | (const char*)0 118 | }; 119 | /*}}}*/ 120 | static const char **abbreviations; 121 | 122 | static int endingInAbbrev(const char *s, size_t length, const char *lang) /*{{{*/ 123 | { 124 | const char **abbrev=abbreviations; 125 | size_t aLength; 126 | 127 | if (!isalpha(s[length-1])) return 0; 128 | if (endingInPossesiveS(s,length)) return 0; 129 | while (*abbrev!=(const char*)0) 130 | { 131 | if ((aLength=strlen(*abbrev))=3 && strncmp(s+length-2,"\'s",2)==0); 150 | } 151 | /*}}}*/ 152 | void sentence(const char *cmd, FILE *in, const char *file, void (*process)(const char *, size_t, const char *, int), const char *lang) /*{{{*/ 153 | { 154 | /* variables */ /*{{{*/ 155 | int voc,oc,c; 156 | char *sent=malloc(128); 157 | size_t length=0,capacity=128; 158 | int inWhiteSpace=0; 159 | int inParagraph=0; 160 | int ellipsis=0; 161 | int line=1,beginLine=1; 162 | int err; 163 | regex_t hashLine; 164 | char filebuf[_POSIX_PATH_MAX+1]; 165 | /*}}}*/ 166 | 167 | if (strncmp(lang,"en",2)==0) abbreviations=abbreviations_en; 168 | else if (strncmp(lang,"C",1)==0) abbreviations=abbreviations_en; 169 | else if (strncmp(lang,"de",2)==0) abbreviations=abbreviations_de; 170 | else abbreviations=abbreviations_none; 171 | /* compile #line number "file" regular expression */ /*{{{*/ 172 | if ((err=regcomp(&hashLine,"^[ \t]*line[ \t]*\\([0-9][0-9]*\\)[ \t]*\"\\([^\"]*\\)\"",0))) 173 | { 174 | char buf[256]; 175 | size_t len=regerror(err,&hashLine,buf,sizeof(buf)-1); 176 | buf[len]='\0'; 177 | fprintf(stderr,_("%s: internal error, compiling a regular expression failed (%s).\n"),cmd,buf); 178 | exit(2); 179 | } 180 | /*}}}*/ 181 | voc='\n'; 182 | c=getc(in); 183 | while ((oc=c)!=EOF) 184 | { 185 | c=getc(in); 186 | if (oc=='\n') ++line; 187 | if (voc=='\n' && oc=='#') /* process cpp style #line, continue */ /*{{{*/ 188 | { 189 | char buf[_POSIX_PATH_MAX+20]; 190 | regmatch_t found[3]; 191 | 192 | buf[0]=c; buf[1]='\0'; 193 | (void)fgets(buf+1,sizeof(buf)-1,in); 194 | if (regexec(&hashLine,buf,3,found,0)==0) /* #line */ /*{{{*/ 195 | { 196 | size_t len; 197 | 198 | line=strtol(buf+found[1].rm_so,(char**)0,10)-1; 199 | len=found[2].rm_eo-found[2].rm_so; 200 | if (len>_POSIX_PATH_MAX) len=_POSIX_PATH_MAX; 201 | strncpy(filebuf,buf+found[2].rm_so,len); 202 | filebuf[len]='\0'; 203 | file=filebuf; 204 | } 205 | /*}}}*/ 206 | c='\n'; 207 | continue; 208 | } 209 | /*}}}*/ 210 | if (length) 211 | { 212 | if (length>=(capacity-1) && (sent=realloc(sent,capacity*=2))==(char*)0) 213 | { 214 | fprintf(stderr,_("%s: increasing sentence buffer failed: %s\n"),cmd,strerror(errno)); 215 | exit(2); 216 | } 217 | if (isspace(oc)) 218 | { 219 | if (!inWhiteSpace) 220 | { 221 | sent[length++]=' '; 222 | inWhiteSpace=1; 223 | } 224 | } 225 | else 226 | { 227 | sent[length++]=oc; 228 | if 229 | ( 230 | (length==3 && strncmp(sent+length-3,"...",3)==0 && (c==EOF || isspace(c))) 231 | || (length>=4 && strncmp(sent+length-4," ...",4)==0 && (c==EOF || isspace(c))) 232 | ) 233 | { 234 | /* omission ellipsis */ 235 | inWhiteSpace=0; 236 | } 237 | else if (length>=4 && !isspace(sent[length-4]) && strncmp(sent+length-3,"...",3)==0 && (c==EOF || isspace(c))) 238 | { 239 | /* beginning ellipsis */ 240 | char foo; 241 | 242 | foo=sent[length-4]; 243 | sent[length-4]='\0'; 244 | process(sent,length-4,file,beginLine); 245 | sent[length-4]=foo; 246 | memmove(sent,sent-4,4); 247 | length=4; 248 | inParagraph=0; 249 | inWhiteSpace=0; 250 | beginLine=line; 251 | } 252 | else if (length>=4 && strncmp(sent+length-4,"...",3)==0 && (c==EOF || isspace(c))) 253 | { 254 | /* ending ellipsis */ 255 | if (inWhiteSpace) --length; 256 | sent[length]='\0'; 257 | process(sent,length,file,beginLine); 258 | length=0; 259 | } 260 | else if ((oc=='.' || oc==':' || oc=='!' || oc=='?') && (c==EOF || isspace(c)) && (oc!='.' || !endingInAbbrev(sent,length,lang))) 261 | { 262 | /* end of sentence */ 263 | if (inWhiteSpace) --length; 264 | sent[length]='\0'; 265 | process(sent,length,file,beginLine); 266 | length=0; 267 | } 268 | else 269 | { 270 | /* just a regular character */ 271 | inWhiteSpace=0; 272 | } 273 | } 274 | } 275 | else if (isupper(oc)) 276 | { 277 | inParagraph=0; 278 | sent[length++]=oc; 279 | inWhiteSpace=0; 280 | beginLine=line; 281 | } 282 | else if (!inParagraph && oc=='\n' && c==oc) 283 | { 284 | process("",0,file,line); 285 | inParagraph=1; 286 | } 287 | voc=oc; 288 | } 289 | if (!inParagraph) process("",0,file,line); 290 | regfree(&hashLine); 291 | } 292 | /*}}}*/ 293 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/INSTALL: -------------------------------------------------------------------------------- 1 | Basic Installation 2 | ================== 3 | 4 | These are generic installation instructions. 5 | 6 | The `configure' shell script attempts to guess correct values for 7 | various system-dependent variables used during compilation. It uses 8 | those values to create a `Makefile' in each directory of the package. 9 | It may also create one or more `.h' files containing system-dependent 10 | definitions. Finally, it creates a shell script `config.status' that 11 | you can run in the future to recreate the current configuration, a file 12 | `config.cache' that saves the results of its tests to speed up 13 | reconfiguring, and a file `config.log' containing compiler output 14 | (useful mainly for debugging `configure'). 15 | 16 | If you need to do unusual things to compile the package, please try 17 | to figure out how `configure' could check whether to do them, and mail 18 | diffs or instructions to the address given in the `README' so they can 19 | be considered for the next release. If at some point `config.cache' 20 | contains results you don't want to keep, you may remove or edit it. 21 | 22 | The file `configure.in' is used to create `configure' by a program 23 | called `autoconf'. You only need `configure.in' if you want to change 24 | it or regenerate `configure' using a newer version of `autoconf'. 25 | 26 | The simplest way to compile this package is: 27 | 28 | 1. `cd' to the directory containing the package's source code and type 29 | `./configure' to configure the package for your system. If you're 30 | using `csh' on an old version of System V, you might need to type 31 | `sh ./configure' instead to prevent `csh' from trying to execute 32 | `configure' itself. 33 | 34 | Running `configure' takes awhile. While running, it prints some 35 | messages telling which features it is checking for. 36 | 37 | 2. Type `make' to compile the package. 38 | 39 | 3. Optionally, type `make check' to run any self-tests that come with 40 | the package. 41 | 42 | 4. Type `make install' to install the programs and any data files and 43 | documentation. 44 | 45 | 5. You can remove the program binaries and object files from the 46 | source code directory by typing `make clean'. To also remove the 47 | files that `configure' created (so you can compile the package for 48 | a different kind of computer), type `make distclean'. There is 49 | also a `make maintainer-clean' target, but that is intended mainly 50 | for the package's developers. If you use it, you may have to get 51 | all sorts of other programs in order to regenerate files that came 52 | with the distribution. 53 | 54 | Compilers and Options 55 | ===================== 56 | 57 | Some systems require unusual options for compilation or linking that 58 | the `configure' script does not know about. You can give `configure' 59 | initial values for variables by setting them in the environment. Using 60 | a Bourne-compatible shell, you can do that on the command line like 61 | this: 62 | CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure 63 | 64 | Or on systems that have the `env' program, you can do it like this: 65 | env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure 66 | 67 | Compiling For Multiple Architectures 68 | ==================================== 69 | 70 | You can compile the package for more than one kind of computer at the 71 | same time, by placing the object files for each architecture in their 72 | own directory. To do this, you must use a version of `make' that 73 | supports the `VPATH' variable, such as GNU `make'. `cd' to the 74 | directory where you want the object files and executables to go and run 75 | the `configure' script. `configure' automatically checks for the 76 | source code in the directory that `configure' is in and in `..'. 77 | 78 | If you have to use a `make' that does not supports the `VPATH' 79 | variable, you have to compile the package for one architecture at a time 80 | in the source code directory. After you have installed the package for 81 | one architecture, use `make distclean' before reconfiguring for another 82 | architecture. 83 | 84 | Installation Names 85 | ================== 86 | 87 | By default, `make install' will install the package's files in 88 | `/usr/local/bin', `/usr/local/man', etc. You can specify an 89 | installation prefix other than `/usr/local' by giving `configure' the 90 | option `--prefix=PATH'. 91 | 92 | You can specify separate installation prefixes for 93 | architecture-specific files and architecture-independent files. If you 94 | give `configure' the option `--exec-prefix=PATH', the package will use 95 | PATH as the prefix for installing programs and libraries. 96 | Documentation and other data files will still use the regular prefix. 97 | 98 | In addition, if you use an unusual directory layout you can give 99 | options like `--bindir=PATH' to specify different values for particular 100 | kinds of files. Run `configure --help' for a list of the directories 101 | you can set and what kinds of files go in them. 102 | 103 | If the package supports it, you can cause programs to be installed 104 | with an extra prefix or suffix on their names by giving `configure' the 105 | option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. 106 | 107 | Optional Features 108 | ================= 109 | 110 | Some packages pay attention to `--enable-FEATURE' options to 111 | `configure', where FEATURE indicates an optional part of the package. 112 | They may also pay attention to `--with-PACKAGE' options, where PACKAGE 113 | is something like `gnu-as' or `x' (for the X Window System). The 114 | `README' should mention any `--enable-' and `--with-' options that the 115 | package recognizes. 116 | 117 | For packages that use the X Window System, `configure' can usually 118 | find the X include and library files automatically, but if it doesn't, 119 | you can use the `configure' options `--x-includes=DIR' and 120 | `--x-libraries=DIR' to specify their locations. 121 | 122 | Specifying the System Type 123 | ========================== 124 | 125 | There may be some features `configure' can not figure out 126 | automatically, but needs to determine by the type of host the package 127 | will run on. Usually `configure' can figure that out, but if it prints 128 | a message saying it can not guess the host type, give it the 129 | `--host=TYPE' option. TYPE can either be a short name for the system 130 | type, such as `sun4', or a canonical name with three fields: 131 | CPU-COMPANY-SYSTEM 132 | 133 | See the file `config.sub' for the possible values of each field. If 134 | `config.sub' isn't included in this package, then this package doesn't 135 | need to know the host type. 136 | 137 | If you are building compiler tools for cross-compiling, you can also 138 | use the `--target=TYPE' option to select the type of system they will 139 | produce code for and the `--build=TYPE' option to select the type of 140 | system on which you are compiling the package. 141 | 142 | Sharing Defaults 143 | ================ 144 | 145 | If you want to set default values for `configure' scripts to share, 146 | you can create a site shell script called `config.site' that gives 147 | default values for variables like `CC', `cache_file', and `prefix'. 148 | `configure' looks for `PREFIX/share/config.site' if it exists, then 149 | `PREFIX/etc/config.site' if it exists. Or, you can set the 150 | `CONFIG_SITE' environment variable to the location of the site script. 151 | A warning: not all `configure' scripts look for a site script. 152 | 153 | Operation Controls 154 | ================== 155 | 156 | `configure' recognizes the following options to control how it 157 | operates. 158 | 159 | `--cache-file=FILE' 160 | Use and save the results of the tests in FILE instead of 161 | `./config.cache'. Set FILE to `/dev/null' to disable caching, for 162 | debugging `configure'. 163 | 164 | `--help' 165 | Print a summary of the options to `configure', and exit. 166 | 167 | `--quiet' 168 | `--silent' 169 | `-q' 170 | Do not print messages saying which checks are being made. To 171 | suppress all normal output, redirect it to `/dev/null' (any error 172 | messages will still be shown). 173 | 174 | `--srcdir=DIR' 175 | Look for the package's source code in directory DIR. Usually 176 | `configure' can determine that directory automatically. 177 | 178 | `--version' 179 | Print the version of Autoconf used to generate the `configure' 180 | script, and exit. 181 | 182 | `configure' also accepts some other, not widely useful, options. 183 | 184 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/diction.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: PACKAGE VERSION\n" 10 | "POT-Creation-Date: 2004-03-10 16:55+0100\n" 11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 12 | "Last-Translator: FULL NAME \n" 13 | "Language-Team: LANGUAGE \n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=CHARSET\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | 18 | #: diction.c:79 diction.c:366 19 | #, c-format 20 | msgid "diction: Opening `%s' failed (%s).\n" 21 | msgstr "" 22 | 23 | #: diction.c:94 diction.c:106 diction.c:124 24 | msgid "diction: out of memory.\n" 25 | msgstr "" 26 | 27 | #: diction.c:116 28 | #, c-format 29 | msgid "diction: Compiling regular expression `%s' failed (%s).\n" 30 | msgstr "" 31 | 32 | #: diction.c:233 33 | msgid "Double word." 34 | msgstr "" 35 | 36 | #: diction.c:255 37 | msgid "" 38 | "Usage: diction [-d] [-f file [-n|-L language]] [file ...]\n" 39 | " diction [--ignore-double-words]\n" 40 | " [--file file [--no-default-file|--language]] [file ...]\n" 41 | " diction --version\n" 42 | msgstr "" 43 | 44 | #: diction.c:294 45 | #, c-format 46 | msgid "diction: Invalid string `..' in default phrase language `%s'.\n" 47 | msgstr "" 48 | 49 | #: diction.c:335 50 | msgid "Try `diction -h' or `diction --help' for more information.\n" 51 | msgstr "" 52 | 53 | #: diction.c:342 54 | msgid "" 55 | "Print wordy and commonly misused phrases in sentences.\n" 56 | "\n" 57 | "-d, --ignore-double-words do not complain about double words\n" 58 | "-f, --file also read the specified database\n" 59 | "-n, --no-default-file do not read the default phrase file\n" 60 | "-L, --language set document language\n" 61 | "-h, --help print this message\n" 62 | " --version print the version\n" 63 | msgstr "" 64 | 65 | #: diction.c:351 style.c:892 66 | msgid "Report bugs to .\n" 67 | msgstr "" 68 | 69 | #: diction.c:377 style.c:912 70 | msgid "No sentences found.\n" 71 | msgstr "" 72 | 73 | #: diction.c:381 74 | msgid "No phrases " 75 | msgstr "" 76 | 77 | #: diction.c:382 78 | msgid "1 phrase " 79 | msgstr "" 80 | 81 | #: diction.c:383 82 | #, c-format 83 | msgid "%d phrases " 84 | msgstr "" 85 | 86 | #: diction.c:384 87 | msgid "in 1 sentence found.\n" 88 | msgstr "" 89 | 90 | #: diction.c:385 91 | #, c-format 92 | msgid "in %d sentences found.\n" 93 | msgstr "" 94 | 95 | #: getopt.c:679 96 | #, c-format 97 | msgid "%s: option `%s' is ambiguous\n" 98 | msgstr "" 99 | 100 | #: getopt.c:703 101 | #, c-format 102 | msgid "%s: option `--%s' doesn't allow an argument\n" 103 | msgstr "" 104 | 105 | #: getopt.c:708 106 | #, c-format 107 | msgid "%s: option `%c%s' doesn't allow an argument\n" 108 | msgstr "" 109 | 110 | #: getopt.c:725 getopt.c:898 111 | #, c-format 112 | msgid "%s: option `%s' requires an argument\n" 113 | msgstr "" 114 | 115 | #. --option 116 | #: getopt.c:754 117 | #, c-format 118 | msgid "%s: unrecognized option `--%s'\n" 119 | msgstr "" 120 | 121 | #. +option or -option 122 | #: getopt.c:758 123 | #, c-format 124 | msgid "%s: unrecognized option `%c%s'\n" 125 | msgstr "" 126 | 127 | #. 1003.2 specifies the format of this message. 128 | #: getopt.c:784 129 | #, c-format 130 | msgid "%s: illegal option -- %c\n" 131 | msgstr "" 132 | 133 | #: getopt.c:787 134 | #, c-format 135 | msgid "%s: invalid option -- %c\n" 136 | msgstr "" 137 | 138 | #. 1003.2 specifies the format of this message. 139 | #: getopt.c:817 getopt.c:947 140 | #, c-format 141 | msgid "%s: option requires an argument -- %c\n" 142 | msgstr "" 143 | 144 | #: getopt.c:864 145 | #, c-format 146 | msgid "%s: option `-W %s' is ambiguous\n" 147 | msgstr "" 148 | 149 | #: getopt.c:882 150 | #, c-format 151 | msgid "%s: option `-W %s' doesn't allow an argument\n" 152 | msgstr "" 153 | 154 | #: sentence.c:177 155 | #, c-format 156 | msgid "%s: internal error, compiling a regular expression failed (%s).\n" 157 | msgstr "" 158 | 159 | #: sentence.c:214 160 | #, c-format 161 | msgid "%s: increasing sentence buffer failed: %s\n" 162 | msgstr "" 163 | 164 | #: style.c:71 style.c:85 165 | msgid "style: out of memory\n" 166 | msgstr "" 167 | 168 | #: style.c:783 169 | msgid "" 170 | "Usage: style [-L language] [-l length] [-r ari] [file ...]\n" 171 | " style [--language language] [--print-long length] [--print-ari ari]\n" 172 | " [file ...]\n" 173 | " style --version\n" 174 | msgstr "" 175 | 176 | #: style.c:872 177 | msgid "Try style -h|--help for more information.\n" 178 | msgstr "" 179 | 180 | #: style.c:879 181 | msgid "" 182 | "Analyse surface characteristics of a document.\n" 183 | "\n" 184 | msgstr "" 185 | 186 | #: style.c:880 187 | msgid "" 188 | "-L, --language set the document language.\n" 189 | "-l, --print-long print all sentences longer than words\n" 190 | "-r, --print-ari print all sentences with an ARI greater than than " 191 | "\n" 192 | "-p, --print-passive print all sentences phrased in the passive voice\n" 193 | "-N, --print-nom print all sentences containing nominalizations\n" 194 | "-n, --print-nom-passive print all sentences phrased in the passive voice or\n" 195 | " containing nominalizations\n" 196 | msgstr "" 197 | 198 | #: style.c:888 199 | msgid "" 200 | "-h, --help print this message\n" 201 | " --version print the version\n" 202 | msgstr "" 203 | 204 | #: style.c:902 205 | #, c-format 206 | msgid "style: Opening `%s' failed (%s).\n" 207 | msgstr "" 208 | 209 | #: style.c:920 210 | msgid "readability grades:\n" 211 | msgstr "" 212 | 213 | #: style.c:921 214 | msgid "Kincaid" 215 | msgstr "" 216 | 217 | #: style.c:922 218 | msgid "ARI" 219 | msgstr "" 220 | 221 | #: style.c:923 222 | msgid "Coleman-Liau" 223 | msgstr "" 224 | 225 | #: style.c:924 226 | msgid "Flesch Index" 227 | msgstr "" 228 | 229 | #: style.c:925 230 | msgid "Fog Index" 231 | msgstr "" 232 | 233 | #: style.c:927 234 | msgid "1. WSTF Index" 235 | msgstr "" 236 | 237 | #: style.c:928 238 | msgid "Wheeler-Smith Index" 239 | msgstr "" 240 | 241 | #: style.c:929 style.c:934 242 | msgid "below school year 5\n" 243 | msgstr "" 244 | 245 | #: style.c:930 246 | msgid "higher than school year 10\n" 247 | msgstr "" 248 | 249 | #: style.c:931 style.c:936 250 | #, c-format 251 | msgid "school year %d\n" 252 | msgstr "" 253 | 254 | #: style.c:933 255 | msgid "Lix" 256 | msgstr "" 257 | 258 | #: style.c:935 259 | msgid "higher than school year 11\n" 260 | msgstr "" 261 | 262 | #: style.c:937 263 | msgid "SMOG-Grading" 264 | msgstr "" 265 | 266 | #: style.c:939 267 | msgid "sentence info:\n" 268 | msgstr "" 269 | 270 | #: style.c:940 271 | #, c-format 272 | msgid " %d characters\n" 273 | msgstr "" 274 | 275 | #: style.c:941 276 | #, c-format 277 | msgid " %d words, average length %.2f characters = %.2f syllables\n" 278 | msgstr "" 279 | 280 | #: style.c:942 281 | #, c-format 282 | msgid " %d sentences, average length %.1f words\n" 283 | msgstr "" 284 | 285 | #: style.c:946 286 | #, c-format 287 | msgid " %d%% (%d) short sentences (at most %d words)\n" 288 | msgstr "" 289 | 290 | #: style.c:949 291 | #, c-format 292 | msgid " %d%% (%d) long sentences (at least %d words)\n" 293 | msgstr "" 294 | 295 | #: style.c:950 296 | #, c-format 297 | msgid " %d paragraphs, average length %.1f sentences\n" 298 | msgstr "" 299 | 300 | #: style.c:951 301 | #, c-format 302 | msgid " %d%% (%d) questions\n" 303 | msgstr "" 304 | 305 | #: style.c:952 306 | #, c-format 307 | msgid " %d%% (%d) passive sentences\n" 308 | msgstr "" 309 | 310 | #: style.c:953 311 | #, c-format 312 | msgid "" 313 | " longest sent %d wds at sent %d; shortest sent %d wds at sent %d\n" 314 | msgstr "" 315 | 316 | #: style.c:972 317 | msgid "word usage:\n" 318 | msgstr "" 319 | 320 | #: style.c:973 321 | msgid " verb types:\n" 322 | msgstr "" 323 | 324 | #: style.c:974 325 | #, c-format 326 | msgid " to be (%d) auxiliary (%d) \n" 327 | msgstr "" 328 | 329 | #: style.c:975 330 | #, c-format 331 | msgid " types as %% of total:\n" 332 | msgstr "" 333 | 334 | #: style.c:976 335 | msgid "" 336 | " conjunctions %1.f% (%d) pronouns %1.f% (%d) prepositions %1.f% (%d)\n" 337 | msgstr "" 338 | 339 | #: style.c:981 340 | msgid " nominalizations %1.f% (%d)\n" 341 | msgstr "" 342 | 343 | #: style.c:985 344 | msgid "sentence beginnings:\n" 345 | msgstr "" 346 | 347 | #: style.c:986 348 | #, c-format 349 | msgid " pronoun (%d) interrogative pronoun (%d) article (%d)\n" 350 | msgstr "" 351 | 352 | #: style.c:989 353 | #, c-format 354 | msgid "" 355 | " subordinating conjunction (%d) conjunction (%d) preposition (%d)\n" 356 | msgstr "" 357 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/diction.texi.in: -------------------------------------------------------------------------------- 1 | @c {{{Texinfo}}}@c {{{ Setup 2 | \input texinfo 3 | @setfilename diction.info 4 | @settitle diction, print wordy and commonly misused phrases in sentences 5 | 6 | @syncodeindex ky cp 7 | @syncodeindex pg cp 8 | @syncodeindex tp cp 9 | 10 | @defcodeindex op 11 | @syncodeindex op fn 12 | @syncodeindex vr fn 13 | 14 | @ifinfo 15 | @direntry 16 | * diction: (diction). print wordy and commonly misused phrases in sentences. 17 | @end direntry 18 | This file documents @command{diction}, a program to print wordy and 19 | commonly misused phrases in sentences. 20 | 21 | Published by the Free Software Foundation, 22 | 59 Temple Place - Suite 330 23 | Boston, MA 02111-1307, USA 24 | 25 | Copyright 1997, 1998, 1999, 2000 Michael Haardt 26 | 27 | Permission is granted to make and distribute verbatim copies of this 28 | manual provided the copyright notice and this permission notice are 29 | preserved on all copies. 30 | 31 | Permission is granted to copy and distribute modified versions of 32 | this manual under the conditions for verbatim copying, provided that 33 | the entire resulting derived work is distributed under the terms of a 34 | permission notice identical to this one. 35 | 36 | Permission is granted to copy and distribute translations of this manual 37 | into another language, under the above conditions for modified versions, 38 | except that this permission notice may be stated in a translation approved 39 | by Michael Haardt. 40 | @end ifinfo 41 | 42 | @setchapternewpage off 43 | @c }}} 44 | @c {{{ Title page 45 | @titlepage 46 | @title diction, print wordy and commonly misused phrases in sentences 47 | @subtitle version @VERSION@, @UPDATED@ 48 | @author Michael Haardt 49 | 50 | @page 51 | @vskip 0pt plus 1filll 52 | Copyright @copyright{} 1997, 1998, 1999, 2000 Michael Haardt 53 | 54 | @sp 2 55 | Published by the Free Software Foundation, @* 56 | 59 Temple Place - Suite 330, @* 57 | Boston, MA 02111-1307, USA 58 | 59 | Permission is granted to make and distribute verbatim copies of this 60 | manual provided the copyright notice and this permission notice are 61 | preserved on all copies. 62 | 63 | Permission is granted to copy and distribute modified versions of 64 | this manual under the conditions for verbatim copying, provided that 65 | the entire resulting derived work is distributed under the terms of a 66 | permission notice identical to this one. 67 | 68 | Permission is granted to copy and distribute translations of this manual 69 | into another language, under the above conditions for modified versions, 70 | except that this permission notice may be stated in a translation approved 71 | by Michael Haardt. 72 | 73 | @end titlepage 74 | @c }}} 75 | @c {{{ Overview 76 | @page 77 | @ifnottex 78 | @node Top 79 | @top Diction 80 | 81 | @command{diction} prints wordy and commonly misused phrases in sentences. 82 | 83 | This document was produced for version @VERSION@ of @sc{gnu} 84 | @command{diction}. 85 | @end ifnottex 86 | 87 | @menu 88 | * Introduction:: Introduction. 89 | * Invoking:: Invoking @command{diction}; description of options. 90 | * Diagnostics:: Exit status returned by @command{diction}. 91 | * Reporting Bugs:: Reporting Bugs. 92 | * Concept Index:: A menu with all the topics in this manual. 93 | * Index:: A menu with all @command{diction} commands 94 | and command-line options. 95 | @end menu 96 | @c }}} 97 | @c {{{ Introduction 98 | @node Introduction 99 | @chapter Introduction 100 | 101 | @command{diction} finds all sentences in a document, that contain 102 | phrases from a database of frequently misused, bad or wordy diction. 103 | It further checks for double words. If no files are given, the document 104 | is read from standard input. Each found phrase is enclosed in @code{[ ]} 105 | (brackets). Suggestions and advice, if any, are printed headed by a right 106 | arrow @code{->}. A sentence is a sequence of words, that starts with a 107 | capitalised word and ends with a full stop, double colon, question mark 108 | or exclaimation mark. A single letter followed by a dot is considered an 109 | abbreviation, so it does not terminate a sentence. Various multi-letter 110 | abbreviations are recognized, they do not terminate a sentence as well. 111 | 112 | @command{diction} understands @command{cpp} @code{#line} lines for being 113 | able to give precise locations when printing sentences. 114 | 115 | There has been a diction command on old UNIX systems, which is now part 116 | of the AT&T DWB package. The original version was bound to roff by 117 | enforcing a call to @command{deroff}. This version is a reimplementation 118 | and not must run in a pipe with @command{deroff} if you want to process 119 | roff documents. Similarly, you can run it in a pipe with @command{dehtml} 120 | or @command{detex} to process HTML or TeX documents. 121 | 122 | See also: 123 | 124 | Cherry, L.L.; Vesterman, W.: Writing Tools-The STYLE and DICTION 125 | programs, Computer Science Technical Report 91, Bell Laboratories, 126 | Murray Hill, N.J. (1981), republished as part of the 4.4BSD User's 127 | Supplementary Documents by O'Reilly. 128 | 129 | Strunk, William: The elements of style, Ithaca, N.Y.: Priv. print., 1918, 130 | @url{http://coba.shsu.edu/help/strunk/}. 131 | @c }}} 132 | @c {{{ Invoking 133 | @node Invoking 134 | @chapter Invoking @command{diction} 135 | 136 | @table @samp 137 | 138 | @item -f @var{file} 139 | @itemx --file @var{file} 140 | @opindex -f 141 | @opindex --file 142 | @cindex user specified database 143 | Read the user specified database from the specified @var{file} in addition 144 | to the default database. 145 | 146 | @item -n 147 | @itemx --no-default-file 148 | @opindex -n 149 | @opindex --no-default-file 150 | @cindex not loading default database 151 | Do not read the default database, so only the user-specified database is used. 152 | 153 | @item -L @var{language} 154 | @itemx --language @var{language} 155 | @opindex -L 156 | @opindex --language 157 | @cindex set phrase file language 158 | Set the phrase file language. 159 | 160 | @item -h 161 | @itemx --help 162 | @opindex -h 163 | @opindex --help 164 | @cindex print usage message 165 | Print a short usage message. 166 | 167 | @itemx --version 168 | @opindex --version 169 | @cindex print version 170 | Print the version. 171 | 172 | @end table 173 | 174 | @section Environment Variables 175 | 176 | Diction's behaviour is affected by the following environment variables. 177 | @cindex environment variables 178 | 179 | @table @code 180 | 181 | @itemx LC_MESSAGES 182 | @vindex LC_MESSAGES 183 | @cindex language of messages 184 | @cindex message language 185 | @cindex national language support 186 | @cindex NLS 187 | @cindex translation of message language 188 | This variable specifies the @code{LC_MESSAGES} locale, which determines 189 | the language that @command{diction} uses for messages. American English 190 | is used if the environment variable is not set, or if the message catalog 191 | is not installed, or if @command{diction} was not compiled with national 192 | language support (@sc{nls}). The variable is further used as default 193 | for the phrase language. 194 | 195 | @end table 196 | 197 | @section Files 198 | 199 | @cindex files 200 | 201 | @table @code 202 | 203 | @itemx @DATADIR@/diction 204 | This directory contains phrase databases for various languages. 205 | 206 | @end table 207 | @c }}} 208 | @c {{{ Diagnostics 209 | @node Diagnostics 210 | @chapter Diagnostics 211 | 212 | If no errors occur, exit status is 0. On usage errors, 1 is returned. 213 | Termination caused by lack of memory is signalled by exit code 2. 214 | @c }}} 215 | @c {{{ Reporting Bugs 216 | @node Reporting Bugs 217 | @chapter Reporting Bugs 218 | 219 | If you find a bug in @command{diction}, please send electronic mail to 220 | @email{michael@@moria.de}. Include the version number, which you can find 221 | by running @command{diction --version}. Also include the hardware and 222 | operating system, the compiler used to compile `diction', a description 223 | of the bug behavior, and the input to `diction' that triggered the bug. 224 | @c }}} 225 | @c {{{ Author 226 | @node Author 227 | @chapter Author 228 | 229 | This program is GNU software, copyright 1997, 1998, 1999, 2000 Michael Haardt 230 | @email{michael@@moria.de}. 231 | 232 | The english phrase file contains contributions by Greg Lindahl 233 | @email{lindahl@@pbm.com}, Wil Baden, Gary D. Kline, Kimberly Hanks and 234 | Beth Morris. 235 | 236 | This program is free software; you can redistribute it and/or modify 237 | it under the terms of the GNU General Public License as published by 238 | the Free Software Foundation; either version 2 of the License, or 239 | (at your option) any later version. 240 | 241 | This program is distributed in the hope that it will be useful, 242 | but WITHOUT ANY WARRANTY; without even the implied warranty of 243 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 244 | GNU General Public License for more details. 245 | 246 | You should have received a copy of the GNU General Public License along 247 | with this program. If not, write to the Free Software Foundation, Inc., 248 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 249 | @c }}} 250 | @c {{{ Concept Index 251 | @page 252 | @node Concept Index 253 | @unnumbered Concept Index 254 | 255 | This is a general index of all issues discussed in this manual, with the 256 | exception of the @command{diction} command-line options. 257 | 258 | @printindex cp 259 | @c }}} 260 | @c {{{ Index 261 | @page 262 | @node Index 263 | @unnumbered Index 264 | 265 | This is an alphabetical list of all @command{diction} command-line 266 | options and environment variables. 267 | 268 | @printindex fn 269 | 270 | @contents 271 | @c }}} 272 | @bye 273 | -------------------------------------------------------------------------------- /checkbiw/src/biw: -------------------------------------------------------------------------------- 1 | as to whether whether §50 2 | different than different from §61 3 | is due to stems from, originates in, is caused by (do not use for origination) {warning} §39 4 | above preceding, previous (when referring to text) {warning} §48 5 | below next, following (when referring to text) {warning} §48 6 | last preceding, previous; final, closing, concluding ("last" is ambiguous) §87 7 | all of all, every (unless only "all of" makes sense) {warning} §108 8 | i'm I am §32 9 | you're you are §32 10 | he's he is §32 11 | she's she is §32 12 | it's it is §32 13 | we're we are §32 14 | they're they are §32 15 | i've I have §32 16 | you've you have §32 17 | we've we have §32 18 | they've they have §32 19 | ain't am not, are not, is not, have not, has not, do not, does not, did not §32 20 | aren't are not §32 21 | isn't is not §32 22 | haven't have not §32 23 | hasn't has not §32 24 | let's let us §32 25 | ok (avoid in formal writing) §32 26 | tho = though 27 | thru through 28 | hw hardware 29 | is comprised of comprises §75 30 | work-around workaround 31 | work around ! 32 | works around ! 33 | worked around ! 34 | around approximately, more or less, roughly, about (when not referring to surroundings) {warning} §90 35 | best-effort ! 36 | effort (avoid, only applies to physical activity) §16 37 | equals is equal to §57 38 | impact influence, effect (noun); affect (verb) §25 39 | impacts affects §25 40 | issue (use more precise term such as:) problem, need, requirement §111 41 | the reason is because because, the reason is, the reason why §55 42 | the fact that that §66 43 | as though ! 44 | even though ! 45 | though. nevertheless, however, on the other hand, at last (move to beginning of sentence) 46 | though although, even though, albeit, notwithstanding §52 47 | utilize use (except when using something underutilized) {warning} §109 48 | utilizes uses (except when using something underutilized) {warning} §109 49 | utilizing using (except when using something underutilized) {warning} §109 50 | utilized used (except when using something underutilized) {warning} §109 51 | utilise use (except when using something underutilized) {warning} §109 52 | utilises uses (except when using something underutilized) {warning} §109 53 | utilising using (except when using something underutilized) {warning} §109 54 | utilised used (except when using something underutilized) {warning} §109 55 | , that is ! 56 | ,'' that is ! 57 | however, that ! 58 | , that which (or remove comma if "that" clause specifies object(s)) §17 59 | ,'' that which (or remove comma if "that" clause specifies object(s)) §17 60 | , which ! 61 | ,'' which ! 62 | (which ! 63 | about which ! 64 | after which ! 65 | against which ! 66 | at which ! 67 | between which ! 68 | by which ! 69 | during which ! 70 | for which ! 71 | following which ! 72 | from which ! 73 | in which ! 74 | into which ! 75 | of which ! 76 | on which ! 77 | over which ! 78 | through which ! 79 | to which ! 80 | under which ! 81 | upon which ! 82 | with which ! 83 | without which ! 84 | which that (or add comma if "which" clause does not specify object(s)) §17 85 | after. (dangling preposition, recast using "after which") {warning} §60 86 | against. (dangling preposition, recast using "against which") {warning} §60 87 | at. (dangling preposition, recast using "at which") {warning} §60 88 | between. (dangling preposition, recast using "between which") {warning} §60 89 | for. (dangling preposition, recast using "for which") {warning} §60 90 | from. (dangling preposition, recast using "from which") {warning} §60 91 | in. (dangling preposition, recast using "in which") {warning} §60 92 | into. (dangling preposition, recast using "into which") {warning} §60 93 | of. (dangling preposition, recast using "of which") {warning} §60 94 | on. (dangling preposition, recast using "on which") {warning} §60 95 | over. (dangling preposition, recast using "over which") {warning} §60 96 | through. (dangling preposition, recast using "through which") {warning} §60 97 | to. (dangling preposition, recast using "to which") {warning} §60 98 | under. (dangling preposition, recast using "under which") {warning} §60 99 | with. (dangling preposition, recast using "with which") {warning} §60 100 | without. (dangling preposition, recast using "without which") {warning} §60 101 | milli milli... ("milli" is a prefix, remove space or hyphen after it) 102 | milli-~ = milli 103 | µ-kernel microkernel ("µ-kernel" is pronounced as "müh-kernel") 104 | \micro-kernel = µ-kernel 105 | \micro ! 106 | micro kernel microkernel 107 | micro-kernel microkernel 108 | micro micro... ("micro" is a prefix, remove space or hyphen after it) 109 | micro-~ = micro 110 | nano nano... ("nano" is a prefix, remove space or hyphen after it) 111 | nano-~ = nano 112 | pico pico... ("pico" is a prefix, remove space or hyphen after it) 113 | pico-~ = pico 114 | kilo kilo... ("kilo" is a prefix, remove space or hyphen after it) 115 | kilo-~ = kilo 116 | mega mega... ("mega" is a prefix, remove space or hyphen after it) 117 | mega-~ = mega 118 | giga giga... ("giga" is a prefix, remove space or hyphen after it) 119 | giga-~ = giga 120 | (i.e., ! 121 | (i. e., ! 122 | (i.\,e., ! 123 | (\ie{}, ! 124 | (\ie, ! 125 | (i.e. (add comma after "i. e.") §21 126 | (i. e. = (i.e. 127 | (i.\,e. = (i.e. 128 | (\ie{} = (i.e. 129 | (\ie = (i.e. 130 | i.e. that is (if not in parentheses) §21 131 | i. e. = i.e. 132 | i.\,e. = i.e. 133 | \ie{} = i.e. 134 | \ie = i.e. 135 | (e.g., ! 136 | (e. g., ! 137 | (e.\,g., ! 138 | (\eg{}, ! 139 | (\eg, ! 140 | (e.g. (add comma after "e. g.") §21 141 | (e. g. = (e.g. 142 | (e.\,g. = (e.g. 143 | (\eg{} = (e.g. 144 | (\eg = (e.g. 145 | e.g. for example, for instance (if not in parentheses) §21 146 | e. g. = e.g. 147 | e.\,g. = e.g. 148 | \eg{} = e.g. 149 | \eg = e.g. 150 | etc.) ! 151 | etc. and so on (if not in parentheses) §21 152 | et al.) ! 153 | et al. and colleagues/associates/coworkers (if not in parentheses) {warning} §21 154 | et al et al., and colleagues/associates/coworkers (if not in parentheses) §21 155 | et. al = et al 156 | et.\,al = et al 157 | et.al = et al 158 | et.al. = et al 159 | both, (remove comma after "both") {warning} 160 | since because (use "since" only for relationships in time, not for causal relationships) {warning} §102 161 | either, because ! 162 | either, since either, because (use "since" only for relationships in time, not for causal relationships) §102 163 | either, as ! 164 | either, (remove comma after "either") {warning} 165 | can not cannot (in most cases) {warning} §104 166 | non-real-time ! 167 | non-~ (nonwords contain no hyphen, except for compound words or names) {warning} §106 168 | re-sent ! 169 | re-~ (rewords contain no hyphen) §134 170 | ;'' ''; (except for verbatim strings) {warning} §35 171 | I/O input--output §117, §32 172 | input/output input--output §117 173 | input-output input--output §117 174 | and/or and §117 175 | note, (remove comma after "note") §114 176 | Section \ref ! 177 | # Section~\ref ! 178 | Section [~ ! 179 | section \ref Section §62 180 | # section~\ref Section §62 181 | section [~ Section §62 182 | Figure \ref ! 183 | # Figure~\ref ! 184 | Figure [~ ! 185 | figure \ref Figure §62 186 | # figure~\ref Figure §62 187 | figure [~ Figure §62 188 | Table \ref ! 189 | # Table~\ref ! 190 | Table [~ ! 191 | table \ref Table §62 192 | # table~\ref Table §62 193 | table [~ Table §62 194 | Chapter \ref ! 195 | # Chapter~\ref ! 196 | Chapter [~ ! 197 | chapter \ref Chapter §62 198 | # chapter~\ref Chapter §62 199 | chapter [~ Chapter §62 200 | Part \ref ! 201 | # Part~\ref ! 202 | Part [~ ! 203 | part \ref Part §62 204 | # part~\ref Part §62 205 | part [~ Part §62 206 | firstly first 207 | secondly second 208 | . however, ! 209 | .'' however, ! 210 | . however However, (add comma when meaning "nevertheless", "on the other hand") {warning} 211 | .'' however However, (add comma when meaning "nevertheless", "on the other hand") {warning} 212 | . therefore, ! 213 | .'' therefore, ! 214 | . therefore Therefore, (add comma) 215 | .'' therefore Therefore, (add comma) 216 | . also, Moreover, Additionally, (keep comma) 217 | .'' also, Moreover, Additionally, (keep comma) 218 | . also Moreover, Additionally, (add comma) 219 | .'' also Moreover, Additionally, (add comma) 220 | . moreover, ! 221 | .'' moreover, ! 222 | . moreover Moreover, (add comma) 223 | .'' moreover Moreover, (add comma) 224 | . additionally, ! 225 | .'' additionally, ! 226 | . additionally Additionally, (add comma) 227 | .'' additionally Additionally, (add comma) 228 | CPU ! 229 | cpu CPU 230 | algas algae §89 231 | appendixes appendices §89 232 | alumnuses alumni §89 233 | automatons automata §89 234 | axises axes §89 235 | curriculums curricula §89 236 | datas data §89 237 | ellipsises ellipses §89 238 | erratums errata §89 239 | formulas formulae §89 240 | indexes indices (use "indexes" only for look-up tables) {warning} §89 241 | matrixes matrices §89 242 | mediums media §89 243 | memorandums memoranda §89 244 | nucleuses nuclei §89 245 | radiuses radii §89 246 | schemas schemata §89 247 | symposiums symposia §89 248 | thesauruses thesauri §89 249 | vertexes vertices §89 250 | vitas vitae §89 251 | analysises analyses §89 252 | antithesises antitheses §89 253 | crisises crises §89 254 | parenthesises parentheses §89 255 | synopsises synopses §89 256 | synthesises syntheses §89 257 | thesises theses §89 258 | echos echoes §89 259 | fiascos fiascoes §89 260 | logoes logos §89 261 | zeroes zeros §89 262 | falling outs fallings out §89 263 | passerbys passersby §89 264 | runner ups runners up §89 265 | adress address 266 | adresses addresses 267 | ressource resource 268 | ressources resources 269 | one can you can, we can §2 270 | one has I have, we have §2 271 | one should you should §2 272 | the author I §2 273 | the authors we (or if it's not you, name authors) §2 274 | the reader you §2 275 | this is (undefined this, add noun after "this") §8 276 | these are (undefined this, add noun after "these") §8 277 | this means that thus, this assertion implies §8 278 | in order to to, so as to §76 279 | will likely be probably will be §100 280 | some (fuzzy; which ones/how many do you mean?) §36 281 | thing (fuzzy; name entity under discussion) §36 282 | very (fuzzy; omit, or use stronger adverb/adjective:) exceptionally, extremely, noticeably §36 283 | a lot of (avoid in formal writing; use more expressive term) §36 284 | actually (avoid for stressing; use only when emphasizing actual versus virtual) §36 285 | in fact = actually 286 | truly = actually 287 | really = actually 288 | center on (avoid; choose verb conveying precise description of what is done) §40 289 | centers on = center on 290 | centered on = center on 291 | focus on = center on 292 | focuses on = center on 293 | focused on = center on 294 | concentrate on = center on 295 | concentrates on = center on 296 | concentrated on = center on 297 | as good or better than as good as OBJECT, or better/if not better 298 | in many cases ("cases" is often fuzzy/redundant; omit, name circumstances) {warning} 299 | been the case that (remove this phrase and recast sentence) 300 | certainly (fuzzy; omit) 301 | character (often redundant; omit) {warning} 302 | nature (often redundant; omit) {warning} 303 | factor out ! 304 | factor (often redundant; omit) {warning} 305 | clever (avoid in formal writing) 306 | respective (often redundant; omit) {warning} 307 | respectively (often redundant; omit) {warning} 308 | a kind ! 309 | the kind ! 310 | this kind ! 311 | that kind ! 312 | one kind ! 313 | kind of (unless meaning "type":) rather (before adjective/verb), something like (before noun) {warning} 314 | sort of = kind of 315 | oftentimes often 316 | ofttimes often 317 | viewpoint opinion, view; (in geometric sense:) point of view 318 | . while although, whereas (unless "while" means "at the same time") {warning} 319 | .'' while =. while 320 | , while =. while 321 | ,'' while =. while 322 | worth while (avoid in formal writing) 323 | worthwhile (avoid in formal writing) 324 | #Local Variables: 325 | #mode:fundamental 326 | #mode:flyspell 327 | #tab-width:20 328 | #ispell-local-dictionary: "american" 329 | #comment-start: ";" 330 | #comment-start-skip: "; *" 331 | #End: 332 | -------------------------------------------------------------------------------- /checkbiw/doc/mustread.txt: -------------------------------------------------------------------------------- 1 | The tech-paper writer's ultimate BUGS in Writing must-read list 2 | 3 | Michael Hohmuth 4 | 5 | Why you should read this document 6 | ################################# 7 | 8 | You are writing a paper, perhaps for a technical conference or another 9 | tech-savvy audience? You want others to read your material, not 10 | stumble over your writing bugs? You are a German? 11 | 12 | Then you must read the Book BUGS in Writing [BugsInWriting]. All of it. 13 | This book teaches you good style and helps you avoid many of the most 14 | common writing errors. 15 | 16 | But if you are in a hurry, then before you read the book, read this 17 | document. It lists the (in my mind) most important subjects related 18 | to the most common and worst writing errors, which everybody seems to 19 | get wrong all the time. 20 | 21 | Assumptions 22 | =========== 23 | 24 | I assume that you are writing in American English. 25 | 26 | 27 | The most important orthography, grammar, and style rules 28 | ######################################################## 29 | 30 | The following subsections are (mostly) named like their counterparts 31 | in BUGS in Writing. To find them in the book, use the book's Index of 32 | Principles on pages 635ff. 33 | 34 | Passive Voice; you and your reader (§1, §2) 35 | =========================================== 36 | 37 | Avoid passive voice. Mention the agent of an action as the sentence's 38 | subject. Bad: ``The capability is revoked when it times out.'' Who 39 | revokes the capability? Better: ``When the capability times out, the 40 | kernel automatically revokes it.'' 41 | 42 | An especially bad excuse for not using active voice is to avoid 43 | referring to yourself as ``I'' or ``we.'' Do not refer to yourself as 44 | ``the author''; do not call your audience ``the reader.'' Avoid using 45 | ``one''; as in ``One can only wonder who writes sentences as ugly as 46 | this one.'' 47 | 48 | Address your reader as ``you.'' When guiding the reader through your 49 | document or through a difficult problem, you can also use ``we.'' 50 | When giving instructions, you can avoid pronouns altogether without 51 | resorting to passive voice, as in: ``Avoid passive voice.'' 52 | 53 | Hyphens (§29) 54 | ============= 55 | 56 | Use hyphens in compound adjectives, as in ``microkernel-based 57 | system,'' except if the adjective follows the term, as in ``the system 58 | is microkernel based.'' 59 | 60 | There is no hyphen between adjectives (compound or not) and compound 61 | nouns, as in ``microkernel operating system.'' 62 | 63 | Which versus That (§17) 64 | ======================= 65 | 66 | Use ``that'' when identifying single objects or persons, as in ``the 67 | button that says `start'.'' Use ``which'' when conveying extra 68 | information about an object that already has been identified: ``Emacs, 69 | which is the best editor program of the world, has a working set of 70 | eight megabytes.'' 71 | 72 | There is a comma in front of ``which,'' but never before ``that.'' 73 | 74 | Enumerations, And, semicolons, and commas (§23, §26) 75 | ==================================================== 76 | 77 | When enumerating items in a list, separate the items with commas or, 78 | if the list items contain commas themselves, with semicolons. Put a 79 | comma in front of the final item's ``and'' or ``or'' as well. The 80 | only exception is a list that contains only two items---in this case, 81 | no comma is necessary. 82 | 83 | I.e., E.g., Etc., and Et al. (§21) 84 | ================================== 85 | 86 | Use the Latin abbreviations ``i.e.'' (_id est_), ``e.g.'' 87 | (_exempli gratia_), ``etc.'' (_et cetera_), and ``et al.'' (_et alii_) 88 | only when writing for an academic audience, and only inside 89 | parentheses. In regular text use ``that is,'' ``for example,'' 90 | ``and so on,'' and ``and colleagues,'' ``and associates,'' or ``and 91 | coworkers.'' 92 | 93 | Do not set these abbreviations in italic type; use roman type. 94 | 95 | Undefined This (§8) 96 | =================== 97 | 98 | Always use a noun after words such as ``this,'' ``these'', ``that,'' 99 | and ``some.'' Leaving a ``this'' dangling in the air results in 100 | information loss: _What_ exactly was it the ``this'' is referring to? 101 | 102 | Either and Both, Neither and Nor (§28, §99) 103 | =========================================== 104 | 105 | Word before ``either'' and ``both'' apply to both alternatives, words 106 | placed after ``either'' and ``both'' apply to only one. 107 | 108 | Use ``nor'' (instead of ``or'') with ``neither.'' Again, word order 109 | matters: Place words that apply to both alternatives outside the 110 | neither--nor phrase. 111 | 112 | Note that there is no comma after ``both'' and ``neither.'' 113 | 114 | Cannot versus Can Not (§104) 115 | ============================ 116 | 117 | The negation of ``can'' is ``cannot.'' Use ``can not'' only if 118 | someone is able of not doing something, as in ``I can not snore.'' 119 | 120 | Abbreviations (§21) 121 | =================== 122 | 123 | Always define abbreviations on first use, as in: ``...the Dresden 124 | Real-Time Operating System (DROPS). DROPS provides support for...'' 125 | 126 | Remember that both the abstract and the main document count as 127 | separate documents. Therefore, you need to introduce abbreviations in 128 | both of these documents. 129 | 130 | Sections and Figures (§62) 131 | ========================== 132 | 133 | When referring to sections, figures, and the like by number, the word 134 | preceding the number must be capitalized, as in 135 | ``Section [Sections and Figures (§62)].'' 136 | 137 | Citations (§65) 138 | =============== 139 | 140 | Use regular citations (the ones using square brackets) only for 141 | published material. When referring to unpublished or 142 | aurally-transmitted material, use footnotes instead. 143 | 144 | Put a space in front of the opening bracket of your citation. You 145 | can automate this task in LaTeX using: 146 | ! \usepackage{cite} 147 | 148 | The list of cited bibliographic references is called ``References,'' 149 | not ``Bibliography''; the latter is a list of works that may or may 150 | not relate to a given text. 151 | 152 | Rewords, Nonwords (§106, §134) 153 | ============================== 154 | 155 | Set rewords and nonwords---that is, words beginning with ``re'' or 156 | with ``non''---as single, unhyphenated words. The exception are 157 | nonwords in which the second term consists of multiple words or begins 158 | with a capital letter (as in names). 159 | 160 | :Examples: reestimate, reentry, reevaluate, rerelease, nonmonotonic, 161 | nontrivial, nonnuclear 162 | 163 | :Exceptions: re-sent (to avoid confusion with resent), non-Unix, 164 | non-real-time system, non-Monte Carlo methods 165 | 166 | Em dashes and en dashes (§49, §77) 167 | ================================== 168 | 169 | There are three kinds of dashes: hyphens ("-"; LaTeX: '-'), en dashes 170 | ("--"; in roman script, it is as wide as the letter "n"; LaTeX: '--'), 171 | and em dashes ("---"; as wide as "m"; LaTeX: '---'). 172 | 173 | Use hyphens to connect the terms in compound adjectives (see Section 174 | [Hyphens (§29)]). LaTeX also uses it for hyphenation at the end of a line. 175 | 176 | Use en dashes in word pairs, such as ``input--output system'' (avoid 177 | writing ``input/output system''). 178 | 179 | Use em dashes for bracketing tangential thoughts. Using em dashes 180 | highlights tangential material, whereas parentheses "()" downplays it. 181 | Note that there should not be whitespace next to em dashes---as in 182 | this example---because the em dash already provides enough separation. 183 | Em dashes are an excellent way to highlight clauses beginning with 184 | ``that is'' or ``for example.'' 185 | 186 | Quotation marks and quotations (§35, §41) 187 | ========================================= 188 | 189 | Use quotation marks only for quotations and for marking irony. Do not 190 | use quotation marks when introducing new terms; use _italic type_ in 191 | that case. 192 | 193 | In American English, commas and periods (but not semicolons or other 194 | punctuation) that would normally come after a quotation move into the 195 | quotation, ``as in this example.'' The exception to this rule is text 196 | for which a literal quotation is important---for example, for text 197 | that is intended to be typed into the reader's computer. 198 | 199 | (In British English and every other English dialect, commas and 200 | periods belong outside the quotation marks.) 201 | 202 | Solidus (slash) and word pairs (§117) 203 | ===================================== 204 | 205 | The forward slash (``/'') is an abbreviation for ``and or.'' 206 | 207 | Generally, you should avoid using the slash. When you mean ``and 208 | or,'' you usually can get away with just ``and.'' 209 | 210 | Do not use the slash to denote word pairs. Instead, use the en dash, 211 | as in ``input--output system,'' ``doctor--patient relationship'' (see 212 | Section [Em dashes and en dashes (§49, §77)]). 213 | 214 | Cap/lc: Capitalized section headings (§83) 215 | ========================================== 216 | 217 | The style in which section headings and captions are capitalized in a 218 | funny way is called _Cap/lc_. There are very precise rules on what to 219 | capitalize when using this style, and these rules are easy to get 220 | wrong or forget. Therefore, I suggest you do _not_ use this style for 221 | your headings and captions. 222 | 223 | If you really must use Cap/lc, look up the rules in [BugsInWriting], 224 | Segment 83. 225 | 226 | Like versus Such As (§27) 227 | ========================= 228 | 229 | Use ``such as'' to select examples of a group. Use ``like'' only for 230 | likeness, that is, when something resembles something else. 231 | 232 | Phrases to avoid 233 | ================ 234 | 235 | :as to whether (§50): 236 | Use ``whether.'' 237 | 238 | :different than (§61): 239 | Use ``different from.'' 240 | 241 | :is due to (§39): 242 | Do not use this phrase when you mean ``is caused by'' or ``was 243 | developed, written, invented, coined by.'' Instead, use phrases like 244 | ``stems from'' and ``originates in.'' Use ``is due to'' only when 245 | indicating reparations. 246 | 247 | :above and below (§48): 248 | Do not use these terms when referring to other sections or parts of 249 | your document. Instead, use phrases like ``Section 3,'' ``previous 250 | section'' and ``next section.'' 251 | 252 | :all of (§108): 253 | Just ``all'' suffices. 254 | 255 | :contractions (it's OK...) (§32): 256 | Do not use contractions such as ``it's'', ``he's'', ``haven't,'' or 257 | ``OK'' in formal writing. Always expand these terms. 258 | 259 | :is comprised of (§75): 260 | The whole is not ``comprised of'' the parts; instead, the whole 261 | comprises the parts. (Also, the parts constitute or make up the 262 | whole.) 263 | 264 | :around (§90): 265 | Use ``around'' only when referring to the surroundings of 266 | something. When giving imprecise numbers, use phrases like 267 | ``approximately,'' ``more or less,'' ``about,'' or ``roughly.'' 268 | 269 | :effort (§16): 270 | Use effort only when describing physical activity such as climbing a 271 | hill. In formal writing, you should avoid this cliché term. 272 | 273 | :equals (§57): 274 | The correct wording is ``is equal to.'' 275 | 276 | :impact (§25): 277 | Use impact only for physical encounters. Do not use this word when 278 | you mean ``influence'' or ``effect.'' 279 | 280 | :issue (§111): 281 | This is another cliché term you should avoid. Instead, state 282 | clearly and precisely what you actually mean---maybe a problem or a 283 | requirement? 284 | 285 | :the reason is because (§55): 286 | Use just ``because'' or ``the reason is.'' 287 | 288 | :the fact that (§66): 289 | Use just ``that'' or leave out the phrase. 290 | 291 | :though (§52): 292 | Use ``although.'' 293 | 294 | :utilize (§109): 295 | Normally, just ``use'' suffices. Use ``utilize'' only when 296 | activating something that is usually not used. 297 | 298 | 299 | ;Local Variables: 300 | ;mode:flyspell 301 | ;ispell-local-dictionary: "american" 302 | ;comment-start: ";" 303 | ;comment-start-skip: "; *" 304 | ;End: 305 | 306 | ; LocalWords: Hohmuth nonwords Solidus exempli gratia alii roman nonnuclear 307 | ; LocalWords: nonmonotonic usepackage 308 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/diction.c: -------------------------------------------------------------------------------- 1 | /* Notes */ /*{{{C}}}*//*{{{*/ 2 | /* 3 | 4 | This program is GNU software, copyright 1997-2004 5 | Michael Haardt . 6 | 7 | This program is free software; you can redistribute it and/or modify it 8 | under the terms of the GNU General Public License as published by the 9 | Free Software Foundation; either version 2 of the License, or (at your 10 | option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, but 13 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 | for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program. If not, write to the Free Software Foundation, Inc., 19 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 | 21 | */ 22 | /*}}}*/ 23 | /* #includes */ /*{{{*/ 24 | #undef _POSIX_SOURCE 25 | #define _POSIX_SOURCE 1 26 | #undef _POSIX_C_SOURCE 27 | #define _POSIX_C_SOURCE 2 28 | 29 | #include "config.h" 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #ifdef HAVE_GETTEXT 38 | #include 39 | #define _(String) gettext(String) 40 | #else 41 | #define _(String) String 42 | #endif 43 | #include 44 | #include 45 | #include 46 | #include 47 | #include 48 | 49 | #include "getopt.h" 50 | #include "misc.h" 51 | #include "sentence.h" 52 | /*}}}*/ 53 | /* types */ /*{{{*/ 54 | struct badPhrase 55 | { 56 | char *phrase; 57 | regex_t phrase_r; 58 | char *suggest; 59 | }; 60 | /*}}}*/ 61 | 62 | static int doubleWords=1; 63 | static char phraseLanguage[32]; 64 | static struct badPhrase *badPhrases=(struct badPhrase *)0; 65 | static int badPhraseCapacity=0; 66 | static int badPhraseSize=0; 67 | static int sentences,hits; 68 | 69 | static void loadPhrases(const char *file) /*{{{*/ 70 | { 71 | FILE *fp; 72 | char ln[1024]; 73 | char *tab; 74 | size_t l; 75 | int fix,j; 76 | 77 | if ((fp=fopen(file,"r"))==(FILE*)0) 78 | { 79 | fprintf(stderr,_("diction: Opening `%s' failed (%s).\n"),file,strerror(errno)); 80 | exit(1); 81 | } 82 | while (fgets(ln,sizeof(ln),fp)) 83 | { 84 | l=strlen(ln); 85 | if (l && ln[l-1]=='\n') ln[--l]='\0'; 86 | if (ln[0]) 87 | { 88 | int err; 89 | 90 | if (badPhraseSize==badPhraseCapacity) /* enlarge capacity */ /*{{{*/ 91 | { 92 | if ((badPhrases=realloc(badPhrases,(badPhraseCapacity=3*(badPhraseCapacity+32))*sizeof(struct badPhrase)))==(struct badPhrase*)0) 93 | { 94 | fprintf(stderr,_("diction: out of memory.\n")); 95 | exit(2); 96 | } 97 | } 98 | /*}}}*/ 99 | if ((tab=strchr(ln,'\t'))) 100 | { 101 | *tab='\0'; 102 | ++tab; 103 | } 104 | if ((badPhrases[badPhraseSize].phrase=malloc(strlen(ln)+1))==(char*)0) 105 | { 106 | fprintf(stderr,_("diction: out of memory.\n")); 107 | exit(2); 108 | } 109 | strcpy(badPhrases[badPhraseSize].phrase,ln); 110 | #if 0 111 | if ((err=regcomp(&badPhrases[badPhraseSize].phrase_r,ln,REG_EXTENDED))!=0) 112 | { 113 | char errmsg[1024]; 114 | 115 | regerror(err,&badPhrases[badPhraseSize].phrase_r,errmsg,sizeof(errmsg)); 116 | fprintf(stderr,_("diction: Compiling regular expression `%s' failed (%s).\n"),ln,errmsg); 117 | exit(2); 118 | } 119 | #endif 120 | if (tab) 121 | { 122 | if ((badPhrases[badPhraseSize].suggest=malloc(strlen(tab)+1))==(char*)0) 123 | { 124 | fprintf(stderr,_("diction: out of memory.\n")); 125 | exit(2); 126 | } 127 | strcpy(badPhrases[badPhraseSize].suggest,tab); 128 | } 129 | else badPhrases[badPhraseSize].suggest=(char*)0; 130 | ++badPhraseSize; 131 | } 132 | } 133 | /* resolve =phrase explainations */ /*{{{*/ 134 | for (fix=0; fixphrase; 175 | if (*badword==' ') /* beginning of sentence or word */ 176 | { 177 | if (s>sent && isalpha(*(s-1))) continue; 178 | ++badword; 179 | } 180 | str=s; 181 | while ((*badword==tolower(*str) || *badword==*str) && *badword && *str) { ++badword; ++str; } 182 | if ((*badword=='\0' && !isalpha(*str)) || (*badword=='~' && isalpha(*str))) 183 | { 184 | if (bp->suggest && *bp->suggest!='!') 185 | { 186 | ++hits; 187 | if (lastout==sent) printf("%s:%d: ",file,line); 188 | while (lastoutsuggest) 192 | { 193 | putc(' ',stdout); 194 | putc('-',stdout); 195 | putc('>',stdout); 196 | putc(' ',stdout); 197 | fputs(bp->suggest,stdout); 198 | } 199 | putc(']',stdout); 200 | } 201 | s=str-1; 202 | break; 203 | } 204 | } 205 | /*}}}*/ 206 | /* check for double words */ /*{{{*/ 207 | if (doubleWords) 208 | { 209 | const char *badword,*str; 210 | 211 | if (s>sent && !isalpha(*(s-1))) 212 | { 213 | /* move back to end of last word */ 214 | badword=s-1; 215 | while (badword>=sent && !isalpha(*badword)) --badword; 216 | if (badword>sent) 217 | { 218 | /* move back to begin of last word */ 219 | while (badword>=sent && isalpha(*badword)) --badword; 220 | if (!isalpha(*badword)) ++badword; 221 | str=s; 222 | while (*badword==*str && badword',stdout); 232 | putc(' ',stdout); 233 | fputs(_("Double word."),stdout); 234 | putc(']',stdout); 235 | lastWord=s; 236 | s=str-1; 237 | } 238 | } 239 | } 240 | } 241 | /*}}}*/ 242 | ++s; 243 | } 244 | ++sentences; 245 | if (lastout!=sent) 246 | { 247 | while (lastout.\n"),stdout); 352 | exit(0); 353 | } 354 | /*}}}*/ 355 | if (defaultPhrases[0]) loadPhrases(defaultPhrases); 356 | if (userPhrases) loadPhrases(userPhrases); 357 | sentences=0; 358 | hits=0; 359 | if (optind==argc) sentence("diction",stdin,"(stdin)",diction,phraseLanguage); 360 | else while (optind 295 | Copyright (C) 19yy 296 | 297 | This program is free software; you can redistribute it and/or modify 298 | it under the terms of the GNU General Public License as published by 299 | the Free Software Foundation; either version 2 of the License, or 300 | (at your option) any later version. 301 | 302 | This program is distributed in the hope that it will be useful, 303 | but WITHOUT ANY WARRANTY; without even the implied warranty of 304 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 305 | GNU General Public License for more details. 306 | 307 | You should have received a copy of the GNU General Public License 308 | along with this program; if not, write to the Free Software 309 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 310 | 311 | Also add information on how to contact you by electronic and paper mail. 312 | 313 | If the program is interactive, make it output a short notice like this 314 | when it starts in an interactive mode: 315 | 316 | Gnomovision version 69, Copyright (C) 19yy name of author 317 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 318 | This is free software, and you are welcome to redistribute it 319 | under certain conditions; type `show c' for details. 320 | 321 | The hypothetical commands `show w' and `show c' should show the appropriate 322 | parts of the General Public License. Of course, the commands you use may 323 | be called something other than `show w' and `show c'; they could even be 324 | mouse-clicks or menu items--whatever suits your program. 325 | 326 | You should also get your employer (if you work as a programmer) or your 327 | school, if any, to sign a "copyright disclaimer" for the program, if 328 | necessary. Here is a sample; alter the names: 329 | 330 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 331 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 332 | 333 | , 1 April 1989 334 | Ty Coon, President of Vice 335 | 336 | This General Public License does not permit incorporating your program into 337 | proprietary programs. If your program is a subroutine library, you may 338 | consider it more useful to permit linking proprietary applications with the 339 | library. If this is what you want to do, use the GNU Library General 340 | Public License instead of this License. 341 | -------------------------------------------------------------------------------- /checkbiw/contrib/diction/en: -------------------------------------------------------------------------------- 1 | a considerable amount of much 2 | a large number of many 3 | a lot of Often obsolete, should sometimes be replaced by "many" 4 | a majority of most 5 | a man who 6 | a matter of concern (cliche, avoid) 7 | a need for need 8 | a number of many, several 9 | a particular preference for 10 | a small number of few 11 | a tendency to 12 | ability to 13 | about which ! 14 | absolutely complete complete 15 | absolutely essential essential 16 | accomplish do 17 | accomplished did 18 | accounted for by the fact that caused by 19 | actually 20 | adequate (weak definition) 21 | adequate enough (weak definition) 22 | administrate administer 23 | affect "Affect" means "have an influence on", "produce an effect on", "concern", "effect a change in"; compare with "effect": "bring about", "cause", "produce, "result in." 24 | affected = affect 25 | affective "affective" or "effective"? 26 | after which ! 27 | all right (avoid) 28 | all things being equal (cliche, avoid) 29 | allude (an allusion is an indirect reference, while a reference is a direct reference) 30 | alluded = allude 31 | allusion = allude 32 | along the line (avoid) 33 | along the line of like (or omit) 34 | along the lines (avoid) 35 | along the lines of like (or omit) 36 | along these lines (overworked phrase, avoid) 37 | along those lines (avoid) 38 | alternate Alternative refers to choosing the other of two possibilities. Alternate refers to another element of a set, without connoting choice. 39 | alternative = alternate 40 | among Choose "between" 2 options and "among" 3 or more. 41 | an example of this is the fact that thus 42 | an indication of 43 | an order of magnitude faster 10 times faster 44 | and/or (avoid) 45 | anticipate Use "expect" for simple predictions and "anticipate" for more complex actions in advance of an event. 46 | anticipated = anticipate 47 | apparent that 48 | are of the same opinion agree 49 | arrive at a 50 | arrive at a decision decide 51 | as a consequence of because 52 | as a last resort (cliche, avoid) 53 | as a matter of fact in fact (or omit) 54 | as a minimum (weak definition) 55 | as a result so 56 | as already stated (use active instead of passive voice) 57 | as applicable (weak definition) 58 | as appropriate (weak definition) 59 | as can be seen from shows 60 | as good or better than (use "as good as or better than" or possibly rearrange the sentence) 61 | as is the case as happens 62 | as long as when, if 63 | as means of for, to 64 | as necessary 65 | as of this date today 66 | as per 67 | as shown in shows that 68 | as to about (or omit) 69 | as to whether whether 70 | as yet (you can often replace with simply "yet," except at the beginning of a sentence) 71 | ask the question ask 72 | assure (use "assure" with people, "ensure" with things, and "insure" when talking about money) 73 | assured = assure 74 | assuring = assure 75 | at above above 76 | at an earlier date previously 77 | at below below 78 | at present 79 | at the present 80 | at the present time now 81 | at the rate of 82 | at the same time as while 83 | at this point in time now 84 | at this time 85 | at which ! 86 | attached hereto (cliche, avoid) 87 | attempt try 88 | authorization 89 | avail yourself help 90 | based on the fact that because 91 | based on the fact, that because 92 | basic principles principles 93 | basically 94 | be able to (weak definition) 95 | be capable (weak definition) 96 | between (choose "between" 2 options and "among" 3 or more) 97 | between which ! 98 | bring to a conclusion conclude 99 | but not limited to (weak definition) 100 | by means of by, with 101 | by no means (cliche, avoid) 102 | by the use of by 103 | by which ! 104 | call your attention to the fact that remind you, notify you 105 | can (do not confuse with "may") 106 | can not (use "cannot" unless you want to put special emphasis on the word "not") 107 | capability of (weak definition) 108 | capability to (weak definition) 109 | carry out 110 | case Avoid if used to describe the instance of a situation. 111 | certainly Avoid if used to intensify any and every statement. 112 | character Often redundant, except when discussing role-playing games. 113 | check into check 114 | check on check 115 | check up on check 116 | claim Do not use as substitute for "declare", "maintain" or "charge." 117 | clear that 118 | clever Greatly overused word, restrict to small matters. 119 | clockwise ! 120 | collect together collect 121 | communicate with talk, telephone, write to 122 | comparatively Avoid unless really comparing. 123 | compare "Compare" to points out resemblances, "compare with" points out differences. 124 | compare with = compare 125 | compared = compare 126 | compared with = compare 127 | comparing = compare 128 | comparing with = compare 129 | complementary A "complimentary" comment is one which is flattering. A "complementary" comment is one which completes or complements another comment. 130 | completely full full 131 | complimentary = complementary 132 | comprise Only use in the meaning of including something. 133 | comprised = comprise 134 | comprising = comprise 135 | connected together connected 136 | consensus of opinion consensus 137 | consider Not followed by "as" when it means "believe to be". 138 | considered = consider 139 | considering = consider 140 | conspicious by its absence (cliche, avoid) 141 | contact When used as a transitive verb, "contact" is a poor choice. Get in touch with someone, or call them, instead of contacting them. 142 | contacted = contact 143 | contacting = contact 144 | cope Should generally be used along with the word "with". 145 | cope with ! 146 | coped = cope 147 | coped with ! 148 | could = can 149 | criteria = criterion 150 | criterion "Criterion" is singular, "criteria" is plural. 151 | currently Often redundant: This program is currently checking your document. 152 | data is data are 153 | deficiency lack 154 | definitely 155 | deleterious effect 156 | dependable reliable, trustworthy 157 | desert "Desert" and "dessert" are sometimes confused, to the delight of the masses. 158 | despite the fact that although, though 159 | despite the fact, that although, though 160 | dessert = desert 161 | different than Restrict to introducing a clause and use "different from" else. 162 | discontentment discontent 163 | disinterest Synonym for "impartial", do not confuse with "uninterested." 164 | disinterested = disinterest 165 | disinteresting = disinterest 166 | doubt but doubt 167 | doubtful that 168 | due to Synonym for "attributable to", often confused with "through, because of, owing to." 169 | due to the fact that because 170 | due to the fact, that because 171 | during the course of during, while 172 | during the time that while 173 | each and every one (avoid) 174 | easier said than done (cliche, avoid) 175 | easy (weak definition) 176 | effect = affect 177 | effected = effect 178 | effecting = effect 179 | effective (weak definition) 180 | elucidate explain 181 | elucidated = elucidate 182 | elucidating = elucidate 183 | enclosed herewith (cliche, avoid) 184 | end result result 185 | enormity Restrict to connoting abnormality or something more unusual than mere size. 186 | ensure = assure 187 | ensured = assure 188 | ensuring = assure 189 | enter in enter 190 | enter into enter 191 | enthuse (avoid) 192 | enthused = enthuse 193 | enthusing = enthuse 194 | entirely eliminate eliminate 195 | equitable fair 196 | essentially 197 | etc "Etc" should be avoided in formal writing. 198 | etc. Do not use for persons or if "and the rest, and so forth" is insufficient and at the end of lists started with "such as, for example." Avoid in formal writing. 199 | evident that 200 | exactly equal equal 201 | exception of 202 | expect = anticipate 203 | expect = anticipate 204 | expected = anticipate 205 | expected = anticipate 206 | expecting = anticipate 207 | experimentalize experiment 208 | fabricate make 209 | face up to face 210 | facilitate help 211 | facilitated = facilitate 212 | facilitating = facilitate 213 | facility Substitute if you can name the object. 214 | fact Restrict use to matters that can be verified. 215 | factor "component", "ingredient" or "element" outside mathematical contexts 216 | fairly 217 | farther "Farther" denotes distance, "further" denotes time or quantity. 218 | fewer Use "fewer" for numbers and "less" for quantities. 219 | finalise = finalize 220 | finalised = finalized 221 | finalising = finalizing 222 | finalize end (or avoid) 223 | finalized = ended (or avoid) 224 | finalizing = ending (or avoid) 225 | find it interesting to know Avoid 226 | first of all first 227 | firstly first 228 | folks Avoid using "folks", when writing formally, to refer to your family or friends. 229 | for the purpose of for 230 | for the reason that since, because 231 | for the reason, that since, because 232 | for this reason since, because 233 | for this reason so 234 | for which ! 235 | for your information 236 | formalize Rewrite. 237 | fortuitous A fortuitous event has the connotation of being an unexpected accident. 238 | fortuitously = fortuitous 239 | forward send (if used as verb) 240 | from the point of view of for 241 | from which 242 | fuller A fuller is a hammer for spreading iron. You can't "fill your glass fuller." 243 | funny Avoid "funny" when introducing something. Simply introduce it. 244 | further = farther 245 | give an indication of indicate 246 | give encouragement to encourage 247 | give rise to cause 248 | got to 249 | gotten The preferred form of this participle is "got," but it is unpleasant to the ear in either form. 250 | gratuitous Synonym for "unearned" or "unwarranted", do not confuse with "free." 251 | gratuitously = gratuitous 252 | gratuitousness = gratuitous 253 | grow Often misused as a transitive verb: You cannot `grow the economy'. In addition, you should not try `to grow the economy', even if you are President Clinton. Instead, you should endeavor to expand the economy, or stimulate economic growth. 254 | hardy A "hardy" person can survive hardship. A "hearty" meal is a hourishing one. 255 | has the capability of can 256 | having regard to about 257 | he is a man who he 258 | hearty = hardy 259 | help but 260 | hollow tube tube 261 | hopefully Restrict to "with hope", do not confuse with "I hope." Best avoid it. 262 | however Means "in whatever way, to whatever extent" inside a sentence and "nevertheless" at the beginning of a sentence. 263 | if and when (cliche, avoid) 264 | if practical (weak definition) 265 | impact Use something more precise, unless you are discussing a physical collision. 266 | impacted = impact 267 | impacting = impact 268 | implied = imply 269 | imply Something that is suggested is "implied", whereas something that is deduced is "inferred". 270 | implying = imply 271 | importantly (avoid) 272 | importantly Rewrite. 273 | in a hasty manner hastily 274 | in a number of cases some 275 | in a position to can, may 276 | in a satisfactory manner satisfactorily 277 | in a very real sense in a sense (or omit) 278 | in accordance 279 | in all probability probably 280 | in an area where where 281 | in an effort to to 282 | in case if 283 | in close proximity close, near 284 | in close proximity to close to, near to 285 | in color 286 | in connection with about, concerning 287 | in fact 288 | in large measure largely 289 | in length 290 | in many cases often 291 | in my opinion it is not an unjustifiable assumption that I think 292 | in number 293 | in order to to 294 | in point of fact 295 | in reference to (cliche, avoid) 296 | in reference to concerning, about 297 | in regard to = in regards to 298 | in regards to as regards, in regard to, about or another simple preposition 299 | in relation to toward, to 300 | in respect to about 301 | in short supply (cliche, avoid) 302 | in size 303 | in some cases sometimes 304 | in spite of the fact that though, although 305 | in such a manner 306 | in terms of in, for, about (or avoid) 307 | in the course of during 308 | in the direction of toward 309 | in the event 310 | in the event that if 311 | in the final analysis Avoid by rewriting the sentence. 312 | in the foreseeable future (cliche, avoid) 313 | in the form of as 314 | in the last analysis 315 | in the light of the fact that because 316 | in the long run (cliche, avoid) 317 | in the majority of cases usually, generally 318 | in the majority of instances usually, generally 319 | in the matter of (cliche, avoid) 320 | in the nature of like 321 | in the neighborhood of about,approximately,near 322 | in the possession of has, have 323 | in the vicinity of about,approximately,near 324 | in view of the fact that since, as, because 325 | in which ! 326 | inasmuch as for, as 327 | indicative of 328 | infamous Synonym for "disreputable and widely known." 329 | infamously = infamous 330 | infer = imply 331 | inferred = imply 332 | inferring = imply 333 | inflammable Only use as synonym for flammable or combustible. 334 | infrequent rare 335 | initiate begin, start 336 | initiating beginning, starting 337 | inside When inside is used as an adverb, add the word "of": I will be there inside of an hour. 338 | inside of When inside is used as a preposition, the word "of" is not needed: I walked inside the building. 339 | insightful Consider substituting "perceptive". 340 | interesting Avoid using "interesting" when introducing something. Simply introduce it. 341 | into which ! 342 | involve the necessity of demand, require 343 | irregardless regardless 344 | is defined as is 345 | is designed to be is 346 | is equipped with has 347 | is used to 348 | is used to control controls 349 | is when Only use to denote time; do not use in definitions. 350 | is where Only use to denote place; do not use in definitions. 351 | it can be seen that thus, so 352 | it has long been known that I haven't bothered to look up the reference. 353 | it is apparent that apparently 354 | it is believed that I think 355 | it is clear that clearly 356 | it is considered desirable I or we want to 357 | it is doubtful that possibly 358 | it is evident that 359 | it is of interest to note that 360 | it is often the case that often 361 | it is suggested that I think 362 | it is worth pointing out in this context that note that 363 | it may be that I think 364 | it may, however, be noted that but 365 | it should be noted that note that (or leave out) 366 | it stands to reason 367 | it stands to reason (cliche, avoid) 368 | it was observed in the course of the experiments that we observed 369 | it's = "it is" or "its"? 370 | its = it's 371 | join together join 372 | kind of Do not use as substitute for "rather" or "something like." 373 | lacked the ability to could not 374 | large number of many 375 | last but not least (avoid) 376 | later on later 377 | lay A transitive verb, not to be confused with the intransitive verb "lie". You "lie" down, and you "lay" an egg. However, note that the past tense of ``lie'' is ``lay'': Yesterday, I lay down and laid an egg. 378 | lead The past tense of the verb "lead" is "led". 379 | leave Do not use as substitute for "let:" Let go of my hand! Let it be! 380 | led = lead 381 | less Use "less" for quantities and "fewer" for numbers. 382 | like Substitute by "as" before phrases or clauses: Our love was beautiful, as love was meant to be. 383 | liken Avoid using the verb "liken," it is ugly. 384 | likewise ! 385 | literal = literally 386 | literally Do not use to support exaggeration. 387 | little data few data 388 | little doubt that 389 | loan Only use as a noun. "Lend" is a verb. 390 | loath = loathe 391 | loathe Only use as a verb, "loath" is an adjective. 392 | loose As a verb, it means "to release", but it can also be used as adverb. It is not a tense of "lose." 393 | loosed = loose 394 | loosing = loose 395 | lose out Means less than "lose" because of its commonness. 396 | low quantity small quantity 397 | majority of most 398 | make a 399 | make an 400 | make an adjustment in adjust 401 | manner 402 | many and diverse (cliche, avoid) 403 | may = Do not confuse with "can". 404 | may be that 405 | meaningful significant or rewrite, because it is an overused word 406 | meaningfully = meaningful 407 | memoranda "Memorandum" is singular, "memoranda" is plural. 408 | memorandum = memoranda 409 | might = can 410 | might of might have 411 | militate against prohibit 412 | minor importance 413 | mislead = lead 414 | misled = lead 415 | momento Use memento instead, even if Webster's claims momento is a word. 416 | momentos = momento 417 | most Do not use as substitute for "almost." 418 | mostly (avoid) 419 | much data many data 420 | nature Omit if redundant. 421 | nauseous Synonym for "sickening", do not confuse with the adjective "sick" or the verb "nauseate." 422 | near by near, near at hand, close by, hard by 423 | need for 424 | needless to say (avoid and consider leaving out what follows) 425 | neither Should be followed by "nor" instead of "or". 426 | nice Use a more exact word. 427 | nor Restrict to following "neither", but do not use instead of "or" in negative expressions. 428 | normal (weak definition) 429 | not under 430 | not unique 431 | not until 432 | notorious = infamous 433 | notorious = infamous 434 | notoriously = infamous 435 | notwithstanding 436 | notwithstanding the fact that although 437 | obselete Using obselete as a verb is ugly. 438 | obseleted = obselete 439 | obseleting = obselete 440 | occurrence event 441 | of great theoretical and practical importance useful 442 | of interest 443 | of the opinion that 444 | of the same opinion 445 | of which ! 446 | oftentimes often 447 | ofttimes often 448 | on a daily basis daily 449 | on account of because 450 | on behalf of for 451 | on the basis of by 452 | on the grounds that since, because 453 | on the occasion 454 | on the order of magnitude of about 455 | on the part of by, among, for 456 | on the part on 457 | on the right track (cliche, avoid) 458 | on which ! 459 | one When used as a pronoun, it must be used consistently: One must manage one's money carefully. 460 | one of the most Do not use at the beginning of a paragraph, best avoid at all because it is an overused phrase. 461 | ongoing (avoid) 462 | only Put "only" right before the word it modifies. 463 | oral = verbal 464 | orientated oriented 465 | otherwise ! 466 | over which ! 467 | owing to the fact that since, because 468 | par for the course (cliche, avoid) 469 | perform do 470 | payed "Payed" is only used to refer to extending a rope. The past tense of "pay" is "paid." 471 | people Do not use with numbers or as substitute for "public". 472 | performed done 473 | personal opinion opinion 474 | personalize (avoid) 475 | personalized = personalize 476 | personalizing = personalize 477 | personally (avoid) 478 | pertaining to about, on 479 | phase Do not use as substitute for "aspect, topic". 480 | plum Do not confuse the fruit "plum" with "plumbing" a depth. 481 | plumb = plum 482 | plumed = plum 483 | pluming = plum 484 | plums = plum 485 | please feel free to (cliche, avoid) 486 | pooled together pooled 487 | possess Do not use as substitute for "have" or "own." 488 | possessed = possess 489 | possessing = possess 490 | powerful Overused, especially in computer industry press releases. 491 | precede Synonym for "to come before," do not confuse with "proceed." 492 | previous to, prior to before 493 | prior to before 494 | pursuant to your request (cliche, avoid) 495 | presently (do not use as substitute for "now", restrict to synonym for "soon") 496 | prestigious (an overused word) 497 | preventative preventive 498 | principal (a "principle" is a rule, while a "principal" is a person, when used as a noun, or means "chief", when used as an adjective, and the adverb for both words is spelt "principally") 499 | principally = principal 500 | principals = principal 501 | principle = principal 502 | principles = principal 503 | principlly = principal 504 | proceed to 505 | provide for (weak definition) 506 | put to use in building build 507 | put to use in measuring measure 508 | quite 509 | rather 510 | rather than 511 | reason is because reason is that, because 512 | reason to believe 513 | reason why reason 514 | refer = allude 515 | reference to this 516 | referred = allude 517 | referring = allude 518 | referred to as called 519 | regarding the matter of (cliche, avoid) 520 | relative to about 521 | register up (means less than "register" because of its commonness) 522 | regress back = revert back 523 | regressed back = revert back 524 | regressing back = revert back 525 | regretful (do not use as substitute for "regrettable") 526 | regretfully = regretful 527 | reinitiate start again 528 | reinitiated restarted 529 | reinitiating restarting 530 | relate (do not use as an intransitive verb: "I get along well with my advisor" instead of "I relate well to my advisor") 531 | related = relate 532 | relating = relate 533 | repeat the same repeat the 534 | representative of represents 535 | requisite required 536 | respective 537 | respectively 538 | revert back ("revert" means "to go back", so this expression is redundant) 539 | reverted back = revert back 540 | reverting back = revert back 541 | rise to 542 | secondly second 543 | shall (shall is sometimes used with first person pronouns and the future tense. It expresses something you believe will happen, not something that you are determined to do. A drowning man shouts: "I shall drown, no one will save me!") 544 | should of should have 545 | sight = site 546 | sign up (means less than "sign" because of its commonness) 547 | site (a "site" is a place, a "sight" is related to "seeing") 548 | situation (rewrite) 549 | so (do not use as intensifier) 550 | so as to to 551 | so on ! 552 | so that ! 553 | sophisticated 554 | sort of (do not use as substitute for "rather" or "something like") 555 | slowly but surely (cliche, avoid) 556 | small concentration low concentration 557 | sufficient enough 558 | state (if used as a verb, restrict to the meaning of "express fully or clearly") 559 | stated = state 560 | stating = state 561 | still continue continue 562 | still continues continues 563 | strata = stratum 564 | stratum ("stratum" is singular, "strata" is plural) 565 | student body students 566 | subsequent to after 567 | subsequently to = subsequent to 568 | succeed in 569 | suggested that 570 | suggestive of 571 | system Frequently used without need. 572 | take appropriate 573 | take into consideration consider 574 | terminate end 575 | terminated ended, stopped 576 | terminating ending, stopping 577 | termination end 578 | than (examine sentences containing "than" to insure that they are not missing words: I love my father more than my mother. I love my father more than my mother loves my father. I love my father more than I love my mother) 579 | thank you in advance = thanking you in advance 580 | thanking you in advance (write "thanking you" or "your attention to this matter would be appreciated" and acknowledge granted favors) 581 | the author I 582 | the authors we 583 | the case that 584 | the fact 585 | the fact is (avoid) 586 | the fact that 587 | the fact was (avoid) 588 | the foreseeable future soon, the future 589 | the fullest possible extent most, completely or fully (or omit) 590 | the great majority of most 591 | the opinion is advanced that I think 592 | the nature 593 | the necessity of 594 | the order of 595 | the point that 596 | the reason is because because 597 | there is reason to believe I think 598 | the question as to whether whether, the question whether 599 | the truth is (a bad way to start a sentence) 600 | the truth was = the truth is 601 | there are (a dead phrase; rewrite the sentence and it will probably improve) 602 | there are not many few 603 | there is = there are 604 | there is no doubt that no doubt, doubtless 605 | there was = there are 606 | they (do not use as substitute for "each, each one, everybody, every one, anybody, any one, somebody, some one") 607 | thirdly third 608 | this is a subject which this subject 609 | this will acknowledge (cliche, avoid) 610 | through the use of by, with 611 | through which ! 612 | thrust (use sparingly, unless you are writing a romance novel) 613 | timely (weak definition) 614 | to which ! 615 | tortuous ("tortourous" involves torture, while "tortuous" merely involves twist) 616 | torturous = tortuous 617 | transition (only use as a noun) 618 | transitioned = transition 619 | transitioning = transition 620 | transpire (restrict to "become known", do not confuse with "happen" or "occur") 621 | transpired = transpire 622 | transpiring = transpire 623 | try and ("try" should be followed by an infinitive, not the word "and") 624 | try out (means less than "try" because of its commonness) 625 | type (do not use as synonym for "kind of") 626 | under which ! 627 | ultimate last 628 | unique ("unique" or "uncommon"?) 629 | uniquely = unique 630 | uniqueness = unique 631 | upon which ! 632 | upshot 633 | use to ("use to" or "used to"?) 634 | used for (used for [...] purposes: used for [...]) 635 | utilize use 636 | utilize use 637 | utilized used 638 | utilizing using 639 | varying (use "various" if a finite number of constant instances is meant) 640 | was of the opinion that believed 641 | we are pleased to advice (cliche, avoid) 642 | we have insufficient knowledge we don't know 643 | we wish to state (cliche, avoid) 644 | we wish to thank we thank 645 | varying amounts of varying 646 | verbal ("verbal" can be either spoken or written down, "oral" refers to the mouth) 647 | very (use sparingly; try to use words that are strong in themselves for emphasis) 648 | viewpoint point of view (do not use as substitute for "view, opinion") 649 | vital important 650 | whether (avoid using "or not" after "whether," unless you mean "regardless of whether") 651 | whether or not (restrict to synonym for "regardless of whether" else simply use "whether") 652 | which (use "that" if clause is restrictive) 653 | which was (often superfluous) 654 | while (if used as substitute for "and, but" then replace by semicolon, do not use as substitute for "although" as it leads to ambiguity or absurdity, best use it only in the sense of "during the time that") 655 | who is (often superfluous) 656 | whom (often incorrectly used for "who") 657 | will = shall 658 | win out (means less than "win" because of its commonness) 659 | wish to thank thank 660 | with regard to concerning, about (or leave out) 661 | with respect to about 662 | with a view to to 663 | with reference to concerning, about 664 | with the exception of except 665 | with which ! 666 | with the aid of with 667 | with the possible exception of except 668 | with the result that so, therefore 669 | without which ! 670 | worth pointing out 671 | worth while (restrict to actions, do not use for approval and consider using a stronger word) 672 | worthwhile (only apply to actions and consider using a stronger word instead) 673 | would (use "should" if used as conditional statement in the first person or for "shall" in indirect quotation after a verb in past tense. Consider omitting it for repeated actions) 674 | would of would have 675 | would seem to indicate indicates 676 | you are hereby adviced (cliche, avoid) 677 | inflammable (better use the preferred synonym "flammable", do not confuse with "combustible") 678 | ing behavior (avoid the term [...]ing behaviour) 679 | unwise (avoid words that end in -unwise) 680 | wise (avoid words that end in -wise) 681 | --------------------------------------------------------------------------------