%^^A* legal notices % \iffalse % % This program is part of the Frankenstein bundle for LaTeX. % % Copyright 1995-2001 Matt Swift . % % This file contains both the code and documentation for the % attrib LaTeX package. It will work ONLY if it is placed in a % proper directory. Files called README, INSTALL, attrib.tex % and attrib.ins should have also been distributed to you % with this file. See them for more information on how to typeset % the documentation with LaTeX and how to generate a version of this % file that will work faster than this one. % % This program is free software; you may redistribute it and/or % modify it under the conditions of the LaTeX Project Public % License, either version 1.2 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. % % This program is distributed in the hope that it will be useful, % but without any warranty; without even the implied warranty of % merchantability or fitness for a particular purpose. See the % LaTeX Project Public License for more details. % % \fi % %^^A* checks % %^^A NOTE: The character table, with two %'s, will get written to all files. %% \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 \~} % % \CheckSum{89} % % \begin{abstract} % The \cs\attrib macro attributes block elements, for example when citing a % reference after a block quotation. % \end{abstract} % \tableofcontents % % \part{Discussion} % % \section{Attributions} % % FIX: maybe \cs\attrib when not in a block environment should do this, with % appropriate hooks added, etc.: use the blkcntrl hooks. and Pre stuff. % \begin{codeexample} % \def\attrib [1] {% % (\begingroup % \attribcitations % #1% % \endgroup % )% % } % \end{codeexample} % Here's an example of the kind that inspires the question: \code{({\attribcitations % \citework{3}{unnam}, and see page~\pageref{q:aporia}})}. This way % \cs\attribcitations and \cs\normalcitations could still be defined only % within \cs\attrib, which seems the most sensible. % % \DescribeMacro\attrib % I wrote \cs\attrib in order to have an abstract way to attribute the source % of quotations of prose or verse in an academic style. The formatting is % that recommended by the \manual, except that attributions of block % quotations of prose are given flush right, to allow the reader to locate a % quotation more quickly when returning to the text. % % Use \cs\attrib\marg{attribution} at the end of any block of text, % such as the \env{quote}, \env{quotation}, \env{verse}, and \env{dialogue} % environments (the last is defined in the \package{dialogue} package, also % part of the \Frankenstein bundle). % % For \env{verse}, you ought to use either a blank line or a final \cs{\\} % before your attribution. For \env{quote}, \env{quotation}, and % \env{dialgoue}, don't leave a blank line. % % \cs\attrib will place the attribution flush right to the margins of the % block. If there is enough room on the last line, the attribution will be % given on the last line, otherwise it moves down to a line of its own. % % You can put pretty much anything as the text of the attribution, including % citations and footnotes. % % For those using the \package{achicago} and \package{abbrevs} packages (also % in the \Frankenstein bundle), \cs\citework works very well. If you're % using regular \cs\cite or another package, I recommend using the FIX hook % below to remove the usual parens or braces around citations that occur % within the \cs\attrib argument. It makes more sense to me that way. % % \DescribeMacro\normalcitations % If parens are normally around citations, they are removed when citations % occur within attributions. The idea is that you can simply write % \code{\attrib{\cite{key}}} and what normally surrounds the citation will be % replaced with \cs\PreTrib and \cs\PostTrib (which of course could be the % same thing, but doing it this way allows attributions to contain things % \emph{other} than just a citation and still everything will look right). % % Whenever within an attribution you want the normal behavior of citations % back, write \cs\normalcitations. \cs\normalcitations is automatically used % within footnotes within attributions; it's used in the \package{epigraph} % package; and occasionally a user will want to invoke it, when the % attribution is unusual. I find that most attributions are either just a % citation, or they do not have a citation at all. Sometimes I've wanted an % attribution consisting of a citation plus some other text, for which cases % I provided \cs\normalcitations as a user command. % % \todo{Right now the only time there is any concept of ``normal'' or % altered behavior of \cs\cite commands is with the \package{achicago} % package. I should make it so that \cs\attrib by default leaves off braces, % brackets, etc, around citations, for the standard definition of \cs\cite also.} % % \DescribeMacro\attribcitations % % FIX: dox, example. % % \section{Examples} % Following are several examples that use \cs\attrib. They should be % self-explanatory. % % \begin{bothexample} % \begin{quotation} % [My plays] deal with distress. Some people object to this in my writing. % % At a party an English intellectual---so called---asked me why I write always % about distress. As if it were perverse to do so! He wanted to know if my % father had beaten me or my mother had run away from home to give me an % unhappy childhood. I told him no, that I had had a very happy childhood. % Then he thought me more perverse than ever. I left the party as soon as % possible and got into a taxi. On the glass partition between me and the % driver were three signs: one asked for help for the blind, another help for % orphans, and the third for relief for the war refugees. One does not have to % look for distress. It is screaming at you even in the taxis of London. % \attrib{\cite[24]{driver:beckett:madeleine}} % \end{quotation} % \end{bothexample} % % \begin{bothexample} % \providelength\mtslen % \newcommand\makethisspace [1] {% % \settowidth{\mtslen}{#1}% % \hspace*{\mtslen}% % } % \begin{verse} % \makethisspace{Where Joy for ever dwells:} Hail horrours, hail \\ % Infernal World, and thou profoundest Hell \\ % Receive thy new Possessor: One who brings \\ % A mind not to be chang'd by Place or Time. \\ % The mind is its own place, and in it self \\ % Can make a Heav'n of Hell, a Hell of Heav'n. \\ % What matter where, if I be still the same, \\ % And what I should be, all but less then he \\ % Whom Thunder hath made greater? Here at least \\ % We shall be free; th' Almighty hath not built \\ % Here for his envy, will not drive us hence: \\ % Here we may reign secure, and in my choyce \\ % To reign is worth ambition though in Hell: \\ % Better to reign in Hell, then serve in Heav'n. % % \attrib{\book{Paradise Lost} 1.250--63, % \cite{milton:riverside:paralost}} % \end{verse} % \end{bothexample} % % You can have a footnote inside the attribution. The boxed example below is % meant to approximate a whole page (that is, the footnote appears at the % bottom of the page, not directly underneath the quotation). % \begin{bothexample} % \begin{verse} % Jacke boy, ho boy newes,\\ % \quad the cat is in the well,\\ % let us ring now for her Knell,\\ % \quad ding dong ding dong Bell. % % \attrib{\cite[149]{opie:nursery}\footnote {% % Perhaps more familiar is the nursery rhyme that begins ``Ding, % dong, bell, / Pussy's in the well,'' which Opie and Opie also cite. It does % not seem clear in that rhyme, however, without contextual knowledge, that the % cat has died and the bell rings its knell.}} % \end{verse} % \end{bothexample} % % Here is a quotation from \citeNP{beckett:watt}: % \begin{bothexample} % \newwork\watt{Watt} % \begin{quote} % One day Watt, coming out from behind a bush, almost ran into Mr~Knott, % which for an instant troubled Watt greatly, for he had not quite finished % adjusting his dress. But he need not have been troubled. For Mr~Knott's % hands were behind his back, and his head bowed down, towards the ground. % Then Watt in his turn looking down at first saw nothing but the short green % grass, but when he had looked a little longer he saw a little blue flower % and close by a fat worm burrowing into the earth. So this was what had % attracted Mr~Knott's attention, perhaps. So there for a short time they % stood together, the master and the servant, the bowed heads almost touching % \lips, until the worm was gone and only the flower remained. One day the % flower would be gone and only the worm remain, but on this particular day % it was the flower that remained, and the worm that went. And then Watt, % looking up, saw that Mr~Knott's eyes were closed, and heard his breathing, % soft and shallow, like the breathing of a child asleep. % \attrib{\citework{145--46}{watt}} % \end{quote} % \end{bothexample} % % Finally, here's a very simple example from the same book. When the context % is clear, you might just want page numbers in the attribution. % \begin{bothexample} % \begin{quote} % For Watt now found himself in the midst of things which, if they % consented to be named, did so as it were with reluctance.\lips Looking at % a pot, for example, \lips it was in vain that Watt said, Pot, pot. Well, % perhaps not quite in vain, but very nearly. \lips It resembled a pot, it % was almost a pot, but it was not a pot of which one could say, Pot, pot, % and be comforted. It was in vain that it answered, with unexceptionable % adequacy, all the purposes, and performed all the offices, of a pot, it % was not a pot. And it was just this hairbreadth departure from the % nature of a true pot that so excruciated Watt\lips. For he could always % hope, of a thing of which he had never known the name, that he would % learn the name, some day, and so be tranquillized. % % \attrib{81--82} % \end{quote} % \end{bothexample} % % Here's an example of use with the \env{dialogue} environment. Not much % different than the others, but the quotes are nice, and I'll demonstrate a % use of \cs\normalcitations. \refer{b}'s speeches are interspersed through % the play with \refer{a}'s and \refer{c}'s, but it's interesting to read them % consecutively. %\begin{bothexample} % \begin{dialogue} % \speak{b} on the stone together in the sun on the stone at the edge of the % little wood and as far as eye could see the wheat turning yellow vowing every % now and then you loved each other just a murmur not touching or anything of % that nature you one end of the stone she the other long low stone like % millstone no looks just there on the stone in the sun with the little wood % behind gazing at the wheat or eyes closed all still no sign of life not a % soul abroad no sound % % \speak{b} all still just leaves and ears and you too still on the stone in a % daze no sound not a word only every now and then to vow you loved each other % just a murmur one thing could ever bring tears till they dried up altogether % that thought when it came up among the others floated up that scene % % \speak{b} on the stone in the sun gazing at the wheat or the sky or the eyes % closed nothing to be seen but the wheat turning yellow and the blue sky % vowing every now and then you loved each other just a murmur tears without % fail till they dried up altogether suddenly there in whatever thoughts you % might be having whatever scenes perhaps way back in childhood or the womb % worst of all or that old Chinaman long before Christ born with long white % hair % % \speak{b} no sight of the face or any other part never turned to her nor she to % you always parallel like on an axle-tree never turned to each other just % blurs on the fringes of the field no touching or anything of that nature % always space between if only an inch no pawing in the manner of flesh and % blood no better than shades no worse if it wasn't for the vows % % \speak{b} \lips on the fringe of the field and every now and then in the great % peace like a whisper so faint she loved you % % \attrib{\play{That Time}{} \normalcitations\cite{beckett:csp:that}} % \end{dialogue} % \end{bothexample} % % \section{Programmer's Interface} % % You might want to use \cs\attrib as part of some other command you define. % For example, I wrote a command for epigraphs, % \cs\epigraph\marg{text}{attribution}, which used \cs\attrib internally. For % this type of thing, and also in general I suppose, you might want to change % the behavior of \cs\attrib. % % \DescribeMacro\AttribMinSkip % \cs\AttribMinSkip is a length, the minimum amount of horizontal space that % must come after any previous text and before the attribution. The default % value is \code{2em}. % % \DescribeMacro\PreTrib % \DescribeMacro\PostTrib % When you write \cs\attrib{attribution}, \cs\PreTrib will immediately % precede \meta{attribution} and \cs\PostTrib will immediately follow it. % Notice how the attributions in the examples above were in parentheses, but % we didn't have to write them. The default value of \cs\PreTrib is a left % parenthesis and the default value of \cs\PostTrib is a right parenthesis. % \cs\PreTrib and \meta{attribution} are executed inside a group that doesn't % include \PostTrib, and \cs\PostTrib is executed in a group all by itself, % like this: \code{{\PreTrib\relax#1}{\PostTrib}}. Honestly I can't tell % you right now why it's done this way, but I'm sure I have some good reason % for it! % % \DescribeMacro\AttribInit % \cs\AttribInit is an hook, empty by default, that gets executed after some % standard setup but before the core of the \cs\attrib macro. It is executed % within a group that includes \cs\PreTrib, \meta{attribution}, and % \cs\PostTrib, so perhaps it is appropriate for a font style change or % something (I haven't made use of it myself). % % \StopEventually{} % % \part{Implementation} % % \section{Version control} % % \begin{macro}{\fileinfo} % \begin{macro}{\DoXUsepackagE} % \begin{macro}{\HaveECitationS} % \begin{macro}{\fileversion} % \begin{macro}{\filedate} % \begin{macro}{\docdate} % \begin{macro}{\PPOptArg} % These definitions must be the first ones in the file. % \begin{macrocode} \def\fileinfo{attribution of block elements (Frankenstein's hat)} \def\DoXPackageS {attrib,dialogue} \def\initelyHavECitationS {} \def\fileversion{v1.3} \def\filedate{2001/08/31} \def\docdate{2001/08/31} \edef\PPOptArg {% \filedate\space \fileversion\space \fileinfo } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % If we're loading this file from a \cs\ProcessDTXFile command (see the % \package{compsci} package), then \cs\JusTLoaDInformatioN will be defined; % othewise we assume it is not (that's why the FunkY NamE). % % If we're loading from \cs\ProcessDTXFile, we want to load the packages listed % in \cs\DoXPackageS (needed to typeset the documentation for this file) and % then bail out. Otherwise, we're using this file in a normal way as a % package, so do nothing. \cs\DoXPackageS, if there are any, are declared in % the \ext{dtx} file, and, if you're reading the typeset documentation of this % package, would appear just above. (It's OK to call \cs\usepackage with an % empty argument or \cs\relax, by the way.) % \begin{macrocode} \makeatletter% A special comment to help create bst files. Don't change! \@ifundefined{JusTLoaDInformatioN} {% }{% ELSE (we know the compsci package is already loaded, too) \UndefineCS\JusTLoaDInformatioN \SaveDoXVarS \eExpand\csname DoXPackageS\endcsname\In {%use \csname in case it's undefined \usepackage{#1}% }% \RestoreDoXVarS \makeatother \endinput }% A special comment to help create bst files. Don't change! % \end{macrocode} % % Now we check for \LaTeX2e and declare the LaTeX package. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{attrib}[\PPOptArg] % \end{macrocode}^^A special comment to help create bst files. Don't change! % % ^^A NOTE: We have to compensate for the above backslashes, which are not % ^^A actually in the .dtx file the author works on, by adding to the % ^^A CheckSum. %% % \AddToCheckSum{17}^^A `dtx-update-checksum' automatically handles this. % \AddToCheckSum{7}^^A The half a macrocode env. at the top is missed, however... % \AddToCheckSum{10}^^A ... and so are the 5 \defs from the .dtx file % ^^A that precede it. % \IfCitations {% % \AddToCheckSum{2}^^A When \initelyHavECitationS is defined in % } ^^A the .dtx file, we need 2 more in the CheckSum. % % % \begin{macrocode} \RequirePackage{moredefs} % \end{macrocode} % % \section{Macros} % % \begin{macro}{\AttribMinSkip} % \begin{macro}{\PreTrib} % \begin{macro}{\PostTrib} % \mbox{} % \begin{macrocode} \newlength{\AttribMinSkip} \setlength{\AttribMinSkip}{2em} \newcommand\PreTrib {% (% } \newcommand\PostTrib {% )% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\AttribInit} % \begin{macro}{\at@init} % This heart of this code is from the \TeX book \cite[106]{knuth:texbook}. % If you contribute anything to the horizontal or vertical list before the % \cs\unskip, it will cancel the effect of the \cs\unskip. You probably % don't want to do that. % \begin{macrocode} \ReserveCS\AttribInit \newcommand\at@init {% \SaveCS\footnote \def\footnote {% \normalcitations\MDSavedfootnote }% \attribcitations % \end{macrocode} % If there's a blank line before the \cs\attrib, we want to leave \cs\parskip % extra space above. % \begin{macrocode} \ifhmode \unskip \fi \AttribInit } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\attribcitations} % Sets up citations for within an attrib-like environment. Should probably % be called within a group. % \begin{macrocode} \newcommand\attribcitations {% \SaveCS\PreCiteWork \SaveCS\PostCiteWork \def\PreCiteWork {% \csname }% \def\PostCiteWork {% \relax\end{lrbox}\usebox{\sc@box@a}% }% \SaveCS\PreCite \SaveCS\PostCite \let\PreCite\ShortEmpty \let\PostCite\ShortEmpty } % \end{macrocode} % \end{macro} % % \begin{macro}{\normalcitations} %% FIX % Would you ever want this and \cs\attribcitations defined outside of the scope % of an \cs\attrib? Perhaps \cs\let it to a warning outside of \cs\attrib. % \begin{macrocode} \newcommand* \normalcitations {% \RestoreCS\PreCite \RestoreCS\PostCite \RestoreCS\PreCiteWork \RestoreCS\PostCiteWork } % \end{macrocode} % \end{macro} % % \begin{macro}{\attrib} % Knuth says that \cs\vadjust is more efficient here than \cs\hbox, but I % don't understand why: I guess it's simply a trivial non-discardable item on % the horizontal list \cite[316]{knuth:texbook}. % FIX: I can get a page break after the text and before the attribution; it's % happening with attribstar and when the attribution is dropped to the next % line, but not sure if that's the only case (first quote in ``impotence'' % section of library copy of dissertation). Also pages 53, 57 of same. % \begin{macrocode} \newcommand\attrib [1] {% \begingroup \at@init \nobreak\hfil\penalty50% \hskip\AttribMinSkip \vadjust{}\nobreak\hfil {\PreTrib\relax#1}{\PostTrib}% \parfillskip\z@ \nobreak \finalhyphendemerits0% \par \endgroup } % \end{macrocode} % \end{macro} % % \part{Something you can't use} % % \begin{macro}{\attribstar} % There is one macro, \cs\attribstar, in this package that you can't use % because you don't have a package that I haven't released yet. I don't want % to release it because it still has a couple of small but significant % problems that can lead to mistakes. If I took \cs\attribstar out of this % package, however, I'd have to maintain two different versions of % \package{attrib}. So here is a glimpse of a future bright star. % % \code{\DescribeMacro\attribstar}\par % Use this instead of a standard footnote in an attribution when you want the % note to appear on the page of the quotation. That is, it is not a % substantive note, but something like ``italics mine'' or ``ellipses in % original'' which belongs there on the page, not in endnotes, in case % footnotes are ever moved there. % \begin{comment} % \begin{bothexample} % \begin{quote} % My mother was deeply religious. So was my brother. He knelt down at his % bed as long as he could kneel\lips. [They] got no value from their % religion when they died. At the moment of crisis it had no more depth % than an old-school tie\lips. When you pass a church on an Irish bus, all % the hands flurry in the sign of the cross. One day the dogs of Ireland % will do that too and perhaps also the pigs. % % \attribstar{\cite[25]{driver:beckett:madeleine}}{Driver ``reconstructs'' % Beckett's words ``from notes made immediately after'' their conversation % \cite[22]{driver:beckett:madeleine}.} % \end{quote} % \end{bothexample} % \end{comment} % % \begin{macrocode} \newcommand\attribstar [2] {% \begingroup \addto@macro\PostTrib {% \normalcitations \starnote{#2}% }% \attrib{#1}% \endgroup } % \end{macrocode} % \end{macro} % % \Finale