From ebb7026b5e8fa37bdd5c719cbcfed2eb9105aa7e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 10 Sep 2014 21:17:19 +0000 Subject: pressrelease (10sep14) git-svn-id: svn://tug.org/texlive/trunk@35147 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/pressrelease/pressrelease.dtx | 1632 ++++++++++++++++++++ .../source/latex/pressrelease/pressrelease.ins | 33 + 2 files changed, 1665 insertions(+) create mode 100644 Master/texmf-dist/source/latex/pressrelease/pressrelease.dtx create mode 100644 Master/texmf-dist/source/latex/pressrelease/pressrelease.ins (limited to 'Master/texmf-dist/source') diff --git a/Master/texmf-dist/source/latex/pressrelease/pressrelease.dtx b/Master/texmf-dist/source/latex/pressrelease/pressrelease.dtx new file mode 100644 index 00000000000..77322a8f649 --- /dev/null +++ b/Master/texmf-dist/source/latex/pressrelease/pressrelease.dtx @@ -0,0 +1,1632 @@ +%\iffalse +% pressrelease.dtx generated using makedtx version 1.1 (c) Nicola Talbot +% Command line args: +% -src "pressrelease.cls\Z=>pressrelease.cls" +% -src "(.+\.sty)\Z=>\1" +% -doc "pressrelease-manual.tex" +% -author "Nicola Talbot" +% pressrelease +% Created on 2014/9/10 18:01 +%\fi +%\iffalse +%<*package> +%% \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 \~} +% +%\fi +% \iffalse +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2014 Nicola Talbot, all rights reserved. +% \fi +% \iffalse +%<*driver> +\documentclass{nlctdoc} + +\usepackage{alltt} +\usepackage{verbatim} +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[colorlinks, + bookmarks, + hyperindex=false, + pdfauthor={Nicola L.C. Talbot}, + pdftitle={pressrelease.cls: LaTeX class for typesetting press releases}, + pdfkeywords={LaTeX,press release}]{hyperref} + + +\CheckSum{776} + +\newcommand*{\opt}[1]{\csopt{PRset}{#1}} +\providecommand*{\optfmt}[1]{\textsf{#1}} +\renewcommand*{\ienv}[1]{\SpecialEnvIndex{#1}} +\renewcommand*{\usage}[1]{\hyperpage{#1}} +\renewcommand*{\main}[1]{\hyperpage{#1}} +\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}} +\setcounter{IndexColumns}{2} + +\begin{document} +\DocInput{pressrelease.dtx} +\end{document} +% +%\fi +% +%\MakeShortVerb{"} +% +%\title{pressrelease v1.0: +%typesetting press releases} +%\author{Nicola L. C. Talbot\\\url{http://www.dickimaw-books.com/}} +% +%\date{2014-09-10} +%\maketitle +% +%\begin{abstract} +%The \clsfmt{pressrelease} class is provided for typesetting press +%releases. I wrote it because I found that \cls{newlfm}'s press +%release option wasn't sufficiently configurable for my requirements. +%Sample documents should be available in the \texttt{samples} subdirectory +%of the directory where this document is located. +%\end{abstract} +% +%\tableofcontents +% +%\section{Introduction} +%\label{sec:intro} +% +%A press release is a written statement to inform the media of +%forthcoming events, new products, awards or any other type of news +%item. A press release should be a~compact document that briefly +%outlines the main details of the news item. Therefore press releases +%are usually no longer than a~single page. Hard copies are typically +%double-spaced to allow the journalist room to scribble notes. The +%end of the press release is signalled by three hash (\#) signs +%(\term{end of release marker}). +% +%The \clsfmt{pressrelease} class is loaded in the usual \LaTeX\ +%manner: +%\begin{verbatim} +%\documentclass{pressrelease} +%\end{verbatim} +%You may specify the class options: \clsopt{10pt}, \clsopt{11pt}, +%\clsopt{12pt}, \clsopt{a4paper}, \clsopt{letterpaper}. These are the +%same as the standard class options of the same names. The +%\sty{geometry} package is automatically loaded so if you want to +%change the page size you can do so using \cs{geometry} (see the +%\sty{geometry} documentation for further details). You can also use +%the class option \clsopt{symbols} to automatically load the +%accompanying \sty{pressrelease-symbols} package (see +%\sectionref{sec:tags}). +% +%Within the \envfmt{document} environment, the contents of the press +%release should be placed inside the \env{pressrelease} environment. +%\begin{definition}[\DescribeEnv{pressrelease}] +%\cs{begin}\{pressrelease\}\newline +%\meta{press release content}\newline +%\cs{end}\{pressrelease\} +%\end{definition} +% +%Within the \env{pressrelease} environment you can use the +%\envfmt{about} environment for information about the company. +%\begin{definition}[\DescribeEnv{about}] +%\cs{begin}\{about\}\newline +%\meta{Information}\newline +%\cs{end}\{about\} +%\end{definition} +% +%The contents of the \env{pressrelease} environment are double-spaced +%(using the \sty{setspace} package, which is loaded by +%default). Two \LaTeX\ runs are required to ensure the last page +%information is correct. +% +%\section{Data Setting Commands} +%\label{sec:datacommands} +% +%In the preamble (or anywhere before the start of the +%\env{pressrelease} environment) you may use the commands described below +%to provide data used in the press release. +%You can later access the information provided using +%\begin{definition}[\DescribeMacro\PRusevar] +%\cs{PRusevar}\marg{variable} +%\end{definition} +%where \meta{variable} is the variable name. For example, to access +%the information provided by \cs{PRcompany}, you can use +%\verb|\PRusevar{company}|. +% +%\begin{definition}[\DescribeMacro\PRheadline] +%\cs{PRheadline}\marg{text} +%\end{definition} +%This specifies the press release title used in the +%\term{headline block}. +% +%\begin{definition}[\DescribeMacro\PRsubheadline] +%\cs{PRsubheadline}\marg{text} +%\end{definition} +%This specifies the press release sub-title used in the +%\term{headline block}. +% +%\begin{definition}[\DescribeMacro\PRrelease] +%\cs{PRrelease}\marg{text} +%\end{definition} +%This specifies the \term{release statement}. If omitted, the default is +%``For immediate release''. For example: +%\begin{verbatim} +%\PRrelease{Embargo until 30th April 2014} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro\PRlogo] +%\cs{PRlogo}\marg{logo} +%\end{definition} +%This specifies the company \term{logo}, where \meta{logo} represents the +%commands required to display the logo. For example, if the logo is +%in the image file \texttt{company-logo.png}: +%\begin{verbatim} +%\PRlogo{\includegraphics{company-logo}} +%\end{verbatim} +%(Remember to include the \sty{graphicx} package if you want to use +%\cs{includegraphics}.) +% +%\begin{definition}[\DescribeMacro\PRcompany] +%\cs{PRcompany}\marg{name} +%\end{definition} +%This specifies the company name. For example: +%\begin{verbatim} +%\PRcompany{Imaginary Company, Ltd} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro\PRdepartment] +%\cs{PRdepartment}\marg{name} +%\end{definition} +%This specifies the department name. For example: +%\begin{verbatim} +%\PRdepartment{Department of Miscellaneous Stuff} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro\PRlocation] +%\cs{PRlocation}\marg{place} +%\end{definition} +%This specifies the company's location. For example: +%\begin{verbatim} +%\PRlocation{The Moon} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro\date] +%\cs{date}\marg{some date} +%\end{definition} +%This specifies the date of the press release. For example: +%\begin{verbatim} +%\date{1st April 2014} +%\end{verbatim} +%If omitted, \cs{today} will be used. +% +%\begin{definition}[\DescribeMacro\PRcontact] +%\cs{PRcontact}\marg{name} +%\end{definition} +%This specifies the name of the contact person in case of +%queries. For example: +%\begin{verbatim} +%\PRcontact{Ann Other} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro\PRaddress] +%\cs{PRaddress}\marg{text} +%\end{definition} +%This specifies the contact's postal address. For example: +%\begin{verbatim} +%\PRaddress{1 The Street\\The City\\AB1 2YZ} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro\PRphone] +%\cs{PRphone}\marg{number} +%\end{definition} +%This specifies the contact's telephone number. For example: +%\begin{verbatim} +%\PRphone{0123 456789} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro\PRmobile] +%\cs{PRmobile}\marg{number} +%\end{definition} +%This specifies the contact's mobile phone number. For example: +%\begin{verbatim} +%\PRmobile{07123 456789} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro\PRfax] +%\cs{PRfax}\marg{number} +%\end{definition} +%This specifies the contact's fax number. For example: +%\begin{verbatim} +%\PRfax{0123 456788} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro\PRurl] +%\cs{PRurl}\marg{web address} +%\end{definition} +%This specifies the company's web address. For example: +%\begin{verbatim} +%\PRurl{http://www.some-company.com/} +%\end{verbatim} +%This information is inserted at the end of the \env{about} +%environment using \ics{url} (the \sty{url} package is automatically +%loaded). +% +%\begin{definition}[\DescribeMacro\PRemail] +%\cs{PRemail}\marg{email address} +%\end{definition} +%This specifies the contact's email address. For example: +%\begin{verbatim} +%\PRemail{ann.other@some-company.com} +%\end{verbatim} +%This is formatted using the command +%\begin{definition}[\DescribeMacro\PRemailformat] +%\cs{PRemailformat}\marg{text} +%\end{definition} +%This defaults to \cs{texttt}\marg{text} but if you load the +%\sty{hyperref} package you can convert the email address into an +%active length using: +%\begin{verbatim} +%\renewcommand*{\PRemailformat}[1]{\href{mailto:#1}{\texttt{#1}}} +%\end{verbatim} +%\begin{definition}[\DescribeMacro\PRhours] +%\cs{PRhours}\marg{times} +%\end{definition} +%This specifies the company's opening hours. For example: +%\begin{verbatim} +%\PRhours{9:00--17:30 Mon--Fri} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro\PRencl] +%\cs{PRencl}\marg{times} +%\end{definition} +%This specifies any enclosed information. For example: +%\begin{verbatim} +%\PRencl{complementary tickets} +%\end{verbatim} +%This information is inserted before the +%\term{end of release marker}. +% +%\section{Changing the Settings} +%\label{sec:settings} +% +%The layout of the press release consists of: (\term{upper area}) the +%\term{logo}, the \term{release statement}, the +%\term{headline block}, the \term{top information block}; +%(\term{lower area}) the \term{bottom information block}, the +%\term{enclosure} information, the \term{end of release marker}. +%The contents of the \env{pressrelease} +%environment is placed between the upper and lower areas. +% +%The layout of the press release can be customized using: +%\begin{definition}[\DescribeMacro\PRset] +%\cs{PRset}\marg{options} +%\end{definition} +%where \meta{options} is a \meta{key}=\meta{value} list of options. +%Most of these options can also be passed as class options. The +%options that can't be passed as a class option are: +%\opt{topinfo} and \opt{bottominfo}. +% +%\begin{description} +%\item[\opt{head}] This indicates if the \term{headline block} should go above or +%below the \term{top information block} and may also be used to +%indicate the horizontal position of the headline block. +%Permitted values: \optfmt{above}, \optfmt{below}, \optfmt{center}, +%\optfmt{left}, \optfmt{right}. (The value \optfmt{centre} is +%equivalent to \optfmt{center}.) +%Mutually exclusive options override each other. For example +%\begin{verbatim} +%\PRset{head=left,head=right} +%\end{verbatim} +%will put the headline block on the right, whereas +%\begin{verbatim} +%\PRset{head=left,head=above} +%\end{verbatim} +%will put the headline block on the left above the top information block. +%For convenience the following options are also supplied to specified +%both the horizontal and vertical position: \optfmt{above center} (or +%\optfmt{above centre}), \optfmt{above left}, \optfmt{above right}, +%\optfmt{below center} (or \optfmt{below centre}), \optfmt{below +%left}, \optfmt{below right}. The default is \optfmt{above center}. +% +%\item[\opt{smashlogo}] This is a boolean option. If \optfmt{true}, +%the \term{logo} is placed inside a \cs{vbox} of zero height. The default +%is \optfmt{false}. +% +%\item[\opt{logo}] This indicates the \term{logo}'s position. +%Permitted values: \optfmt{left} +%(flush left), \optfmt{right} (flush right), \optfmt{above} (above +%the \term{release statement}), \optfmt{below} (below the release +%statement). Mutually exclusive options override each other. +%For example +%\begin{verbatim} +%\PRset{logo=left,logo=right} +%\end{verbatim} +%will put the logo on the right, whereas +%\begin{verbatim} +%\PRset{logo=left,logo=above} +%\end{verbatim} +%will put the logo on the left above the release statement. For +%convenience the following options are also provided that specify +%both the horizontal and vertical positions: \optfmt{above left}, +%\optfmt{above right}, \optfmt{below left} and \optfmt{below right}. +%For example +%\begin{verbatim} +%\PRset{logo=above left} +%\end{verbatim} +%is equivalent to +%\begin{verbatim} +%\PRset{logo=left,logo=above} +%\end{verbatim} +%The default is \optfmt{above right}. +% +%\item[\opt{releasealign}] This specifies the alignment of the +%\term{release statement}. Permitted values: \optfmt{center} +%(centred), \optfmt{left} (flush left), \optfmt{right} (flush right). +%The default is \optfmt{center}. (The value \optfmt{centre} is +%equivalent to \optfmt{center}.) +% +%\item[\opt{ruled}] This is a boolean option. If \optfmt{true}, +%horizontal rules are placed in the header block. If the \opt{head} option +%has been set to \optfmt{above} only two rules are drawn, one above +%the release statement and the other below the subheading. If the +%\opt{head} option has been set to \optfmt{below}, four rules are +%drawn: above and below the release statement, above the headline and +%below the subheading. The default value is \optfmt{true}. +% +%\item[\opt{topinfoalign}] This specifies the alignment of the +%\term{top information block}. Permitted values: \optfmt{center} +%(centred), \optfmt{left} (flush left), \optfmt{right} (flush right). +%The default is \optfmt{left}. (The value \optfmt{centre} is +%equivalent to \optfmt{center}.) +% +%\item[\opt{bottominfoalign}] This specifies the alignment of the +%\term{bottom information block}. Permitted values: \optfmt{center} +%(centred), \optfmt{left} (flush left), \optfmt{right} (flush right). +%The default is \optfmt{right}. (The value \optfmt{centre} is +%equivalent to \optfmt{center}.) +% +%\item[\opt{topinfo}] The specifies the information to display +%in the \term{top information block} and the display order. The +%value should be a slash \texttt{/} separated list of keywords +%indicating the information. The order of the keywords in the list +%indicates the display order. Permitted keywords: \optfmt{company} +%(as given by \ics{PRcompany}), \optfmt{department} (as given by +%\ics{PRdepartment}), \optfmt{location} (as given by +%\ics{PRlocation}), \optfmt{contact} (as given by \ics{PRcontact}), +%\optfmt{address} (as given by \ics{PRaddress}), \optfmt{hours} (as +%given by \ics{PRhours}), \optfmt{phone} (the phone numbers block as +%given by \ics{PRphone}, \ics{PRmobile} and \ics{PRfax}), +%\optfmt{email} (as given by \ics{PRemail}), \optfmt{date} (as given +%by \ics{date}). The default is: +%\begin{verbatim} +%\PRset{topinfo=company/department/location/date} +%\end{verbatim} +%This option can't be passed as a class option. +% +%\item[\opt{bottominfo}] The specifies the information to display +%in the \term{bottom information block} and the display order. This +%has the same syntax as \opt{topinfo}. The default is: +%\begin{verbatim} +%\PRset{bottominfo=contact/address/hours/phone/email} +%\end{verbatim} +%This option can't be passed as a class option. +%\end{description} +% +%\section{Textual Tags} +%\label{sec:tags} +% +%The \term{top information block}, the website information at the end of the +%\env{about} environment, the \term{bottom information block}, +%and the \term{enclosure} information all have textual tags +%formatted using: +%\begin{definition}[\DescribeMacro\PRtagformat] +%\cs{PRtagformat}\marg{text} +%\end{definition} +%This defaults to \verb|\textbf{|\meta{text}\verb|:}| (the tag in +%bold with a colon). The top and bottom information blocks are set in +%a \env{tabular} environment with each row displayed using +%\begin{definition}[\DescribeMacro\PRinfotopline] +%\cs{PRinfotopline}\marg{tag}\marg{details} +%\end{definition} +%for the top information block and +%\begin{definition}[\DescribeMacro\PRinfobottomline] +%\cs{PRinfobottomline}\marg{tag}\marg{details} +%\end{definition} +%for the bottom information block. Both of these commands default to +%\begin{definition}[\DescribeMacro\PRinfoline] +%\cs{PRinfoline}\marg{tag}\marg{details} +%\end{definition} +%This is defined as +%\begin{verbatim} +%\newcommand*{\PRinfoline}[2]{% +% \PRtagformat{#1} & \PRinfoentry{#2}\tabularnewline +%} +%\end{verbatim} +%where +%\begin{definition}[\DescribeMacro\PRinfoentry] +%\cs{PRinfoentry}\marg{details} +%\end{definition} +%formats the data supplied by commands such as \cs{PRcompany}, +%described in \sectionref{sec:datacommands}. Rows with empty data are +%ignored. +% +%If you want to remove all tags in the top and bottom information +%blocks, you can do so using: +%\begin{verbatim} +%\renewcommand*{\PRinfoline}[2]{% +% \PRinfoentry{#2}\tabularnewline +%} +%\end{verbatim} +%or if you want the tags on the right instead of the left you can do: +%\begin{verbatim} +%\renewcommand*{\PRinfoline}[2]{% +% \PRinfoentry{#2} & \PRtagformat{#1}\tabularnewline +%} +%\end{verbatim} +%If you only want to remove the tags from the top information block, +%you can do: +%\begin{verbatim} +%\renewcommand*{\PRinfotopline}[2]{% +% \PRinfoentry{#2}\tabularnewline +%} +%\end{verbatim} +% +%The enclosure information is formatted using: +%\begin{definition}[\DescribeMacro\PRenclformat] +%\cs{PRenclformat}\marg{tag}\marg{details} +%\end{definition} +% +%The website information at the end of the \env{about} environment is +%formatted using: +%\begin{definition}[\DescribeMacro\PRurlformat] +%\cs{PRurlformat}\marg{tag}\marg{web address} +%\end{definition} +% +%The tags can be changed by redefining the commands described below. +%For example, if you want to provide alternative text or if you want +%to display symbols instead. The \sty{pressrelease-symbols} package +%provided with the \clsfmt{pressrelease} class redefines these commands +%to display symbols from the \sty{marvosym} package\footnote{There's +%an additional symbol defined using the \sty{tikz} package.}. (It +%also suppresses the tags in the top information block.) So if +%you want symbols you can just do: +%\begin{verbatim} +%\documentclass{pressrelease} +%\usepackage{pressrelease-symbols} +%\end{verbatim} +%or, equivalently, +%\begin{verbatim} +%\documentclass[symbols]{pressrelease} +%\end{verbatim} +%If you don't like this choice of symbols you can just redefine the +%commands below according to your preferences. +% +%\begin{definition}[\DescribeMacro\PRcontacttext] +%\cs{PRcontacttext} +%\end{definition} +%The contact tag. Default: \qt{Contact}. +% +%\begin{definition}[\DescribeMacro\PRphonetext] +%\cs{PRphonetext} +%\end{definition} +%The phone tag. Default: \qt{Telephone}. +% +%\begin{definition}[\DescribeMacro\PRmobiletext] +%\cs{PRmobiletext} +%\end{definition} +%The mobile phone tag. Default: \qt{Mobile}. +% +%\begin{definition}[\DescribeMacro\PRemailtext] +%\cs{PRemailtext} +%\end{definition} +%The email tag. Default: \qt{Email}. +% +%\begin{definition}[\DescribeMacro\PRurltext] +%\cs{PRurltext} +%\end{definition} +%The url tag. Default: \qt{Website}. +% +%\begin{definition}[\DescribeMacro\PRfaxtext] +%\cs{PRfaxtext} +%\end{definition} +%The fax tag. Default: \qt{Fax}. +% +%\begin{definition}[\DescribeMacro\PRcompanytext] +%\cs{PRcompanytext} +%\end{definition} +%The company tag. Default: \qt{Company}. +% +%\begin{definition}[\DescribeMacro\PRdepartmenttext] +%\cs{PRdepartmenttext} +%\end{definition} +%The department tag. Default: \qt{Department}. +% +%\begin{definition}[\DescribeMacro\PRaddresstext] +%\cs{PRaddresstext} +%\end{definition} +%The address tag. Default: \qt{Address}. +% +%\begin{definition}[\DescribeMacro\PRhourstext] +%\cs{PRhourstext} +%\end{definition} +%The opening hours tag. Default: \qt{Opening Times}. +% +%\begin{definition}[\DescribeMacro\PRdatetext] +%\cs{PRdatetext} +%\end{definition} +%The date tag. Default: \qt{Date}. +% +%\begin{definition}[\DescribeMacro\PRlocationtext] +%\cs{PRlocationtext} +%\end{definition} +%The location tag. Default: \qt{Location}. +% +%\begin{definition}[\DescribeMacro\PRencltext] +%\cs{PRencltext} +%\end{definition} +%The enclosures tag. Default: \qt{Encl.} +% +%\begin{definition}[\DescribeMacro\PRabouttext] +%\cs{PRabouttext} +%\end{definition} +%The about tag. Default: \verb|About \PRusevar{company}|. +% +%The default release statement (\qt{For immediate release}) is produced using +%\begin{definition}[\DescribeMacro\PRreleasetext] +%\cs{PRreleasetext} +%\end{definition} +%This is used if \cs{PRrelease} isn't used. +% +%The page footer uses +%\begin{definition}[\DescribeMacro\PRnOfm] +%\cs{PRnOfm}\marg{n}\marg{m} +%\end{definition} +%to format the page number in the style \qt{\meta{n} of \meta{m}}. +% +%\section{Adding Multilingual Support} +%\label{sec:multiling} +% +%If you want to provide translations for the tags, you can write your +%own package that redefines the commands described in +%\sectionref{sec:tags}. For example, create a file called +%\texttt{pressrelease-}\meta{LANG}\texttt{.sty}, where \meta{LANG} is +%the language name and type in the following, replacing \meta{LANG} +%with the language name and inserting the required translations: +%\begin{alltt} +%\cs{NeedsTeXFormat}\{LaTeX2e\} +%\cs{ProvidesPackage}\{pressrelease-\meta{LANG}\} +%\end{alltt} +%\begin{verbatim} +%\renewcommand*{\PRreleasetext}{For immediate release} +%\renewcommand*{\PRcontacttext}{Contact} +%\renewcommand*{\PRphonetext}{Telephone} +%\renewcommand*{\PRmobiletext}{Mobile} +%\renewcommand*{\PRemailtext}{Email} +%\renewcommand*{\PRurltext}{Website} +%\renewcommand*{\PRfaxtext}{Fax} +%\renewcommand*{\PRcompanytext}{Company} +%\renewcommand*{\PRdepartmenttext}{Department} +%\renewcommand*{\PRaddresstext}{Address} +%\renewcommand*{\PRhourstext}{Opening Times} +%\renewcommand*{\PRdatetext}{Date} +%\renewcommand*{\PRlocationtext}{Location} +%\renewcommand*{\PRabouttext}{About \PRusevar{company}} +%\renewcommand*{\PRencltext}{Encl.} +%\renewcommand*{\PRnOfm}[2]{#1 of #2} +% +%\endinput +%\end{verbatim} +%If you want to use the \sty{babel} interface, you can add the +%definitions to the \cs{captions}\meta{LANG} command: +%\begin{alltt} +%\cs{addto}\cs{captions}\meta{LANG}\{\% +% \cs{renewcommand}*\{\cs{PRreleasetext}\}\{For immediate release\} +% \% etc +%\} +%\end{alltt} +% +%Put the file somewhere on \TeX's path, and now you can use this +%package in your document. You might also consider uploading it +%to CTAN in case other users find it useful. +% +%\section{Example Document} +% +%The document below uses the default layout. (The first two lines are +%\texttt{arara} directives. You can ignore them if you don't use +%\texttt{arara}, but they are a reminder that two \LaTeX\ runs are +%required.) The \isty{babel} package is loaded with the +%\texttt{british} option to change the default date format. The image +%file used for the logo is provided by the \sty{mwe} package. The +%resulting document is shown in Figure~\ref{fig:sample}. This +%example, and others, can be found in the \texttt{samples} +%subdirectory of the documentation directory. +% +%\verbatiminput{samples/sample-pressrelease} +% +%\begin{figure}[p] +% \centering +% \frame{\includegraphics[height=0.9\textheight]{samples/sample-pressrelease}} +% \caption{Sample Document} +% \label{fig:sample} +%\end{figure} +% +%\clearpage +%\StopEventually{\PrintIndex} +% +% +%\section{The Code} +%\iffalse +% \begin{macrocode} +%<*pressrelease.cls> +% \end{macrocode} +%\fi +%\subsection{pressrelease.cls} +%\changes{1.0}{2014-09-10}{Initial release} +% Declare class and required TeX format: +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{pressrelease}[2014/09/10 v1.0 (NLCT) Press Release Class] +% \end{macrocode} +% Class options have a key=value interface. +% \begin{macrocode} +\RequirePackage{xkeyval} +\RequirePackage{etoolbox} +% \end{macrocode} +% +% Font size options. +% \begin{macrocode} +\DeclareOptionX{10pt}{\PassOptionsToClass{10pt}{article}} +\DeclareOptionX{11pt}{\PassOptionsToClass{11pt}{article}} +\DeclareOptionX{12pt}{\PassOptionsToClass{12pt}{article}} +% \end{macrocode} +% Paper size options (sizes can also be set via \cs{geometry}) +% \begin{macrocode} +\DeclareOptionX{letterpaper}{\PassOptionsToClass{letterpaper}{article}} +\DeclareOptionX{a4paper}{\PassOptionsToClass{a4paper}{article}} +% \end{macrocode} +% +%\begin{macro}{\ifPRloadsymbols} +% Load \sty{pressrelease-symbols} if true +% \begin{macrocode} +\define@boolkey{pressrelease.cls}[@PRload]{symbols}[true]{} +\@PRloadsymbolsfalse +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ifPRheadabove} +% If true, head line goes above top info block otherwise headline +% goes below top info block. +% \begin{macrocode} +\newif\ifPRheadabove +\PRheadabovetrue +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRheadalign} +% Headline alignment (default: centred) +% \begin{macrocode} +\newcommand{\PRheadalign}[1]{% + \begin{center}#1\end{center}% +} +% \end{macrocode} +%\end{macro} +% +% \begin{macrocode} +\define@choicekey{pressrelease.cls}{head}[\val\nr]% + {above,below,center,left,right,centre,% + above center,above centre,above left,above right,% + below center,below centre,below left,below right}% + {% + \ifcase\nr\relax + \PRheadabovetrue + \or + \PRheadabovefalse + \or + \renewcommand{\PRheadalign}[1]{\begin{center}##1\end{center}}% + \or + \renewcommand{\PRheadalign}[1]{\begin{flushleft}##1\end{flushleft}}% + \or + \renewcommand{\PRheadalign}[1]{\begin{flushright}##1\end{flushright}}% + \or + \renewcommand{\PRheadalign}[1]{\begin{center}##1\end{center}}% + \or % above center + \PRheadabovetrue + \renewcommand{\PRheadalign}[1]{\begin{center}##1\end{center}}% + \or % above centre + \PRheadabovetrue + \renewcommand{\PRheadalign}[1]{\begin{center}##1\end{center}}% + \or % above left + \PRheadabovetrue + \renewcommand{\PRheadalign}[1]{\begin{flushleft}##1\end{flushleft}}% + \or % above right + \PRheadabovetrue + \renewcommand{\PRheadalign}[1]{\begin{flushright}##1\end{flushright}}% + \or % below centre + \PRheadabovefalse + \renewcommand{\PRheadalign}[1]{\begin{center}##1\end{center}}% + \or % below center + \PRheadabovefalse + \renewcommand{\PRheadalign}[1]{\begin{center}##1\end{center}}% + \or % below left + \PRheadabovefalse + \renewcommand{\PRheadalign}[1]{\begin{flushleft}##1\end{flushleft}}% + \or % below right + \PRheadabovefalse + \renewcommand{\PRheadalign}[1]{\begin{flushright}##1\end{flushright}}% + \fi +} +% \end{macrocode} +% +%\begin{macro}{\PRlogoformat} +% \begin{macrocode} +\newcommand*{\PRlogoformat}[1]{#1} +% \end{macrocode} +% Make it possible for user to ``smash'' logo so it doesn't take up +% vertical space: +% \begin{macrocode} +\define@choicekey{pressrelease.cls}{smashlogo}[\val\nr]{true,false}[true]{% + \ifcase\nr\relax + \renewcommand*{\PRlogoformat}[1]{\vbox to 0pt{##1}}% + \or + \renewcommand*{\PRlogoformat}[1]{##1}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRlogoalign} +% \begin{macrocode} +\newif\ifPRlogoabove +\PRlogoabovetrue +\newcommand{\PRlogoalign}[1]{{\raggedleft\PRlogoformat{#1}\par}} +\define@choicekey{pressrelease.cls}{logo}[\val\nr]% + {left,right,above,below,above left,above right,below left,below right}{% + \ifcase\nr\relax + \renewcommand{\PRlogoalign}[1]{{\raggedright\PRlogoformat{##1}\@@par}}% + \or + \renewcommand{\PRlogoalign}[1]{{\raggedleft\PRlogoformat{##1}\@@par}}% + \or + \PRlogoabovetrue + \or + \PRlogoabovefalse + \or + \PRlogoabovetrue + \renewcommand{\PRlogoalign}[1]{{\raggedright\PRlogoformat{##1}\@@par}}% + \or + \PRlogoabovetrue + \renewcommand{\PRlogoalign}[1]{{\raggedleft\PRlogoformat{##1}\@@par}}% + \or + \PRlogoabovefalse + \renewcommand{\PRlogoalign}[1]{{\raggedright\PRlogoformat{##1}\@@par}}% + \or + \PRlogoabovefalse + \renewcommand{\PRlogoalign}[1]{{\raggedleft\PRlogoformat{##1}\@@par}}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRreleasealign} +% Release alignment (default: centred) +% \begin{macrocode} +\newcommand{\PRreleasealign}[1]{% + \begin{center}#1\end{center}% +} +\define@choicekey{pressrelease.cls}{releasealign}[\val\nr]{center,left,right,centre}{% + \ifcase\nr\relax + \renewcommand{\PRreleasealign}[1]{\begin{center}##1\end{center}}% + \or + \renewcommand{\PRreleasealign}[1]{\begin{flushleft}##1\end{flushleft}}% + \or + \renewcommand{\PRreleasealign}[1]{\begin{flushright}##1\end{flushright}}% + \or + \renewcommand{\PRreleasealign}[1]{\begin{center}##1\end{center}}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ifPRruled} +% Use horizontal rules if true. +% \begin{macrocode} +\define@boolkey{pressrelease.cls}[PR]{ruled}[true]{} +\PRruledtrue +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRinfotopalign} +% Contact details alignment of top info block (default: left) +% \begin{macrocode} +\newcommand{\PRinfotopalign}[1]{% + \begin{flushleft}#1\end{flushleft}% +} +\define@choicekey{pressrelease.cls}{topinfoalign}[\val\nr]{center,left,right,centre}{% + \ifcase\nr\relax + \renewcommand{\PRinfotopalign}[1]{\begin{center}##1\end{center}}% + \or + \renewcommand{\PRinfotopalign}[1]{\begin{flushleft}##1\end{flushleft}}% + \or + \renewcommand{\PRinfotopalign}[1]{\begin{flushright}##1\end{flushright}}% + \or + \renewcommand{\PRinfotopalign}[1]{\begin{center}##1\end{center}}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRinfobottomalign} +% Contact details alignment of bottom info block (default: right) +% \begin{macrocode} +\newcommand{\PRinfobottomalign}[1]{% + \begin{flushright}#1\end{flushright}% +} +\define@choicekey{pressrelease.cls}{bottominfoalign}[\val\nr]{center,left,right,centre}{% + \ifcase\nr\relax + \renewcommand{\PRinfobottomalign}[1]{\begin{center}##1\end{center}}% + \or + \renewcommand{\PRinfobottomalign}[1]{\begin{flushleft}##1\end{flushleft}}% + \or + \renewcommand{\PRinfobottomalign}[1]{\begin{flushright}##1\end{flushright}}% + \or + \renewcommand{\PRinfobottomalign}[1]{\begin{center}##1\end{center}}% + \fi +} +% \end{macrocode} +%\end{macro} +% +% Process options +% \begin{macrocode} +\ProcessOptionsX +% \end{macrocode} +% Load \cls{article} class: +% \begin{macrocode} +\LoadClass{article} +% \end{macrocode} +% Load required packages: +% \begin{macrocode} +\RequirePackage{setspace} +\RequirePackage{geometry} +\RequirePackage{url} +\RequirePackage{refcount} +% \end{macrocode} +% Set wide margins +% \begin{macrocode} +\geometry{hmargin=1in,vmargin=1in,hcentering} +% \end{macrocode} +% Start with single spacing. +% \begin{macrocode} +\singlespacing +% \end{macrocode} +% +% Text defaults: +%\begin{macro}{\PRreleasetext} +% \begin{macrocode} +\newcommand*{\PRreleasetext}{For immediate release} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRcontacttext} +% \begin{macrocode} +\newcommand*{\PRcontacttext}{Contact} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRphonetext} +% \begin{macrocode} +\newcommand*{\PRphonetext}{Telephone} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRmobiletext} +% \begin{macrocode} +\newcommand*{\PRmobiletext}{Mobile} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRemailtext} +% \begin{macrocode} +\newcommand*{\PRemailtext}{Email} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRurltext} +% \begin{macrocode} +\newcommand*{\PRurltext}{Website} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRfaxtext} +% \begin{macrocode} +\newcommand*{\PRfaxtext}{Fax} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRcompanytext} +% \begin{macrocode} +\newcommand*{\PRcompanytext}{Company} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRdepartmenttext} +% \begin{macrocode} +\newcommand*{\PRdepartmenttext}{Department} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRaddresstext} +% \begin{macrocode} +\newcommand*{\PRaddresstext}{Address} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRhourstext} +% \begin{macrocode} +\newcommand*{\PRhourstext}{Opening Times} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRdatetext} +% \begin{macrocode} +\newcommand*{\PRdatetext}{Date} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRlocationtext} +% \begin{macrocode} +\newcommand*{\PRlocationtext}{Location} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRabouttext} +% \begin{macrocode} +\newcommand*{\PRabouttext}{About \PRusevar{company}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRencltext} +% \begin{macrocode} +\newcommand*{\PRencltext}{Encl.} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRrelease} +% Set the release text. +% \begin{macrocode} +\newcommand*{\PRrelease}[1]{\renewcommand*{\@PRrelease}{#1}} +\newcommand*{\@PRrelease}{\PRreleasetext} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRreleaseformat} +% Format used for the release text. +% \begin{macrocode} +\newcommand*{\PRreleaseformat}[1]{\textbf{\Large\MakeUppercase{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRdohrule} +% Do a horizontal rule if the ruled option has been set. +% \begin{macrocode} +\newcommand{\PRdohrule}{\ifPRruled\par\noindent\hrulefill\par\noindent\fi} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRtagformat} +% Font for the tags: +% \begin{macrocode} +\newcommand*{\PRtagformat}[1]{\textbf{#1:}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRcompany} +% Set the company name. +% \begin{macrocode} +\newcommand*{\PRcompany}[1]{\renewcommand*{\@PRcompany}{#1}} +\newcommand*{\@PRcompany}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRdepartment} +% Set the department name. +% \begin{macrocode} +\newcommand*{\PRdepartment}[1]{\renewcommand*{\@PRdepartment}{#1}} +\newcommand*{\@PRdepartment}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRcontact} +% Set the contact name. +% \begin{macrocode} +\newcommand*{\PRcontact}[1]{\renewcommand*{\@PRcontact}{#1}} +\newcommand*{\@PRcontact}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRaddress} +% Set the address. +% \begin{macrocode} +\newcommand*{\PRaddress}[1]{\renewcommand*{\@PRaddress}{#1}} +\newcommand*{\@PRaddress}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRlocation} +% Set the location. +% \begin{macrocode} +\newcommand*{\PRlocation}[1]{\renewcommand*{\@PRlocation}{#1}} +\newcommand*{\@PRlocation}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRphone} +% Set the phone number. +% \begin{macrocode} +\newcommand*{\PRphone}[1]{\renewcommand*{\@PRphone}{#1}} +\newcommand*{\@PRphone}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRmobile} +% Set the mobile number. +% \begin{macrocode} +\newcommand*{\PRmobile}[1]{\renewcommand*{\@PRmobile}{#1}} +\newcommand*{\@PRmobile}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRfax} +% Set the fax number. +% \begin{macrocode} +\newcommand*{\PRfax}[1]{\renewcommand*{\@PRfax}{#1}} +\newcommand*{\@PRfax}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRemail} +% Set the email address. +% \begin{macrocode} +\newcommand*{\PRemail}[1]{\renewcommand*{\@PRemail}{\PRemailformat{#1}}} +\newcommand*{\@PRemail}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRemailformat} +% \begin{macrocode} +\newcommand*{\PRemailformat}[1]{\texttt{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRurl} +% Set the web address. +% \begin{macrocode} +\newcommand*{\PRurl}[1]{\renewcommand*{\@PRurl}{\protect\url{#1}}} +\newcommand*{\@PRurl}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRhours} +% Set the opening hours. +% \begin{macrocode} +\newcommand*{\PRhours}[1]{\renewcommand*{\@PRhours}{#1}} +\newcommand*{\@PRhours}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRlogo} +% Set the company logo. +% \begin{macrocode} +\newcommand*{\PRlogo}[1]{\renewcommand*{\@PRlogo}{#1}} +\newcommand*{\@PRlogo}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRencl} +% Set the enclosure text. +% \begin{macrocode} +\newcommand*{\PRencl}[1]{\renewcommand*{\@PRencl}{#1}} +\newcommand*{\@PRencl}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRusevar} +% Access information set using the above commands. +% \begin{macrocode} +\newcommand*{\PRusevar}[1]{\csuse{@PR#1}} +% \end{macrocode} +%\end{macro} +% Allow the date to be accessed in the same way. +% \begin{macrocode} +\newcommand*{\@PRdate}{\@date} +% \end{macrocode} +% +%\begin{macro}{\PRinfotopblock} +%\begin{definition} +%\cs{PRinfotopblock}\marg{company}\marg{department}\marg{location}\marg{contact +%name}\marg{address}\marg{opening +%hours}\marg{phone}\marg{email}\marg{date} +%\end{definition} +% Order of information in the top info block. +% \begin{macrocode} +\newcommand{\PRinfotopblock}[9]{#1#2#3#9} +% \end{macrocode} +% +%\begin{macro}{\PRinfobottomblock} +%\begin{definition} +%\cs{PRinfobottomblock}\marg{company}\marg{department}\marg{location}\marg{contact +%name}\marg{address}\marg{opening +%hours}\marg{phone}\marg{email}\marg{date} +%\end{definition} +% Order of information in the bottom info block. +% \begin{macrocode} +\newcommand{\PRinfobottomblock}[9]{#4#5#6#7#8} +% \end{macrocode} +% +% Provide option to set order of items in the info blocks. First define a list parser that +% uses the hyphen character as the separator. +% \begin{macrocode} +\DeclareListParser*{\@PR@forslashlist}{/} +\newcommand*{\@PR@slashlistdo}[1]{% + \ifstrequal{#1}{company}% + {\appto\@PR@infoargs{##1}}% + {% + \ifstrequal{#1}{department}% + {\appto\@PR@infoargs{##2}}% + {% + \ifstrequal{#1}{location}% + {\appto\@PR@infoargs{##3}}% + {% + \ifstrequal{#1}{contact}% + {\appto\@PR@infoargs{##4}}% + {% + \ifstrequal{#1}{address}% + {\appto\@PR@infoargs{##5}}% + {% + \ifstrequal{#1}{hours}% + {\appto\@PR@infoargs{##6}}% + {% + \ifstrequal{#1}{phone}% + {\appto\@PR@infoargs{##7}}% + {% + \ifstrequal{#1}{email}% + {\appto\@PR@infoargs{##8}}% + {% + \ifstrequal{#1}{date}% + {\appto\@PR@infoargs{##9}}% + {% + \ClassError{pressrelease}% + {Unknown info block option `#1'}% + {Available options: `company', `department', + `location', `contact', `address', `hours', `phone', + `email', `date'}% + }% + }% + }% + }% + }% + }% + }% + }% + }% +} +% \end{macrocode} +% +% The options below can't be passed as class options. They must be +% set using \cs{PRset}. +% +% \begin{macrocode} +\define@key{pressrelease.cls}{topinfo}{% + \def\@PR@infoargs{}% + \@PR@forslashlist\@PR@slashlistdo{#1}% + \expandafter\renewcommand\expandafter\PRinfotopblock + \expandafter[\expandafter9\expandafter]\expandafter{\@PR@infoargs}% +} +% \end{macrocode} +%\end{macro} +% +% \begin{macrocode} +\define@key{pressrelease.cls}{bottominfo}{% + \def\@PR@infoargs{}% + \@PR@forslashlist\@PR@slashlistdo{#1}% + \expandafter\renewcommand\expandafter\PRinfobottomblock + \expandafter[\expandafter9\expandafter]\expandafter{\@PR@infoargs}% +} +% \end{macrocode} +%\end{macro} + +%\begin{macro}{\PRset} +% \begin{macrocode} +\newcommand*{\PRset}[1]{\setkeys{pressrelease.cls}{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PR@infotopline} +% Check for empty entry. +% \begin{macrocode} +\newcommand*{\PR@infotopline}[2]{% + \ifdefempty{#2}{}{\PRinfotopline{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PR@infobottomline} +% Check for empty entry. +% \begin{macrocode} +\newcommand*{\PR@infobottomline}[2]{% + \ifdefempty{#2}{}{\PRinfobottomline{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PR@doinfotop} +% Do the top info block details. +% \begin{macrocode} +\newcommand{\PR@doinfotop}{% + \PRinfotopalign{% + \PR@doinfoblock\PR@infotopline\PRinfotopblock + \PRinfotopbeginhook\PRinfotopendhook + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PR@doinfobottom} +% Do the bottom info block details. +% \begin{macrocode} +\newcommand{\PR@doinfobottom}{% + \PRinfobottomalign{% + \PR@doinfoblock\PR@infobottomline\PRinfobottomblock + \PRinfobottombeginhook\PRinfobottomendhook + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PR@doinfoblock} +%\begin{definition} +%\cs{PR@doinfoblock}\marg{info line cs}\marg{block order cs}\marg{begin hook cs}\marg{end hook cs} +%\end{definition} +% Do info block details. +% \begin{macrocode} +\newcommand{\PR@doinfoblock}[4]{% + \begin{tabular}{@{}ll@{}}% + #3% + #2% + {% + #1{\PRcompanytext}{\@PRcompany}% + }% + {% + #1{\PRdepartmenttext}{\@PRdepartment}% + }% + {% + #1{\PRlocationtext}{\@PRlocation}% + }% + {% + #1{\PRcontacttext}{\@PRcontact}% + }% + {% + #1{\PRaddresstext}{\@PRaddress}% + }% + {% + #1{\PRhourstext}{\@PRhours}% + }% + {% + #1{\PRphonetext}{\@PRphone}% + #1{\PRmobiletext}{\@PRmobile}% + #1{\PRfaxtext}{\@PRfax}% + }% + {% + #1{\PRemailtext}{\@PRemail}% + }% + {% + #1{\PRdatetext}{\@date}% + }% + #4% + \end{tabular}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRinfoentry} +% Format the entry information within the info line (not the tag). +% \begin{macrocode} +\newcommand*{\PRinfoentry}[1]{\begin{tabular}[t]{@{}l@{}}#1\end{tabular}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRinfoline} +% Generic line format for info block. +% \begin{macrocode} +\newcommand*{\PRinfoline}[2]{% + \PRtagformat{#1} & \PRinfoentry{#2}\tabularnewline +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRinfotopline} +% Format line in the top info block. +% \begin{macrocode} +\newcommand*{\PRinfotopline}{\PRinfoline} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRinfobottomline} +% Format line in the bottom info block. +% \begin{macrocode} +\newcommand*{\PRinfobottomline}{\PRinfoline} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRinfotopbeginhook} +% Hook for user to provide additional information at the start of the +% top info block. +% \begin{macrocode} +\newcommand*{\PRinfotopbeginhook}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRinfotopendhook} +% Hook for user to provide additional information at the end of the +% info block. +% \begin{macrocode} +\newcommand*{\PRinfotopendhook}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRinfobottombeginhook} +% Hook for user to provide additional information at the start of the +% bottom info block. +% \begin{macrocode} +\newcommand*{\PRinfobottombeginhook}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRinfobottomendhook} +% Hook for user to provide additional information at the end of the +% info block. +% \begin{macrocode} +\newcommand*{\PRinfobottomendhook}{} +% \end{macrocode} +%\end{macro} + + +%\begin{macro}{\PRheadline} +% \begin{macrocode} +\newcommand*{\PRheadline}[1]{\renewcommand*{\@PRheadline}{#1}} +\newcommand*{\@PRheadline}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRsubheadline} +% \begin{macrocode} +\newcommand*{\PRsubheadline}[1]{\renewcommand*{\@PRsubheadline}{#1}} +\newcommand*{\@PRsubheadline}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRheadformat} +% \begin{macrocode} +\newcommand*{\PRheadformat}[1]{\textbf{\Large #1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\PRsubheadformat} +% \begin{macrocode} +\newcommand*{\PRsubheadformat}[1]{\textit{#1}} +% \end{macrocode} +%\end{macro} +% +% Just in case anyone wants to have multiple statements in a single +% document: +% \begin{macrocode} +\newcounter{pressrelease} +% \end{macrocode} +% +%\begin{macro}{\PRthelastpage} +% \begin{macrocode} +\newcommand*{\PRthelastpage}{0} +% \end{macrocode} +%\end{macro} +% +%\begin{environment}{pressrelease} +% \begin{macrocode} +\newenvironment{pressrelease}% +{% + \refstepcounter{pressrelease}% + \refused{pressreleaseend.\number\c@pressrelease}% + \xdef\PRthelastpage{% + \getpagerefnumber{pressreleaseend.\number\c@pressrelease}}% + \pagestyle{pressrelease}% + \ifPRlogoabove + \ifdefempty\@PRlogo{}{\PRlogoalign{\@PRlogo}}% + \fi + \PRreleasealign{% + \PRdohrule\mbox{}\par\noindent + \PRreleaseformat{\@PRrelease}% + \ifPRheadabove\else\PRdohrule\fi + }% + \ifPRlogoabove + \else + \ifdefempty\@PRlogo{}{\PRlogoalign{\@PRlogo}}% + \fi + \ifPRheadabove + \PRheadalign + {% + \PRheadformat{\@PRheadline}% + \ifdefempty\@PRsubheadline + {}% + {\par\PRsubheadformat{\@PRsubheadline}}% + \PRdohrule + }% + \par\noindent\PR@doinfotop + \else + \par\noindent\PR@doinfotop + \PRheadalign + {% + \PRdohrule\mbox{}\par\noindent + \PRheadformat{\@PRheadline}% + \ifdefempty\@PRsubheadline + {}% + {\par\PRsubheadformat{\@PRsubheadline}}% + \PRdohrule + }% + \fi + \par + \doublespacing + \@afterheading\@afterindentfalse +}% +{% + \par\singlespacing + \PR@doinfobottom + \ifdefempty{\@PRencl}{}% + {\par\noindent\PRenclformat{\PRencltext}{\@PRencl}}% + \PRformatendsignal{\PRendsignal}% + \label{pressreleaseend.\number\c@pressrelease}% +}% +% \end{macrocode} +%\end{environment} +% +%\begin{macro}{\PRenclformat} +% \begin{macrocode} +\newcommand*{\PRenclformat}[2]{% + \begin{tabular}{@{}ll}% + \PRtagformat{#1}&\PRinfoentry{#2}% + \end{tabular}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRheaderfont} +% Font used in page header. +% \begin{macrocode} +\newcommand*{\PRheaderfont}[1]{\textit{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ps@pressrelease} +% Press release page style. +% \begin{macrocode} +\newcommand*{\ps@pressrelease}{% + \gdef\@oddhead{\hfill\ifnum\c@page>1\relax + \PRheaderfont{\PRusevar{headline}}% + \fi\hfill}% + \global\let\@evenhead\@oddhead + \gdef\@oddfoot{% + \hfill + \PRnOfm{\thepage}{\PRthelastpage}% + \hfill}% + \global\let\@evenfoot\@oddfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRnOfm} +% \begin{macrocode} +\newcommand*{\PRnOfm}[2]{#1 of #2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRendsignal} +% End of statement marker. +% \begin{macrocode} +\newcommand*{\PRendsignal}{\#\#\#} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRformatendsignal} +% \begin{macrocode} +\newcommand*{\PRformatendsignal}[1]{\begin{center}#1\end{center}} +% \end{macrocode} +%\end{macro} +% +%\begin{environment}{about} +% \begin{macrocode} +\newenvironment{about}% + {% + \section*{\PRabouttext}% + }% + {% + \ifdefempty\@PRurl + {}% + {% + \PRurlformat{\PRurltext}{\@PRurl}\PRaboutposturlhook\par + }% + } +% \end{macrocode} +%\end{environment} +% +%\begin{macro}{\PRurlformat} +% \begin{macrocode} +\newcommand{\PRurlformat}[2]{% + \par\noindent\PRtagformat{#1} #2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PRaboutposturlhook} +% Allow user to add text after the website address. +% \begin{macrocode} +\newcommand*{\PRaboutposturlhook}{} +% \end{macrocode} +%\end{macro} +% +% Finally, load \sty{pressrelease-symbols} if required: +% \begin{macrocode} +\if@PRloadsymbols + \RequirePackage{pressrelease-symbols} +\fi +\disable@keys{pressrelease.cls}{symbols} +% \end{macrocode} +%\iffalse +% \begin{macrocode} +% +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*pressrelease-symbols.sty> +% \end{macrocode} +%\fi +%\subsection{pressrelease-symbols.sty} +% This package loads \sty{marvosym} and \sty{tikz} to define symbols +% for the bottom info block. The tags are suppressed for the top +% info block. This package should be used with the +% \clsfmt{pressrelease} class. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pressrelease-symbols}[2014/09/10 v1.0 (NLCT)] +% \end{macrocode} +% Load \sty{marvosym} and \sty{tikz}: +% \begin{macrocode} +\RequirePackage{marvosym} +\RequirePackage{tikz} +% \end{macrocode} +% Define a command to produce a paper clip symbol. +% \begin{macrocode} +\newcommand*{\paperclip}{% + \begin{tikzpicture}[x=0.055ex,y=0.055ex,rotate=-90] + \draw[line width=0.05ex] (9,-1) -- (26,-1) + .. controls (33,1) and (33,9) .. + (26,11) -- (8,11) + .. controls (0,11) and (0,2) .. + (8,2) -- (22,2) + .. controls (26,2) and (26,8) .. + (22,8) -- (8,8); + \end{tikzpicture}% +} +% \end{macrocode} +% Remove tags from top info block +% \begin{macrocode} +\renewcommand*{\PRinfotopline}[2]{% + \PRinfoentry{#2}\tabularnewline +} +% \end{macrocode} +% Change textual tags to use symbols +% \begin{macrocode} +\renewcommand*{\PRcontacttext}{\Info} +\renewcommand*{\PRphonetext}{\Telefon} +\renewcommand*{\PRmobiletext}{\Mobilefone} +\renewcommand*{\PRfaxtext}{\fax} +\renewcommand*{\PRemailtext}{\Email} +\renewcommand*{\PRaddresstext}{\Letter} +\renewcommand*{\PRhourstext}{\ClockLogo} +\renewcommand*{\PRurltext}{\ComputerMouse} +\renewcommand*{\PRencltext}{\paperclip} +% \end{macrocode} +% Remove the colon and bold formatting from the tag: +% \begin{macrocode} +\renewcommand*{\PRtagformat}[1]{#1} +% \end{macrocode} +%\iffalse +% \begin{macrocode} +% +% \end{macrocode} +%\fi +%\Finale +\endinput diff --git a/Master/texmf-dist/source/latex/pressrelease/pressrelease.ins b/Master/texmf-dist/source/latex/pressrelease/pressrelease.ins new file mode 100644 index 00000000000..e519e6b7ea2 --- /dev/null +++ b/Master/texmf-dist/source/latex/pressrelease/pressrelease.ins @@ -0,0 +1,33 @@ +% pressrelease.ins generated using makedtx version 1.1 2014/9/10 18:01 +\input docstrip + +\preamble + + pressrelease.dtx + Copyright 2014 Nicola Talbot + + This work may be distributed and/or modified under the + conditions of the LaTeX Project Public License, either version 1.3 + of this license of (at your option) any later version. + The latest version of this license is in + http://www.latex-project.org/lppl.txt + and version 1.3 or later is part of all distributions of LaTeX + version 2005/12/01 or later. + + This work has the LPPL maintenance status `maintained'. + + The Current Maintainer of this work is Nicola Talbot. + + This work consists of the files pressrelease.dtx and pressrelease.ins and the derived files pressrelease.cls, pressrelease-symbols.sty. + +\endpreamble + +\askforoverwritefalse + +\generate{\file{pressrelease.cls}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{pressrelease.dtx}{pressrelease.cls,package}} +\file{pressrelease-symbols.sty}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{pressrelease.dtx}{pressrelease-symbols.sty,package}} +} + +\endbatchfile -- cgit v1.2.3