summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/manuscript/manuscript.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/manuscript/manuscript.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/manuscript/manuscript.dtx')
-rw-r--r--macros/latex/contrib/manuscript/manuscript.dtx361
1 files changed, 361 insertions, 0 deletions
diff --git a/macros/latex/contrib/manuscript/manuscript.dtx b/macros/latex/contrib/manuscript/manuscript.dtx
new file mode 100644
index 0000000000..b77c9d43ec
--- /dev/null
+++ b/macros/latex/contrib/manuscript/manuscript.dtx
@@ -0,0 +1,361 @@
+% \CheckSum{138}
+% \iffalse
+%% Copyright (C) 2002 Matej Cepl
+%% $Id: manuscript.dtx,v 1.6 2005/09/02 12:08:35 matej Exp $
+%% This program may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.2
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%<*package>
+\NeedsTeXFormat{LaTeX2e}[1996/06/01]
+\ProvidesPackage{manuscript}
+%</package>
+%<*!package>
+\ProvidesFile {manuscript.dtx}
+%</!package>
+ [2015/01/19 1.7 emulate typesetting of typewriter]
+%<*driver>
+\documentclass{ltxdoc}
+\EnableCrossrefs
+\RecordChanges
+\CodelineIndex
+\begin{document}
+ \DocInput{manuscript.dtx}
+\end{document}
+%</driver>
+%<*!driver>
+% \fi
+
+% \DoNotIndex{\@empty,\@ifundefined,\AtBeginDocument,\def,\else}
+% \DoNotIndex{\ExecuteOptions,\fi,\huge,\hyphenpenalty,\ifMS@ps}
+% \DoNotIndex{\LARGE,\let,\MS@psfalse,\MS@pstrue,\MS@maketitle}
+% \DoNotIndex{\newif,\ProcessOptions,\relax,\renewcommand,\RequirePackage}
+% \DoNotIndex{\typearea,\usefont}
+% \DoNotIndex{\MS@quote,\MS@questquote,\MS@next,\MS@dblq,\MS@sglq}
+% \changes{1.0}{2002 May 20}{Initial version}
+% \changes{1.2}{2002 May 22}{\cs{fileversion} and \cs{filedate}
+% which does not seem to work at all being replaced by \cs{RCS}
+% command from \texttt{rcs} package.}
+% \changes{1.4}{2002 May 23}{With help of Stepan Kasal (stepan at
+% matsrv dot mat dot cas dot cz) I have managed to get
+% \cs{fileversion} working, so I have get rid off rcs.sty again.}
+% \changes{1.5}{2003 June 26}{Something happened to all |fi|.}
+% \changes{1.7}{2015 Januar 19}{New upload to CTAN and fix \TeX{} logo}
+% \GetFileInfo{manuscript.dtx}
+% \title{\bfseries \texttt{Manuscript}---A Package Emulating
+% Typewriter ``Typesetting''}
+% \author{Mat\v{e}j Cepl, \texttt{matej at ceplovi dot cz}}
+% \date{This document describes package \texttt{manuscript}\\
+% version \fileversion, from \filedate}
+% \maketitle
+% \MakeShortVerb{\|}
+%
+% \changes{1.5}{2003 June 26}{Whole this section was
+% substantially rewritten---coming from defensive to the
+% offensive |:-)|.}
+% \section{Purpose}
+% Purpose of this package is to emulate appearance of the
+% document written on classical typewriter as much as possible.
+% So far, whenever backward requirement of some institutions
+% (especially universities) to provide paper or thesis in the
+% layout developed in times before personal computers emerges on
+% any \TeX{}-related public forum, it is met with strong (and
+% sometimes even angry) resistance and many advise how to
+% overcome resistance of the institution. I totally agree with
+% the basic premise of this attempt (of course, \TeX\ was created
+% for making ``masterpieces of typography'' not to emulate
+% typewriters).
+%
+% \changes{1.6}{2011 January 27}{Some typos corrected.}
+% Having said that, this package goes exactly in the opposite
+% direction than these people advise. Instead of trying to avoid
+% typewriter-driven layout, it tries to emulate it as much as
+% possible. Of course, the most important motivation for such
+% package is challenge and curiosity how far I can get
+% using just \TeX\ tools in this endeavor. However, there are
+% also some real reasons why this package might be useful. First
+% of all there are situations when the directives of backward
+% layout are non-negotiable (e.\,g.,~in commercial setting or
+% with too stiff university). Moreover, my conciliatory character
+% leads me more to honor other cultures (and although very
+% short-lived and feeble, there \emph{was} a typographical
+% culture of typewriters) rather then rejecting them. Actually,
+% during work on this package my appreciation of strict
+% puritanical simplicity of typewriters just grew
+% (and of course, it is obvious that in some aspects typesetting
+% documents with this package would create documents of the
+% quality never possible with a real typewriter---just \TeX{}'s
+% optimal line breaking with few divided words makes a lot of
+% difference).
+%
+% If you like it, enjoy! If not, sorry, just use another
+% package.
+%
+% Another objective was to secure compatibility both with
+% classical |article|-like packages as well as with packages from
+% |Koma-script| family.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{The Coding}
+%
+% \begin{macro}{MS@ps}
+% The first of all we need to create new condition |MS@ps| to
+% control package options---whether font Courier should be used
+% (if true) or |cmtt|. We cannot use |ifthen| package as it
+% redefines catcodes and conflicts with the redefinition of
+% quotes for |cmtt| font (see below).
+% \begin{macrocode}
+\newif\ifMS@ps
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DeclareOption}
+% \begin{macro}{\ExecuteOptions}
+% \begin{macro}{\ProcessOptions}
+% Declare the options by setting |MS@ps| variable. The options
+% |cm| and |cr| set use of font |cmtt| or Courier, respectively.
+% We want to use Courier as default option.
+% \begin{macrocode}
+\DeclareOption{cm}{\MS@psfalse}
+\DeclareOption{cr}{\MS@pstrue}
+\ExecuteOptions{cr}
+\ProcessOptions\relax
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% We need to read some additional packages which are needed for
+% good working of the package: |setspace| because whole document
+% should be doublespaced (except for footnotes etc.), |fontenc|
+% because we should be able to print all European characters (it
+% could be redefined in the document itself \emph{after} loading
+% |manuscript| package, and |ragged2e| because of linebreaking
+% and ragged justification.
+% \begin{macrocode}
+\RequirePackage{setspace}
+\RequirePackage[T1]{fontenc}
+\RequirePackage[NewCommands]{ragged2e}
+\RequirePackage{soul}
+% \end{macrocode}
+%
+% \begin{macro}{\rmdefault}
+% \changes{1.5}{2003 June 26}{With CM-Super we need not \cs{ae}
+% package anymore.}
+% We need to set up the default font for Roman characters based
+% on the boolean variable |MS@ps|.
+% \begin{macrocode}
+\ifMS@ps
+ \renewcommand{\rmdefault}{pcr}
+\else
+ \renewcommand{\rmdefault}{cmtt}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\descfont}
+% \begin{macro}{\sectfont}
+% \changes{1.4}{2002 May 25}{Courier is better, so that this hack
+% is better to be used only for \texttt{cmtt} font.}
+%
+% There is no bold in |cmtt|, so that I redefine also some
+% fonts---usefull only for koma-script package, because I do not
+% care too much for |article| |:-)|.
+% \begin{macrocode}
+\@ifundefined{scr@parskip}{}{%
+ \renewcommand*{\descfont}{\scshape}
+ \renewcommand*{\sectfont}{\large\scshape} }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\MS@q*}
+% \begin{macro}{``}
+% \begin{macro}{'}
+% This is the most obscure part of the package.\footnote{I have
+% recieved substantial help with the deep \TeX\ work from
+% Ond\v{r}ej ``Koala'' V\'acha. Thank you.} There are no problems
+% with |Courier| font, but |cmtt| does not have some characters
+% needed for normal writing---especially quotes. We have to
+% change catcode of , and ` characters and redefine couples of
+% these characters to be printed in |cmss| font in the Old
+% Knuth's coding OT1.
+%
+% Moreover, and it was the bug in the previous version, we have
+% to distinguish between single quote and double quote, where
+% each of them should be printed as different character. Now, it
+% is getting to be really messy |:-)|.
+%
+% \changes{1.5}{2003 June 26}{CM-Super fonts work even without
+% this kludge.}
+% \changes{1.4}{2002 May 22}{There is really no need to use
+% \cs{gdef}, when \cs{def} is sufficient.}
+% \changes{1.2}{2002 May 22}{Macro \cs{`} is protected.
+% Unbelieavable construction in the \cs{change} changed to use
+% \cs{cs} macro.}
+% \changes{1.1}{2002/05/21}{Whole group of
+% \cs{MS@*} macros in this section was added. The previous
+% version did not allow use of single apostrophe.}
+% \begin{macrocode}
+\iffalse
+ \catcode96=13
+ \def``{{\usefont{OT1}{cmss}{m}{n}\symbol{92}}}
+ \catcode39=13
+ \def'{\protect\MS@quote}
+ \def\MS@quote{\futurelet \nextchar \MS@questquote}
+ \def\MS@questquote{\ifx `\nextchar \let\MS@next=\MS@dblq
+ \else \let\MS@next=\MS@sglq
+ \fi \MS@next}
+ \def\MS@dblq{{\usefont{OT1}{cmss}{m}{n}\symbol{125}}}
+ \def\MS@sglq{{\usefont{OT1}{cmss}{m}{n}\symbol{39}}}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\sfdefault}
+% \begin{macro}{\ttdefault}
+% Of course, in typewritter there are no different fonts for
+% sans-serif characters and there is no distinction between
+% normal and |tt| characters, thus both of these are set to be
+% same as roman characters.
+% \begin{macrocode}
+\renewcommand{\sfdefault}{\rmdefault}
+\renewcommand{\ttdefault}{\rmdefault}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+% \begin{macro}{typearea}
+% Of course, typewritter should follow classical ``one inch on
+% all sides'' margins (later, variant supporting European
+% equivalent on A4 paper may be added). The best is to use
+% special package |fullpage|. However, that does not work well
+% with |koma-script| family of packages, there we have to
+% distinguish between the two and use macro |\typearea| native of
+% |koma-script|.
+% \begin{macrocode}
+\@ifundefined{typearea}
+ {\RequirePackage{fullpage}}
+ {\typearea[0pt]{13}}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\textbf}
+% \begin{macro}{\bfseries}
+% \begin{macro}{\emph}
+% \begin{macro}{\em}
+% Italic characters are not enough distinctive in |cmtt| font, so
+% we shall redefine macro |\emph| to be same as in the
+% typewritter age---underlining characters.
+% \changes{1.5}{2003 June 26}{It is handy redefine |em| as
+% well---thanks to Petr Ol\v{s}\'ak for this. Also redefine
+% bold to small caps.}
+% \begin{macrocode}
+\renewcommand{\textbf}[1]{\textsc{#1}}
+\def\bfseries{\scshape}
+
+\AtBeginDocument{%
+ \setul{0.3ex}{0.15ex}
+ \renewcommand{\emph}[1]{\ul{#1}}
+ \def\em{\egroup \expandafter \ul \expandafter{\iffalse}\fi}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+% \begin{macro}{\spaceskip}
+% There are some additional characteristics which should be
+% set-up emulating behavior of typewritter: footnotes should be
+% set in the normal-size font, document should be double-spaced,
+% ragged right. Space between characters have to be set via
+% |\spaceskip|---it is zero on default for |tt| fonts.
+% \begin{macrocode}
+\let\footnotesize\@empty
+\doublespacing
+\AtBeginDocument{%
+ \raggedright
+ \parindent 1em
+ \spaceskip .333333 em plus .333333 em minus .111111 em }
+% \end{macrocode}
+% \end{macro}
+%
+
+% \begin{macro}{\thefootnote}
+% \begin{macro}{\@makefnmark}
+% \begin{macro}{\@makefntext}
+% If the idea of the whole package is to emulate typewriter
+% style, then we have to do something about footnotes. There is
+% obviously nothing like superscripted footnote mark on
+% typewriters. Moreover, I have also changed indentation of the
+% body of footnote.
+%
+% \changes{1.5}{2003 June 26}{Whole redefinition of footnotes
+% added.}
+% \begin{macrocode}
+\def\thefootnote{\@arabic\c@footnote/}
+\def\@makefnmark%
+ {\hbox{\normalfont\@thefnmark}}
+\renewcommand\@makefntext[1]{%
+ \leftskip 1.8em \noindent
+ \llap{\normalfont\@thefnmark\ }#1}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@maketitle}
+% \changes{1.5}{2003 June 26}{When \cs{titlepage} option is on,
+% we need not singlespacing.}
+% The standard titlehead of the document is really ugly when
+% doublespaced. Therefore we should redefine |\@maketitle| macro.
+% However, the trick below (creation of new macro which envelopes
+% the original macro) is better, because it is compatible both
+% with standard |article|-like classes and |koma-script| family.
+% Redefinition of |\huge| is a kind of ugly hack, but it should
+% be enough robust and simple to be OK.
+% \begin{macrocode}
+\let\MS@maketitle=\@maketitle
+ \if@titlepage
+ \def\@maketitle{%
+ \hyphenpenalty=5000
+ \let\huge\LARGE
+ \MS@maketitle }
+ \else
+ \def\@maketitle{%
+ \singlespacing
+ \hyphenpenalty=5000
+ \let\huge\LARGE
+ \MS@maketitle }
+ \fi
+% \end{macrocode}
+% \end{macro}
+%
+% That's all folks! |:-)|
+% \Finale
+%\iffalse
+%</!driver>
+%\fi