%% File `memucs-setspace.sty` %% %% Copyright (c) 2007-2024 Kangsoo Kim %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c %% 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.3c or later is part of all distributions of LaTeX %% version 2006/05/20 or later. %% %% ======================= %% %% 이 스타일은 setspace 6.7을 바탕으로, memoir의 %% 출력루틴을 hooking하여 거의 동일하게 동작하도록 %% 수정한 스타일이다. %% memoir 클래스에서 memhangul 스타일을 사용했을 때 %% 불린다. 다른 용도로는 사용할 수 없음. %% %% This style is a modified version of SETSTYLE ver 6.7 by Erica M. S. Harris %% by Karnes Kim %% %% FEATURES: %% all the features of setstyle package %% %% NEW FEATURES: %% %% 1. [nofloatspacing] option %% disables the feature of SETSTYLE, turning off all the line spacing %% in the floats(figures, tables) and footnotes. %% \noadjustfloatfnspacing, \adjustfloatfnspacing %% 2. [hangul] option %% When [hangul] option is on, the basic line spreading is set to %% a proper line spacing in Korean(Hangul) documents, which has %% a wider gap between the lines. %% \SetHangulspace %% 3. quote and quotation environment %% quote and quotation environment have the same line spacing %% with the floats and footnotes, verse. %% \noadjustquotespacing, \adjustquotespacing %% 4. [adjustfootnotesep] option %% this option is meaningful only when [hangul] is on and %% [nofloatspacing] off. %% 5. [adjustverbatim] option. %% verbatim environment. %% \SetHangulVerbatimSpace. %% 6. \ResetHangulspace, \RestoreHangulspace %% \NeedsTeXFormat {LaTeX2e}[1994/12/09] \def \filename {memucs-setspace.sty} \def \filedate {2024/02/01} \def \fileversion {6.7-mu10} \ProvidesPackage {memucs-setspace}[\filedate\space\fileversion\space Contributed and Supported LaTeX2e package] %\typeout {Package: `memucs-setspace', a modified version of `setspace', \fileversion\space <\filedate>} % BP: add nodisplayskipstretch option and \setdisplayskipstretch command. \providecommand{\displayskipstretch}{\baselinestretch} \providecommand{\setdisplayskipstretch}[1]{\renewcommand{\displayskipstretch}{#1}} \DeclareOption{nodisplayskipstretch}{\setdisplayskipstretch{1.0}} % GT: add George Pearsons' suggested options. %% Karnes' \newif\if@singlespacefn \DeclareOption{nofloatspacing}{\@singlespacefnfalse} \newif\if@singlespacequote \DeclareOption{quotespacing}{\@singlespacequotetrue} \newif\if@hangul \DeclareOption{hangul}{\@hangultrue\AtEndOfPackage{\hangulspacing}} \newif\if@adjustfootnotesep \DeclareOption{adjustfootnotesep}{\@adjustfootnoteseptrue} \newif\if@adjustverbatim \DeclareOption{adjustverbatim}{\@adjustverbatimtrue} \DeclareOption{singlespacing}{\AtEndOfPackage{\singlespacing}} \DeclareOption{onehalfspacing}{\AtEndOfPackage{\onehalfspacing}} \DeclareOption{doublespacing}{\AtEndOfPackage{\doublespacing}} \@singlespacefntrue \@singlespacequotefalse \@hangulfalse \@adjustfootnotesepfalse \@adjustverbatimfalse \ProcessOptions %%% provide memucsfninterwordhook \ifx\undefined\memucsfninterwordhook \providecommand\memucsfninterwordhook{}% \fi \def\@floatfnspacinghook{% \if@singlespacefn \hangulfspacing \else \hangulspacing \fi } \providecommand\noadjustquotespacing{% \@singlespacequotefalse } \providecommand\adjustquotespacing{% \@singlespacequotetrue } \providecommand\adjustfloatfnspacing{% \@singlespacefntrue } \providecommand\noadjustfloatfnspacing{% \@singlespacefnfalse } % GT: Sat 28 Sep 1996: Widely using \providecommand, \renewcommand, and % \provideenvironment, instead of \def. % ** Line space commands. \providecommand{\setstretch}[1]{% \def\baselinestretch{#1}% \@currsize } % GT: Sat 28 Sep 1996: spacing commands and environments modified to % use \setstretch instead of \baselinestretch. % % GT: Sat 28 Sep 1996: No, I don't know understand the line spacing % algorithms! If someone (LaTeX team) can enlighten me as to the % general rule, please do! It would be very pleasant if setspace.sty % were suited for document font sizes other than 10, 11 and 12 pt. % % GT: Tue 10 Dec 1996: Instead of fixing singlespacing to exact unity, % allow user to redefine it (only slightly, please!) from its initial % value of unity, in the case when a particular font is slightly larger % or slightly smaller than its point size would indicate. This change % affects setspace's single spacing commands, and LaTeX's footnote and % float environments. The one and a half, double, and arbitrary % spacing commands are unaltered. \providecommand{\SetSinglespace}[1]{% \def\setspace@singlespace{#1}% } %% Karnes. \providecommand{\Set@Hangulspace}[2]{% \def\setspace@hangulspace{#1}% \def\setspace@hangulfspace{#2}% \setstretch{#1}% } \def\SetHangulspace#1#2{% \AtBeginDocument{% \gdef\setspace@hangulspace{#1}% \gdef\setspace@hangulfspace{#2}% }% \setstretch{#1}% } \providecommand{\SetHangulVerbatimSpace}[1]{% \def\setspace@hangulverbspace{#1}% } \let\tmp@current@hangulspace\setspace@hangulspace \let\tmp@current@hangulfspace\setspace@hangulfspace \providecommand{\ResetHangulspace}[2]{% \let\tmp@current@hangulspace\setspace@hangulspace% \let\tmp@current@hangulfspace\setspace@hangulfspace% \Set@Hangulspace{#1}{#2}% } \providecommand{\RestoreHangulspace}{% \Set@Hangulspace{\tmp@current@hangulspace}{\tmp@current@hangulfspace}% } % Here's the default single line spacing value. \SetSinglespace{1} %% Karnes. \if@hangul \Set@Hangulspace{1.333}{1.1} \else \Set@Hangulspace{1.0}{1.0} \fi \providecommand{\singlespacing}{% \setstretch {\setspace@singlespace}% normally 1 \vskip \baselineskip % Correction for coming into singlespace } %% Karnes. \providecommand{\hangulspacing}{% \setstretch{\setspace@hangulspace}% default } \providecommand{\hangulfspacing}{% \setstretch{\setspace@hangulfspace}% } \providecommand{\hangulverbspacing}{% \setstretch{\setspace@hangulverbspace}% } \providecommand{\onehalfspacing}{% \setstretch{1.25}% default \ifcase \@ptsize \relax % 10pt \setstretch {1.25}% \or % 11pt \setstretch {1.213}% \or % 12pt \setstretch {1.241}% \fi } \providecommand{\doublespacing}{% \setstretch {1.667}% default \ifcase \@ptsize \relax % 10pt \setstretch {1.667}% \or % 11pt \setstretch {1.618}% \or % 12pt \setstretch {1.655}% \fi } %% adjust verbatim %% if and only if [nofloatspacing] and [adjustverbatim] is on, %% the verbatim will be the same to the main text linestretch. %% if [hangul] it will adjust the linestretch to the quote or quotation %% the other case, it will be 1.0, I hope. %% \if@adjustverbatim \SetHangulVerbatimSpace{\setspace@hangulfspace}% \else \SetHangulVerbatimSpace{1} \fi % ** Modification of the LaTeX command \@setsize. %---Stretch the baseline BEFORE calculating the strut size. This improves % spacing below tabular environments etc., probably... % Comments are welcomed. % GT: Sun 29 Sep 1996: Question: Is this code anywhere near correct % since this part of LaTeX (in, eg, latex.ltx) has been greatly changed? % GT: Sun 29 Sep 1996: The meanings of the arguments to \@setsize % appear to be (whatever these may signify) : % current size; font baselineskip; ignored (!); and font size. % GT: Sun 29 Sep 1996: Note that \@setsize (in latest LaTeX, % \@setfontsize, which is called by \@setsize) seems to be the only % place in purely modern LaTeX where \@currsize is set, and ltxguide.cls % seems to be the only file in the LaTeX base distribution that uses it! \def\@setsize#1#2#3#4{% % Modified 1993.04.07--GDG per KPC \@nomath#1% \let\@currsize#1% \baselineskip #2% \baselineskip \baselinestretch\baselineskip \parskip \baselinestretch\parskip \setbox\strutbox \hbox{% \vrule height.7\baselineskip depth.3\baselineskip width\z@}% \skip\footins \baselinestretch\skip\footins \normalbaselineskip\baselineskip#3#4} % ** Float and footnote adjustments to compensate for a change in the % ** main text's line spacing. %---Increase the space between last line of text and footnote rule. %\skip\footins 20pt plus4pt minus4pt %---Reset baselinestretch within floats and footnotes. % GT: Tue 23 Jan 1996: This is where the conflict with the combination % of the color package and the figure environment used to occur. % Floats. % GT: Sat 28 Sep 1996: \@xfloat is the only place where \normalsize % is still used in setspace.sty ! \if@singlespacefn \let\latex@xfloat=\@xfloat \def\@xfloat #1[#2]{% \latex@xfloat #1[#2]% \if@singlespacefn \def\baselinestretch {\setspace@hangulfspace} \else \def\baselinestretch {\setspace@hangulspace} \fi \normalsize } \else\fi % Karnes: footnotesep for hangul \if@adjustfootnotesep \if@hangul \if@singlespacefn \ifcase \@ptsize \relax \setlength\footnotesep{8.51 pt}% 10pt \or \setlength\footnotesep{9.6 pt}% 11pt \or \setlength\footnotesep{10.3 pt}% 12pt \fi \else \fi \else\fi \else\fi % GT: Wed 24 Jan 1996: This footnote code was copied from LaTeX and % modified rather naively. It had to be brought up to date, not only % because of LaTeX's new color ability, but also because ther had % been major changes to this code in LaTeX at least as far back as % March 1992. % Normal, bottom of the page, footnotes. % % GT: Based HEAVILY on original LaTeX (2e) code. A standard hook would % be MUCH preferred, so that LaTeX's footnote implementation needn't be % copied each time it changes. % % GT: The \protected@edef requires at least the December 1994 LaTeX. % This is precisely the kind of VERSION DEPENDENCY situation that % cannot (AFAIK) be avoided, because LaTeX (2e) LACKS appropriate % standard hooks and/or context markers. \if@singlespacefn %%%%\def\m@mold@footnotetext{\@memsetspace@footnotetext} %%%%\renewcommand{\@footnotetext}[1]{\m@mold@footnotetext{#1}\m@mmf@prepare} %%%%\long\def\@memsetspace@footnotetext#1{% %%%% \insert\footins{% %%%%% GT: Next line added. Hook desired here! %%%% \@floatfnspacinghook\memucsfninterwordhook %%%%% \def\baselinestretch {\setspace@hangulfspace}% %%%%% \@SetFloatspaces %%%% \reset@font\footnotesize %%%% \interlinepenalty\interfootnotelinepenalty %%%% \splittopskip\footnotesep %%%% \splitmaxdepth \dp\strutbox \floatingpenalty \@MM %%%% \hsize\columnwidth %%%% \@parboxrestore %%%% \protected@edef\@currentlabel{% %%%% \csname p@footnote\endcsname\@thefnmark %%%% }% %%%% \color@begingroup %%%% \@makefntext{% %%%% \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% %%%% \color@endgroup}} %%%% %%%%% Minipage footnotes. %%%%\renewcommand{\@mpfootnotetext}[1]{% %%%% \global\setbox\@mpfootins\vbox{% %%%% \unvbox\@mpfootins %%%%% GT: Next line added. Hook desired here! %%%% \@floatfnspacinghook\memucsfninterwordhook %%%%% \def\baselinestretch {\setspace@hangulfspace}% %%%% \foottextfont \hsize\columnwidth \@parboxrestore %%%% \protected@edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}% %%%% \color@begingroup %%%% \@makefntext{% %%%% \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% %%%% \color@endgroup}} \renewcommand{\@footnotetext}[1]{% \ifm@mfnmargin% use marginpar \marginpar{% % \def\baselinestretch{\m@m@footnote@spacing}% \@floatfnspacinghook\memucsfninterwordhook \reset@font \foottextfont \protected@edef\@currentlabel{% \csname p@footnote\endcsname\@thefnmark}% \color@begingroup \@makefntext{\ignorespaces#1}% \color@endgroup}% \else% regular feet \insert\footins{% % \def\baselinestretch{\m@m@footnote@spacing}% \@floatfnspacinghook\memucsfninterwordhook \reset@font \foottextfont \@preamfntext \hsize\columnwidth \protected@edef\@currentlabel{% \csname p@footnote\endcsname\@thefnmark}% \color@begingroup \@makefntext{% \rule\z@\footnotesep\ignorespaces{\foottextfont #1}% \@finalstrut\strutbox}% \color@endgroup}% \fi% \m@mmf@prepare} \renewcommand{\@mpfootnotetext}[1]{% \global\setbox\@mpfootins\vbox{% \unvbox\@mpfootins % \def\baselinestretch{\m@m@footnote@spacing}% \@floatfnspacinghook\memucsfninterwordhook \foottextfont \hsize\columnwidth \@parboxrestore \protected@edef\@currentlabel{% \csname p@mpfootnote\endcsname\@thefnmark}% \color@begingroup \reset@font% \@makefntext{% \rule\z@\footnotesep\ignorespaces{\foottextfont #1}% \@finalstrut\strutbox}% \color@endgroup}} \renewcommand{\@sidefootnotetext}[1]{\insert\sidefootins{% \hsize\sidefootwidth \@parboxrestore % \def\baselinestretch{\m@m@footnote@spacing}% \@floatfnspacinghook\memucsfninterwordhook \sidefootform \normalsize\normalfont\sidefoottextfont \splittopskip=\ht\strutbox \splitmaxdepth=\dp\strutbox \allowbreak \prevdepth=\dp\strutbox \vskip-\parskip \protected@edef\@currentlabel{% \csname p@sidefootnote\endcsname\@thesidefnmark}% \color@begingroup \@makesidefntext{{\sidefoottextfont #1}}% \color@endgroup \ifvmode\else \unskip\@finalstrut\strutbox \fi \par \ifdim\prevdepth>\dp\strutbox \prevdepth=\dp\strutbox\fi \ifdim\prevdepth>99\p@ \nobreak \vskip-\prevdepth \allowbreak \vskip\dp\strutbox \fi \vskip\sidefootvsep}% \m@mmf@prepare} \else\fi % ** Line space environments. % A single spaced quote (say) is done by surrounding singlespace with quote. \provideenvironment{singlespace}{% \vskip \baselineskip \setstretch {\setspace@singlespace}% \vskip -\baselineskip }{% \par } % GT (c/o Mark Olesen), Wed 15 April 1998. \provideenvironment{singlespace*}{% \setstretch {\setspace@singlespace}% \vskip -\baselineskip }{% \vskip -0.5\baselineskip } % spacing, doublespace and onehalfspace all are meant to INCREASE the % spacing (i.e. calling onehalfspace from within doublespace will not % produce a graceful transition between spacings) % % Next two definitions fixed for consistency with TeX 3.x % In order to use \provideenvironment, while easily using same code for % end of each environment, the code that used to be in \endspacing has % been moved into a new (but internal) macro, \restore@spacing. \providecommand{\restore@spacing}{% \par \vskip \parskip \vskip \baselineskip \endgroup \vskip -\parskip \vskip -\baselineskip } \provideenvironment{spacing}[1]{% \par \begingroup % moved from \endspacing by PGBR 29-1-91 \setstretch {#1}% }{% \restore@spacing } % one and a half spacing is 1.5 x pt size \provideenvironment{onehalfspace}{% \begingroup \onehalfspacing }{% \restore@spacing } % double spacing is 2 x pt size \provideenvironment{doublespace}{% \begingroup \doublespacing }{% \restore@spacing } %% quote and quotation environment : Karnes. \def\@quotespacinghook{% \if@singlespacequote \hangulfspacing% \else \hangulspacing% \fi } \renewenvironment{quotation}% {\list{}{\listparindent 1.5em% \itemindent \listparindent \rightmargin \leftmargin \parsep \z@ \@plus\p@}% % \memhangulinterwordhook \item[]% \@quotespacinghook }% {\endlist \if@singlespacequote\vskip-.2\onelineskip\fi} \renewenvironment{quote}% {\list{}{\rightmargin\leftmargin}% % \memhangulinterwordhook \item[] \@quotespacinghook }% {\endlist \if@singlespacequote\vskip-.2\onelineskip\fi} \renewenvironment{symbols}{\list{}% {\itemindent 0em \leftmargin 8em \labelsep 1em \labelwidth 5em % \memhangulinterwordhook \let\makelabel\symbollabel}% \@quotespacinghook }% {\endlist} %%%%%%%%%%%%%%%%%%%% %%%% fix vertical spacing in the verse environment. mempatch 3.3 \renewenvironment{verse}[1][\linewidth]{% \refstepcounter{verse}% \setcounter{poemline}{0}\refstepcounter{poemline}% \setcounter{vslineno}{1}% \let\\=\@vscentercr \list{}{\itemsep \z@ \itemindent -\vindent \listparindent\itemindent \parsep \stanzaskip \ifdim #1<\linewidth %% short line \rightmargin \z@ \leftmargin \linewidth \advance\leftmargin -#1\relax \advance\leftmargin -0.5\leftmargin \advance\leftmargin \vindent \else \ifdim #1>\linewidth %% long line \rightmargin \z@ \leftmargin \vindent \else %% default \rightmargin \leftmargin \advance\leftmargin \vindent \fi \fi} \item[]% \@quotespacinghook}{\endlist} %%%%%%%%%%%%%% \renewenvironment{altverse}% {\starpatternfalse\patternfalse\altindenttrue\setcounter{vslineno}{1}% \@quotespacinghook }% {\altindentfalse} %%% hack \@verbatim (verbatim.sty) \def\@verbatim{% \the\every@verbatim \if@adjustverbatim\hangulverbspacing\else\fi% \trivlist \item \relax \if@minipage\else\vskip\parskip\fi \@beginparpenalty \predisplaypenalty \leftskip\@totalleftmargin\rightskip\z@ \parindent\z@\parfillskip\@flushglue\parskip\z@ \@@par \def\par{% \if@tempswa \leavevmode\null\@@par\penalty\interlinepenalty \else \@tempswatrue \ifhmode\@@par\penalty\interlinepenalty\fi \fi}% \def\@noitemerr{\@warning{No verbatim text}}% \obeylines \let\do\@makeother \dospecials \verbatim@font \everypar \expandafter{\the\everypar \unpenalty}} %%% %%%\def\@verbatim{\the\every@verbatim %%% \trivlist %%% \if@adjustverbatim\hangulverbspacing\else\fi% %%% \item \relax %%% \if@minipage\else\vskip\parskip\fi %%% \@beginparpenalty \predisplaypenalty %%% \leftskip\@totalleftmargin\rightskip\z@ %%% \parindent\z@\parfillskip\@flushglue\parskip\z@ %%% \@@par %%% \def\par{% %%% \if@tempswa %%% \leavevmode\null\@@par\penalty\interlinepenalty %%% \else %%% \@tempswatrue %%% \ifhmode\@@par\penalty\interlinepenalty\fi %%% \fi}% %%% \def\@noitemerr{\@warning{No verbatim text}}% %%% \obeylines %%% \let\do\@makeother \dospecials %%% \verbatim@font %%% \everypar \expandafter{\the\everypar \unpenalty}% %%% \wrapright\the\afterevery@verbatim} %% Karnes : epigraph \providecommand\epigraphspacinghook{\setstretch{1.0}} \providecommand\epigraphspacing[1]{% \renewcommand\epigraphspacinghook{\setstretch{#1}}% } \renewcommand{\epigraph}[2]{\vspace{\beforeepigraphskip} {\epigraphsize\begin{\epigraphflush}% \epigraphspacinghook \begin{minipage}{\epigraphwidth} \@epitext{#1}\\ \@episource{#2} \end{minipage}\end{\epigraphflush} \vspace{\afterepigraphskip}}} \renewenvironment{epigraphs}{% \vspace{\beforeepigraphskip}\begin{\epigraphflush} \epigraphsize \begin{minipage}{\epigraphwidth} \epigraphspacinghook \list{}% {\itemindent\z@ \labelwidth\z@ \labelsep\z@ \leftmargin\z@ \rightmargin\z@ \let\makelabel\qitemlabel}}% {\endlist\end{minipage}\end{\epigraphflush} \vspace{\afterepigraphskip}} % GT: EMSH chose to omit display math part that follows. % She wrote (see above) that the "altered spacing before and after displayed % equations ... just looked too much". % % Fix up spacing before and after displayed math % (arraystretch seems to do a fine job for inside LaTeX displayed math, % since array and eqnarray seem to be affected as expected). % Changing \baselinestretch and doing a font change also works if done here, % but then you have to change @setsize to remove the call to @nomath) % % GT: The \belowdisplayskip line was mistyped; now fixed, courtesy of % David Hull. % % GT: Brett Parnell has addressed EMSH's concern by replacing % \baselinestretch by \displayskipstretch in displays, as follows. \everydisplay\expandafter{% \the\everydisplay \abovedisplayskip \displayskipstretch\abovedisplayskip \belowdisplayskip \displayskipstretch\belowdisplayskip \abovedisplayshortskip \displayskipstretch\abovedisplayshortskip \belowdisplayshortskip \displayskipstretch\belowdisplayshortskip } \endinput %%% EOF. %% change log. %% 2024/02/01. fix issues concerning verbatim