summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-01-15 03:05:16 +0000
committerNorbert Preining <norbert@preining.info>2021-01-15 03:05:16 +0000
commitbdead7ff97ef61cca4f56b4a153cc85e18c41fda (patch)
tree8637c036f7a9879c7af64b7b9de8fa82d06e8b1d /macros/latex/contrib
parenta607bd31ca2f248c3553f46abe08f9bc257390d8 (diff)
CTAN sync 202101150305
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/easybook/README.md4
-rw-r--r--macros/latex/contrib/easybook/doc/easybook-demo.pdfbin308559 -> 308552 bytes
-rw-r--r--macros/latex/contrib/easybook/doc/easybook-demo.tex8
-rw-r--r--macros/latex/contrib/easybook/doc/easybook.pdfbin229049 -> 230898 bytes
-rw-r--r--macros/latex/contrib/easybook/doc/easybook.tex10
-rw-r--r--macros/latex/contrib/easybook/easybook.cls24
-rw-r--r--macros/latex/contrib/fcolumn/README24
-rw-r--r--macros/latex/contrib/fcolumn/fcolumn.dtx438
-rw-r--r--macros/latex/contrib/fcolumn/fcolumn.ins8
-rw-r--r--macros/latex/contrib/fcolumn/fcolumn.pdfbin281502 -> 318761 bytes
-rw-r--r--macros/latex/contrib/fcolumn/fcolumn.sty299
-rw-r--r--macros/latex/contrib/fcolumn/makefile18
-rw-r--r--macros/latex/contrib/readablecv/README.md24
-rw-r--r--macros/latex/contrib/readablecv/ReadableCV.cls188
-rw-r--r--macros/latex/contrib/readablecv/ReadableCV.pdfbin94148 -> 135615 bytes
-rw-r--r--macros/latex/contrib/readablecv/ReadableCV.tex141
16 files changed, 593 insertions, 593 deletions
diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md
index f3499d9dd8..e33ecae209 100644
--- a/macros/latex/contrib/easybook/README.md
+++ b/macros/latex/contrib/easybook/README.md
@@ -28,7 +28,7 @@ This work may be distributed and/or modified under the conditions of the CC-BY 4
## Website
-| [Gitee](https://gitee.com/TeX-doc/easybook) | [Github](https://github.com/TeX-doc/easybook) | [CTAN](https://ctan.org/pkg/easybook) | [Font](https://wws.lanzous.com/b01ns361i) |
+| [Gitee](https://gitee.com/texl3/easybook) | [Github](https://github.com/texl3/easybook) | [CTAN](https://ctan.org/pkg/easybook) | [Font](https://wws.lanzous.com/b01ns361i) |
# easybook 书籍文档类
@@ -60,4 +60,4 @@ xelatex -shell-escape easybook-demo
## 网址
-| [Gitee](https://gitee.com/TeX-doc/easybook) | [Github](https://github.com/TeX-doc/easybook) | [CTAN](https://ctan.org/pkg/easybook) | [字体](https://wws.lanzous.com/b01ns361i) | \ No newline at end of file
+| [Gitee](https://gitee.com/texl3/easybook) | [Github](https://github.com/texl3/easybook) | [CTAN](https://ctan.org/pkg/easybook) | [字体](https://wws.lanzous.com/b01ns361i) | \ No newline at end of file
diff --git a/macros/latex/contrib/easybook/doc/easybook-demo.pdf b/macros/latex/contrib/easybook/doc/easybook-demo.pdf
index 6de20edc12..6007aa288b 100644
--- a/macros/latex/contrib/easybook/doc/easybook-demo.pdf
+++ b/macros/latex/contrib/easybook/doc/easybook-demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/doc/easybook-demo.tex b/macros/latex/contrib/easybook/doc/easybook-demo.tex
index 208bf76afa..a71d505407 100644
--- a/macros/latex/contrib/easybook/doc/easybook-demo.tex
+++ b/macros/latex/contrib/easybook/doc/easybook-demo.tex
@@ -91,12 +91,12 @@
\author
{
瞿毅\thanks{texeasybook@foxmail.com.} \\
- \textcolor[HTML]{c71d23}{\faGit}~\url{https://gitee.com/TeX-doc/easybook}\thanks{Gitee为项目的主要发布地址。} \\
- \faGithub~\url{https://github.com/TeX-doc/easybook} \\
- \textcolor[HTML]{00c2ff}{\faEdge}~\url{https://latexstudio.net} \\
+ \git~\url{https://gitee.com/texl3/easybook}\thanks{Gitee为项目的主要发布地址。} \\
+ \github~\url{https://github.com/texl3/easybook} \\
+ \edge~\url{https://latexstudio.net} \\
\url{https://ctan.org/pkg/easybook}
}
- \date{2021/01/13\hskip\ccwd\relax v1.21c}
+ \date{2021/01/14\hskip\ccwd\relax v1.21d}
}
\begin{document}
diff --git a/macros/latex/contrib/easybook/doc/easybook.pdf b/macros/latex/contrib/easybook/doc/easybook.pdf
index 1ce9c8675b..d63bb1b67a 100644
--- a/macros/latex/contrib/easybook/doc/easybook.pdf
+++ b/macros/latex/contrib/easybook/doc/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/doc/easybook.tex b/macros/latex/contrib/easybook/doc/easybook.tex
index bb52059ba9..c84a11e209 100644
--- a/macros/latex/contrib/easybook/doc/easybook.tex
+++ b/macros/latex/contrib/easybook/doc/easybook.tex
@@ -8,7 +8,7 @@
\title{\sffamily easybook书籍文档类}
\author{瞿毅}
-\date{2021/01/13\hskip\ccwd\relax v1.21c\thanks{\url{https://gitee.com/TeX-doc/easybook}}}
+\date{2021/01/14\hskip\ccwd\relax v1.21d\thanks{\url{https://gitee.com/texl3/easybook}}}
\begin{document}
\maketitle
@@ -295,7 +295,7 @@
\end{syntax}
\changes{v1.21}{2021/01/11}{修复单面文档时页眉横线消失的问题。}
\changes{v1.21c}{2021/01/13}{增加配置页眉页脚的选项。}
-\opt{hdrset} 将选项交给 \pkg{fancyhdr} 宏包页面风格命令 \tn{fancyhf} 处理,\pkg{fancyhdr} 将页眉页脚分成左中右和奇数页(odd)、偶数页(even)共12个部分,所以设置了对应的12个选项。\opt{head} 与 \opt{foot} 表示页眉与页脚区域,前缀e、o代表偶数、奇数,前缀l、c、r代表左、中、右部分。单面打印时,偶数前缀的选项无效。
+\opt{hdrset} 将选项交给 \pkg{fancyhdr} 宏包页面风格命令 \tn{fancyhf} 处理,设置的是一个名为 \opt{fancy} 的页面风格。\pkg{fancyhdr} 将页眉页脚分成左中右和奇数页(odd)、偶数页(even)共12个部分,所以设置了对应的12个选项。\opt{head} 与 \opt{foot} 表示页眉与页脚区域,前缀e、o代表偶数、奇数,前缀l、c、r代表左、中、右部分。单面打印时,偶数前缀的选项无效。
\begin{ctexexam}
\ctexset
{
@@ -311,15 +311,17 @@
\end{function}
\subsection{目录样式}
-\begin{function}[EXP,added = 2021-01-13]{tocset/.../format,tocset/.../indent,tocset/.../rule,\tocrule}
+\begin{function}[EXP,added = 2021-01-13,updated = 2021-01-14]{tocset/.../format,tocset/.../indent,tocset/.../rule,tocset/lolskip,tocset/belowoffset,\tocrule}
\begin{syntax}
format = <目录标题格式>
indent = <目录标题左边缩进>
rule = <目录引导线样式>
+ lolskip = <(0.8pc)>
+ belowoffset = <(-1pc)>
\tn{tocrule} = \oarg{引导点间距}\oarg{引导点大小}\marg{引导点}\oarg{页码格式}
\end{syntax}
\changes{v1.21c}{2021/01/13}{增加配置目录样式的选项。}
-\opt{tocset} 将目录样式交给 \pkg{titletoc} 处理,预置了 \opt{part}、\opt{chapter}、\opt{section}、\opt{subsection} 和 \opt{lists} 五种级别的目录标题,键值列表中的...代表它们。\opt{lists} 为图片、表格和代码目录格式的级别。\tn{tocrule} 命令生成目录引导线,需要在 \opt{rule} 选项中使用,其中引导线间距需带有长度单位,引导点大小不带单位,为引导点符号正常大小的倍数,引导点一般为英文句号或 \tn{cdot} 中心点符号。页码格式的内容位于页码前面,可以设置页码字体、距离。
+\opt{tocset} 将目录样式交给 \pkg{titletoc} 处理,预置了 \opt{part}、\opt{chapter}、\opt{section}、\opt{subsection} 和 \opt{lists} 五种级别的目录标题,键值列表中的...代表它们。\opt{lists} 为图片、表格和代码目录格式的级别。\opt{lolskip} 是代码目录标题后的距离,与\CTeX 的 \opt{lotskip} 和 \opt{lofskip} 不太一样。\opt{belowoffset} 选项为目录总标题 \tn{contentsname} 后的间距补偿,一般为负值,用于抵消 \opt{format} 中设置的间距。建议 \opt{lolskip+lists/format/addvspace = -belowoffset}。\tn{tocrule} 命令生成目录引导线,需要在 \opt{rule} 选项中使用,其中引导线间距需带有长度单位,引导点大小不带单位,为引导点符号正常大小的倍数,引导点一般为英文句号或 \tn{cdot} 中心点符号。页码格式的内容位于页码前面,可以设置页码字体、距离。
\begin{ctexexam}
\ctexset
{
diff --git a/macros/latex/contrib/easybook/easybook.cls b/macros/latex/contrib/easybook/easybook.cls
index 5806182a9e..6e9111e6a9 100644
--- a/macros/latex/contrib/easybook/easybook.cls
+++ b/macros/latex/contrib/easybook/easybook.cls
@@ -9,10 +9,11 @@
%% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/01/13}{v1.21c}{}
+\ProvidesExplClass{easybook}{2021/01/14}{1.21d}{}
\cs_generate_variant:Nn \keys_define:nn {nx}
\cs_generate_variant:Nn \int_to_arabic:n {v}
+\cs_generate_variant:Nn \dim_add:Nn {NV}
\cs_new_protected:Npn \__ctex_define:n #1
{\keys_define:nn {ctex/#1}}
\cs_new_protected:Npn \__put_ctexbook:n #1
@@ -166,6 +167,9 @@
modifier = {by},
version = {4.0}
]{doclicense}
+\cs_new_eq:NN \github\faGithub
+\cs_new:Npn \git{\textcolor[HTML]{c71d23}{\faGit}}
+\cs_new:Npn \edge{\textcolor[HTML]{00c2ff}{\faEdge}}
\ctex_at_end_preamble:n
{
\tl_if_empty:NF \g__config_tl
@@ -437,7 +441,7 @@
\__ctex_define:n {tocset}
{
part/format .tl_set:N = \l__toc_part_format_tl,
- part/format .initial:n =
+ part/format .initial:n =
{\addvspace{1pc}\sffamily\large},
part/indent .tl_set:N = \l__toc_part_indent_tl,
part/indent .initial:n = 0\ccwd,
@@ -471,7 +475,12 @@
lists/indent .tl_set:N = \l__toc_lists_indent_tl,
lists/indent .initial:n = 0\ccwd,
lists/rule .tl_set:N = \l__toc_lists_rule_tl,
- lists/rule .initial:n = \tocrule{$\cdot$}
+ lists/rule .initial:n = \tocrule{$\cdot$},
+ lists/lolskip .dim_set:N = \l__toc_lolskip_dim,
+ lists/lolskip .initial:n = 0.8pc,
+
+ belowoffset .dim_set:N = \l__toc_offset_dim,
+ belowoffset .initial:n = -1pc
}
\NewDocumentCommand{\tocrule}{O{0.7pc}O{1.2}mO{}}
@@ -547,7 +556,7 @@
\bool_if:NT \l__multoc_bool{\twocolumn}
\fi
\__title_mark:n {\contentsname}
- \vspace*{-1pc}
+ \vspace*{\l__toc_offset_dim}
\@starttoc{toc}
\if@restonecol
\twocolumn
@@ -565,7 +574,7 @@
\bool_if:NT \l__multoc_bool{\twocolumn}
\fi
\__title_mark_intoc:n {\listfigurename}
- \vspace*{-1pc}
+ \vspace*{\l__toc_offset_dim}
\@starttoc{lof}
\if@restonecol
\twocolumn
@@ -583,7 +592,7 @@
\bool_if:NT \l__multoc_bool{\twocolumn}
\fi
\__title_mark_intoc:n {\listtablename}
- \vspace*{-1pc}
+ \vspace*{\l__toc_offset_dim}
\@starttoc{lot}
\if@restonecol
\twocolumn
@@ -605,7 +614,8 @@
\fi
}
\__title_mark_intoc:n {\lstlistlistingname}
- \vspace*{-0.2pc}
+ \dim_add:NV \l__toc_offset_dim\l__toc_lolskip_dim
+ \vspace*{\l__toc_offset_dim}
\@starttoc{lol}
\@ifundefined{@restonecoltrue}{}
{
diff --git a/macros/latex/contrib/fcolumn/README b/macros/latex/contrib/fcolumn/README
index 5ee451fa0d..e585aa6aaf 100644
--- a/macros/latex/contrib/fcolumn/README
+++ b/macros/latex/contrib/fcolumn/README
@@ -7,15 +7,16 @@ such columns, including the sum line (preceded by a rule of the correct
width), using the specifier ``f''.
The column specifier f itself is rather simple. It is the predefined
-version of a generic column F. The generic version expects three
-arguments: |#1| is the separator, |#2| is the decimal mark, and |#3|
+version of a generic column F. The generic version expects four
+arguments: |#1| is the separator, |#2| is the decimal mark, |#3| is
the coding used for grouping digits of the integer part and decimal
-part. For example the f-column in the current version of the package
+part, and #4 is anything added before typesetting the contents of a
+column. For example the f-column in the current version of the package
is using 3,2 as #3, meaning that numbers are typeset with 2 decimal
digits and grouping is done on 3 digits. The grouping character is
``.'' and the decimal separator is ``,'', thereby coding for the
continental European standard. People in the Anglo-saxon world would
-rather code |\newcolumntype{f}{F{,}{.}{3,2}}|.
+rather code |\newcolumntype{f}{F{,}{.}{3,2}{}}|.
To show where and how the f-column is used, let's look at a typical
financial table.
@@ -33,7 +34,7 @@ The core part of this table is input as
\begin{tabular}{lflf}
house & 200000 & equity capital & 50000 \\
bank account & -603,23 & mortgage & 150000 \\
-savings & 28000 \\
+savings & 28000 \\
cash & 145,85 & profit & 27542,62 \\
\sumline
\end{tabular}
@@ -44,20 +45,23 @@ calculates the totals, makes rules of the correct widths, and
checks whether the two columns are in balance; if not, the user
is warned via a message. A special command \resetsumline exists
which allows one to restart a table, so that multiple tables
-in one tabular environment are possible.
+that are aligned are possible in one tabular environment.
+ The fcolumn specifier can be used in a tabular environment
+and in the longtable environment. Specific fcolumn formatting,
+like colour and/or font changes are possible.
To install:
-----------
Run the file fcolumn.ins through (La)TeX (in a directory also
containing fcolumn.dtx) or type ``make install'' and move the
-file fcolumn.sty to a place searched by TeX.
+resultant file fcolumn.sty to a place searched by TeX.
To produce the documentation:
-----------------------------
-Run the file fcolumn.dtx through LaTeX. Update the glossary
-and index by makeindex:
+Type ``make''. Or run the file fcolumn.dtx through LaTeX,
+update the glossary and index by makeindex:
makeindex -s gglo.ist -o fcolumn.gls fcolumn.glo
makeindex -s gglo.ist -o fcolumn.ind fcolumn.idx
-and then LaTeX again; presto!
+and then LaTeX fcolumn.dtx again; presto!
diff --git a/macros/latex/contrib/fcolumn/fcolumn.dtx b/macros/latex/contrib/fcolumn/fcolumn.dtx
index 5dcef07b61..41bee63cf1 100644
--- a/macros/latex/contrib/fcolumn/fcolumn.dtx
+++ b/macros/latex/contrib/fcolumn/fcolumn.dtx
@@ -1,5 +1,5 @@
% \iffalse meta-comment
-% Copyright (C) 2015--2019 by Edgar Olthof
+% Copyright (C) 2015--2021 by Edgar Olthof
%
% This file may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -14,11 +14,12 @@
% \fi
% \iffalse
%<package>\ProvidesPackage{fcolumn}
-%<package> [2019/04/24 v1.2 Automatic Currency Package (EHTO)]
+%<package> [2021/01/14 v1.3 Automatic Currency Package (EHTO)]
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\RequirePackage{array}[v2.4k]
%<*driver>
\documentclass{ltxdoc}
+\usepackage{longtable}
\usepackage{fcolumn}
\usepackage{booktabs}
\usepackage[tableposition=top,aboveskip=0pt]{caption}
@@ -30,15 +31,16 @@ indention=0pt,labelsep=colon,justification=raggedright}
\usepackage{url}
\usepackage[hyperfootnotes=false,hidelinks]{hyperref}
\usepackage{eurosym}
+\usepackage{color}
\EnableCrossrefs
\CodelineIndex
-\RecordChanges
\begin{document}
\DocInput{fcolumn.dtx}
\end{document}
%</driver>
% \fi
-% \CheckSum{1078}
+% \RecordChanges
+% \CheckSum{1287}
% \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
@@ -64,24 +66,32 @@ indention=0pt,labelsep=colon,justification=raggedright}
% counts and resetting of column counter done in a nicer way.}
% \changes{v1.1.1}{2015/09/27}{Installation procedure changed from .ins-in-.dtx to separate
% .ins and .dtx after discussion with Karl Berry as well as some minor code improvements.}
-% \changes{v1.1.2}{2015/09/29}{Some inconsistencies between explanatory text
-% and actual code removed.}
+% \changes{v1.1.2}{2015/09/29}{Some inconsistencies between explanatory text and actual
+% code removed.}
% \changes{v1.2}{2019/03/06}{Input parsing changed after comment from Frank
% Mittelbach. He (Frank) also gave various suggestions for improving robustness
% or user friendlyness of this package. This version is only backwards compatible
% when zero decimal digits were and are specified as modifier.}
+% \changes{v1.3}{2021/01/03}{Christian Hoff requested the possibility to provide extra formatting
+% information to a column, e.g., colouring. That was implemented by having an extra parameter
+% to the generic F-column. The current solution is not very robust, as font and/or size change
+% in math environment are very tricky, but providing colour information works, see the example
+% in the main text. This version is now compatible with package longtable. Version~1.3 is
+% backwards compatible to~1.2: it only adds functionality.}
% \GetFileInfo{fcolumn.sty}
-% \DoNotIndex{\@arstrut,\@arstrutbox,\@depth,\@firstampfalse,\@firstamptrue,\@gobble,\@halignto}
-% \DoNotIndex{\@height,\@mkpream,\@ne,\@nextchar,\@preamble,\@sharp,\@tempdima,\@tempswafalse}
-% \DoNotIndex{\@tempswatrue,\@\temptokena,\@tfor,\@whilesw,\@width,\advance,\arraystretch,\baselineskip}
-% \DoNotIndex{\begingroup,\bgroup,\count,\count@,\cr,\csname,\def,\divide,\do,\dp,\edef,\egroup}
-% \DoNotIndex{\else,\endcsname,\endgroup,\expandafter,\extrarowheight,\fi,\gdef,\halignto,\hbox}
-% \DoNotIndex{\hfil,\ht,\if,\if@firstamp,\if@tempswa,\ifcase,\lineskip,\loop,\m@ne,\m@th,\message}
-% \DoNotIndex{\multiply,\or,\par,\prepnext@tok,\protect,\repeat,\setbox,\space,\string,\strutbox}
-% \DoNotIndex{\tabskip,\tabularnewline,\the,\the@toks,\thr@@,\tw@,\unhbox,\vbox,\vcenter,\vrule}
+% \DoNotIndex{\@@endpbox,\@@startpbox,\@acol,\@arstrut,\@arstrutbox,\@classiv,\@classz,\@depth}
+% \DoNotIndex{\@firstampfalse,\@firstamptrue,\@gobble,\@halignto,\@height,\@mkpream,\@ne,\@nextchar}
+% \DoNotIndex{\@preamble,\@sharp,\@tempdima,\@tempswafalse,\@tempswatrue,\@\temptokena,\@tfor}
+% \DoNotIndex{\@whilesw,\@width,\advance,\arraystretch,\baselineskip,\begingroup,\bgroup,\count}
+% \DoNotIndex{\count@,\cr,\csname,\def,\divide,\do,\dp,\edef,\egroup,\hfil,\hline,\ht,\if,\if@firstamp}
+% \DoNotIndex{\if@tempswa,\ifcase,\kill,\lineskip,\LT@@hl,\LT@@tabarray,\LT@bchunk,\LT@caption,\LT@endpbox}
+% \DoNotIndex{\LT@hline,\LT@kill,\LT@LL@FM@cr,\LT@make@row,\LT@mcol,\LT@no@pgbk,\LT@nofcols,\LT@rows}
+% \DoNotIndex{\LT@setprevdepth,\LT@startpbox,\LT@tabularcr,\LTleft,\LTright,\loop,\m@ne,\m@th,\message}
+% \DoNotIndex{\multiply,\or,\par,\prepnext@tok,\protect,\refstepcounter,\repeat,\setbox,\space,\string}
+% \DoNotIndex{\strutbox,\tabskip,\tabularnewline,\the,\the@toks,\thr@@,\tw@,\unhbox,\vbox,\vcenter,\vrule}
% \DoNotIndex{\vskip,\vtop,\wd,\xdef,\z@,\z@skip}
-% \title{The \textsf{fcolumn} package\thanks{This file has version
-% number \fileversion, last revised \filedate.}}
+% \title{The \textsf{fcolumn} package\thanks{This file has version number \fileversion, last
+% revised \filedate.}}
% \author{Edgar Olthof\\
% \texttt{edgar <dot> olthof <at> inter <dot> nl <dot> net}}
% \date{Printed \today}
@@ -98,16 +108,16 @@ indention=0pt,labelsep=colon,justification=raggedright}
% The package |fcolumn| provides the macros for an extra tabular specifier
% that makes creating financial tables easy. The column specifier |f|
% itself is rather simple; it is the predefined version of a generic
-% column |F|. The generic version expects three arguments: 1)~grouping
+% column |F|. The generic version expects four arguments: 1)~grouping
% character of the integer part on output, 2)~decimal mark used on output,
-% and 3)~compact additional information on input/output characteristics,
-% see below.
+% 3)~compact additional information on input/output characteristics, and
+% 4)~anything, but primarily used for providing formatting information, see below.
%
% The f-column in the current version of the package is defined for the
-% continental European standard: |\newcolumntype{f}{F{.}{,}{3,2}}|. This
+% continental European standard: |\newcolumntype{f}{F{.}{,}{3,2}{}}|. This
% means that a number like 12345,67 will be typeset as $12{.}345{,}67$.
% People in the Anglo-saxon world would rather code
-% |\newcolumntype{f}{F{,}{.}{3,2}}| for the same input, yielding
+% |\newcolumntype{f}{F{,}{.}{3,2}{}}| for the same input, yielding
% $12{,}345{.}67$ as output for the number given above. The default
% value for |#3| is |3,2|, indicating
% that grouping of the integer part is by three digits, that a comma is
@@ -116,7 +126,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% If however, in your country or company grouping is done with a thinspace every
% four digits, that the separator in the source should be the character |p|,
% and there are three digits after the decimal mark---that happens to be a
-% |\cdot|---, then simply specify |\newcolumntype{f}{F{\,}{\cdot}{4p3}}| in
+% |\cdot|---, then simply specify |\newcolumntype{f}{F{\,}{\cdot}{4p3}{}}| in
% that case. The input could be 12345p678 then, yielding $1{\,}2345{\cdot}678$
% as output.
%
@@ -125,6 +135,11 @@ indention=0pt,labelsep=colon,justification=raggedright}
% mark) you have to explicitly specify |x,0|. If you want no grouping
% character, specify |0,x|.
%
+% As the fourth parameter you can insert anything just before the typesetting
+% of an amount in a column takes place. Its purpose is to add additional
+% formatting information, e.g., |\color{red}| to have the contents of a column
+% coloured red, but it can be misused, so use with care. And it can't do all!
+%
% This package requires and loads the |array| package~\cite{array}. To
% show where and how the |F|-column is used, let's look at some typical
% financial information as shown in Table~\ref{tab:ex1}
@@ -138,7 +153,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% \midrule
% house & 200000 & equity capital& 50000 \\
% bank account & -603,23 & mortgage & 150000 \\
-% savings & 28000 & & \\
+% savings & 28000 \\
% cash & 145,85 & profit & 27542,62 \\
% \sumline
% \bottomrule
@@ -146,7 +161,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% \end{table}
% and how this is entered in \LaTeX\ (Table~\ref{tab:ex2}).
% \begin{table}[htb]
-% \caption{Verbatim version of Example Table.}
+% \caption{Verbatim version of Example Table~\ref{tab:ex1}.}
% \label{tab:ex2}
% \begin{verbatim}
%\begin{table}[htb]
@@ -159,7 +174,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
%\midrule
%house & 200000 & equity capital& 50000 \\
%bank account & -603,23 & mortgage & 150000 \\
-%savings & 28000 & & \\
+%savings & 28000 \\
%cash & 145,85 & profit & 27542,62 \\
%\sumline
%\bottomrule
@@ -176,17 +191,143 @@ indention=0pt,labelsep=colon,justification=raggedright}
%
% This package is heavily inspired by the |dcolumn| package by
% David Carlisle~\cite{dcolumn}, some constructions are more or less
-% copied from that package. Version~1.2 (this version) uses a few ideas
-% from, and incorporates quite some suggestions by, Frank Mittelbach.
+% copied from that package. Version~1.3 (this version) incorporates the idea
+% of Christian Hoff of providing additional (formatting) information per column.
+% A rather contrived example is given in Table~\ref{tab:ex3}, combining colour and fonts.
+% \newcolumntype{q}[1]{F{.}{,}{3,2}{#1}}
+% \begin{table}[htb]
+% \caption{Example Table with column formatting.}
+% \label{tab:ex3}
+% \begin{tabular}{@{}lq{\color{red}\mathsf,{}\mathbf}lq{\color{green}}@{}}
+% \multicolumn4c{\bfseries Balance sheet}\\
+% \toprule
+% properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
+% \midrule
+% house & 200000 & equity capital& 50000 \\
+% bank account & -603,23 & mortgage & 150000 \\
+% savings & 28000 \\
+% cash & 145,85 & profit & 27542,62 \\
+% \sumline
+% \bottomrule
+% \end{tabular}
+% \end{table}
+% How this is entered in \LaTeX\ is shown in Table~\ref{tab:ex4}.
+% \begin{table}[htb]
+% \caption{Almost verbatim version of Example Table~\ref{tab:ex3}.}
+% \label{tab:ex4}
+% \begin{verbatim}
+%\newcolumntype{q}[1]{F{.}{,}{3,2}{#1}}
+%\begin{table}[htb]
+%\caption{Example Table with column formatting.}
+%\label{tab:ex3}
+%\begin{tabular}{@{}lq{\color{red}\mathsf,{}\mathbf}lq{\color{green}}@{}}
+%\multicolumn4c{\bfseries Balance sheet}\\
+%...
+%...(same financial contents as in Table 1)
+%...
+%\end{tabular}
+%\end{table}
+% \end{verbatim}
+% \end{table}
+% The font changing commands like |\mathsf| and |\mathbf| act on an argument, hence require
+% braces, but these are already provided internally for this purpose. For that reason this
+% type of commands must be given last, without braces (and if you don't specify a font
+% changing command, these extra internal braces are just redundant). The argument to
+% the new columntype may consist of two parts,
+% separated by a comma. In that case, the part to the left of the comma is applied to the
+% whole column and the right part is applied in addition to the result. The example in
+% Table~\ref{tab:ex3} shows this: the bold font is only used in the |\sumline| and the
+% effect of |\mathsf| is annulled by the brace pair before |\mathbf|. You may even change
+% the colour for the |\sumline|, e.g., blue by ``|,{}\color{blue}\mathbf|'', since colour
+% settings do not require braces and the last setting overrides a previous one. If you want
+% bold font for the whole column, leave out the comma (and the |\mathsf{}|).
+%
+% Note that changes in font size, e.g., ``|\huge|'' in ``|\huge\color{red}\mathbf|''
+% as parameter to column type |q| are ignored by \LaTeX, since the formatting
+% information is used in math environment, which has its own way of handling this.
+% This isn't bad, as size changes in one column, without overall changes to the
+% table look terrible. If you want something huge, make a |\huge| table.
+%
+% This package now also works with |longtable|~\cite{longtable}, provided
+% |longtable| is loaded before |fcolumn|; it checks for that. For a change,
+% the raw formatting of the multipage table is shown first, in Table~\ref{tab:ex5}.
+% For more information on how to handle |\endhead| and related commands, see the
+% documentation of |longtable|~\cite{longtable}.
+% \begin{table}[htb]
+% \caption{Almost verbatim version of Example Table~\ref{tab:ex6}.}
+% \label{tab:ex5}
+% \begin{verbatim}
+%\begin{longtable}[l]{@{}lflf@{}}
+%\caption{\label{tab:ex6}Table showing compatibility of fcolumn and
+% longtable.}\\
+%\multicolumn4c{\bfseries Balance sheet}\\
+%\toprule
+%properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
+%\midrule
+%\endfirsthead
+%\caption[]{\textit{(continued from previous page)\/}}\\
+%\midrule
+%properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
+%\midrule
+%\endhead
+%\midrule
+%\multicolumn4{r@{}}{\textit{(Table continues on next page)\/}}\\
+%\endfoot
+%\bottomrule
+%\endlastfoot
+%...
+%...(somewhat altered financial contents as in Table 1)
+%...
+%\end{longtable}
+% \end{verbatim}
+% \end{table}
%
+% \noindent And here is the result (it's ugly, but it had to be that long to
+% demonstrate the page break). Not shown here are the new |fcolumn|
+% formatting possibilities (like new fonts and/or colours), but it has been
+% checked they do work in combination with |longtable|.
+% \begin{longtable}[l]{@{}lflf@{}}
+% \caption{\label{tab:ex6}Table showing compatibility of fcolumn and
+% longtable.}\\
+% \multicolumn4c{\bfseries Balance sheet}\\
+% \toprule
+% properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
+% \midrule
+% \endfirsthead
+% \caption[]{\textit{(continued from previous page)\/}}\\
+% \midrule
+% properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
+% \midrule
+% \endhead
+% \midrule
+% \multicolumn4{r@{}}{\textit{(Table continues on next page)\/}}\\
+% \endfoot
+% \bottomrule
+% \endlastfoot
+% house & 200000 & equity capital& 50000 \\
+% bank account & -603,23 & mortgage & 150000 \\
+% savings 1 & 2800 \\
+% savings 2 & 2800 \\
+% savings 3 & 2800 \\
+% savings 4 & 2800 \\
+% savings 5 & 2800 \\
+% savings 6 & 2800 \\
+% savings 7 & 2800 \\
+% savings 8 & 2800 \\
+% savings 9 & 2800 \\
+% savings 10 & 2800 \\
+% cash & 145,85 & profit & 27542,62 \\
+% \sumline
+% \end{longtable}
+
% \section{Commands}
% The user only needs to know six commands or constructions. These six are given here.
% \begin{macro}{F}
% In the tabular the column specifier |F| can be given with arguments, or
-% the predefined version~|f|, where the three arguments of |F| are |{.}|,
-% |{,}|, and |{3,2}|. If you want |g| to be your own definition like the
+% the predefined version~|f|, where the four arguments of |F| are |{.}|,
+% |{,}|, |{3,2}|, and |{}|. If you want |g| to be your own definition like the
% curious one given in Section~\ref{intro}, then specify
-% |\newcolumntype{g}{F{\,}{\cdot}{4p3}}| prior to using |g| in a tabular.
+% |\newcolumntype{g}{F{\,}{\cdot}{4p3}{}}| prior to using |g| in a tabular.
%
% Entries in an F-column are, from that moment on, treated as numbers unless
% explicitly escaped by |\leeg|, see below. The numbers are typeset
@@ -196,7 +337,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% character is the dot, except when the dot is specified as input decimal
% mark; in that case the comma is acting as input grouping character. With
% this convention the continental Europe and Anglo-saxon part of the world
-% is served.
+% is served. And using input grouping markers is optional.
% \end{macro}
% \begin{macro}{\sumline}
% The numbers in an |F|-column are typeset as a financial amount, but the real
@@ -207,7 +348,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% \item It generates a rule with width calculated in the first item;
% \item It checks the columns that are supposed to balance whether or not they
% actually do. If so, nothing happens. If not, a |\PackageWarning| is given
-% that column $i$ and $j$ do not balance, where $i$ and $j$ are the relevant
+% that column~$i$ and~$j$ do not balance, where $i$ and $j$ are the relevant
% columns. This is only done if the total number of |F|-columns is even,
% e.g., if there are six |F|-columns, then~1 is checked against~4, 2 against~5,
% and 3 against~6. If the number of |F|-columns is odd then anything could be
@@ -217,18 +358,21 @@ indention=0pt,labelsep=colon,justification=raggedright}
% By default the vertical separation between the rule and the total is
% 2\thinspace pt, but this can be changed by the optional argument to
% |\sumline|. Give, e.g., |\sumline[10pt]|, in case you want this spacing
-% to be 10\thinspace pt.
+% to be 10\thinspace pt. And you may even give two options, like in
+% |\sumline[10pt][5pt]|, in which the second option is the extra space below
+% the summary row. In fact that second option is the option to |\\| that is
+% implicit in |\sumline|.
% \end{macro}
% \begin{macro}{\resetsumline}
% Suppose you want to typeset one tabular with the profit-and-loss of many
% projects individually. The layout of those tabulars is the same and it
% were nice if all columns were aligned. This can be done by making it one
% big tabular with a fresh start for each project. The macro
-% |\resetsumlines| is used for that: it resets all totals and all column
-% widths, see for example Table~\ref{tab:ex3}.
+% |\resetsumline| is used for that: it resets all totals and all column
+% widths, see for example Table~\ref{tab:ex7}.
% \begin{table}[htb]
% \caption{Example: multiple projects.}
-% \label{tab:ex3}
+% \label{tab:ex7}
% \begin{tabular}{@{}lfflff@{}}
% \multicolumn6c{\bfseries Project~1}\\
% \toprule
@@ -256,10 +400,10 @@ indention=0pt,labelsep=colon,justification=raggedright}
% Note that the rules in the first and third |F|-columns of project~1 cover
% $1{.}200{,}00$ whereas in project~2 those rules are narrower since they
% only cover $430{,}00$; still the columns are aligned. The verbatim way
-% of setting up Table~\ref{tab:ex3} is given in Table~\ref{tab:ex4}.
+% of setting up Table~\ref{tab:ex7} is given in Table~\ref{tab:ex6}.
% \begin{table}[htb]
-% \caption{Verbatim version of Table~\ref{tab:ex3}.}
-% \label{tab:ex4}
+% \caption{Verbatim version of Table~\ref{tab:ex7}.}
+% \label{tab:ex8}
% \begin{verbatim}
%\begin{table}[htb]
%\caption{Example: multiple projects.}
@@ -317,7 +461,9 @@ indention=0pt,labelsep=colon,justification=raggedright}
% even other ways. By default (for aesthetic reasons) |fcolumn| typesets
% it with a minus~sign, but strict accounting prescibes that the number
% should be put between parentheses. The latter can be accomplished by
-% setting |\strict@ccountingtrue|.
+% setting |\strict@ccountingtrue|. But since this contains a non-letter,
+% it is also possible to invoke |fcolumn| with the option |strict|, i.e.,
+% |\usepackage[strict]{fcolumn}|, which sets this flag.
% \end{macro}
% \StopEventually{\PrintChanges\PrintIndex}
% \section{The macros}
@@ -339,8 +485,8 @@ indention=0pt,labelsep=colon,justification=raggedright}
% column type |f| does not use private macros (no~|@|), so overriding its
% definition is easy for a user.
% \begin{macrocode}
-\newcolumntype{F}[3]{>{\b@fi{#1}{#2}{#3}}r<{\e@fi}}
-\newcolumntype{f}{F{.}{,}{3,2}}
+\newcolumntype{F}[4]{>{\b@fi{#1}{#2}{#3}{#4}}r<{\e@fi}}
+\newcolumntype{f}{F{.}{,}{3,2}{}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -374,21 +520,25 @@ indention=0pt,labelsep=colon,justification=raggedright}
% \end{macrocode}
% Actually |\geldm@cro| is only a wrapper around |\g@ldm@cro|.
% \begin{macrocode}
-\def\geldm@cro#1#2{\withs@pfalse
+\def\geldm@cro#1#2{\withs@pfalse
\afterassignment\g@ldm@cro\count@#1\relax{#2}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\g@ldm@cro}
-% This macro starts by looking at the sign of |#2|: if it is negative, it prints
+% After setting the environment for formatting, this macro starts by looking
+% at the sign of |#2|: if it is negative, it prints
% the correct indicator (a parenthesis or a minus sign), assigns the absolute value
% of~|#2| to |\count2| and goes on. Note that |\geldm@cro| and therefore |\g@ldm@cro|
% are always used within |$|s, so it is really a minus sign that is printed, not a hyphen.
% All calculations are done with |\count0|, |\count1|, etc.\ i.e., without |F|-column-specific
% \meta{count}s because it is all done locally. Leaving the tabular environment will
-% restore their values.
+% restore their values. This is also true for the effect of |\FCform@t|, so that formatting
+% information is local to this column. The reason for inserting the opening brace between
+% |\FCform@t| and |\ifnum| (and the accompanying closing brace after |\fi|) is to facilitate
+% the possible use of |\mathbf| or any other font changing command as the last item in |\FCform@t|.
% \begin{macrocode}
-\def\g@ldm@cro#1\relax#2{\ifnum#2<0 \ifstrict@ccounting (\else -\fi
- \count2=-#2 \else\count2=#2
+\def\g@ldm@cro#1\relax#2{\FCform@t{\ifnum#2<0 \ifstrict@ccounting (\else
+ -\fi \count2=-#2 \else\count2=#2
\fi
% \end{macrocode}
% Calculate the entire currency units: this is the result of $x/a$ as integer
@@ -450,7 +600,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
\rlap{)~!}\else\rlap{~!}\fi\else\ifstrict@ccounting
\rlap{\phantom{)}~!}\else\rlap{~!}\fi\fi
\else \ifnum#2<0 \ifstrict@ccounting\rlap{)}\fi\fi
-\fi}
+\fi}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\g@ldens}
@@ -470,7 +620,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% about 100 times the current world economy~\cite{world_economy}. Yet
% another method is to used Heiko Oberdiek's package |bigintcalc|:
% then only memory restrictions apply. This, however, requires a major
-% rewrite of |fcolumn|. For now, version~1.2 sticks to the moderate amounts.
+% rewrite of |fcolumn|. For now, version~1.3 sticks to the moderate amounts.
%
% There is no straightforward interpretation of |#1| being zero or
% negative, therefore this is used as an indicator that no grouping
@@ -551,7 +701,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% First it checks whether there is a risk of overflow in this step. If
% $A$ and $B$ are two \TeX-registers and $B$ is to be added to $A$,
% overflow will not occur if one is (or both are) zero or if $A$ and~$B$
-% have different signs. Otherwise, be careful. Note that \TeX\ does not
+% have different signs. Otherwise, be careful. Note that \TeX\ does not
% check for overflow when performing an |\advance| (done in section~1238
% of Ref.~\cite{CandTB}), in contrast to |\multiply|, see section~105.
% \begin{macrocode}
@@ -568,13 +718,13 @@ indention=0pt,labelsep=colon,justification=raggedright}
\global\advance\csname FCtot@\romannumeral\FCsc@l\endcsname by \count0
\ifx\FCs@gn\m@ne
% \end{macrocode}
-% They had the same sign: risk of overflow. Record the sign
+% They had the same sign: risk of overflow. Record the sign
% of |\count0| (and of the original total of this column; they were
-% the same) in |\FCs@gn|. Table~\ref{tab:ex5}
+% the same) in |\FCs@gn|. Table~\ref{tab:ex9}
% \begin{table}[htb]
-% \def\PackageError#1#2#3{\PackageWarning{#1}{#2}}
+% \def\PackageError#1#2#3{\PackageWarning{#1}{#2: #3}}
% \caption{Examples on overflow.}
-% \label{tab:ex5}
+% \label{tab:ex9}
% \begin{tabular}{@{}lfff@{}}
% \multicolumn4c{\bfseries Projects}\\
% \toprule
@@ -605,7 +755,9 @@ indention=0pt,labelsep=colon,justification=raggedright}
\ifnum\count0<0
\let\FCs@gn=\m@ne
\PackageError{fcolumn}{Register overflow}{Overflow occurred
- in fcolumn \number\FCsc@l. Check your table.}%
+ in fcolumn \number\FCsc@l. You can press <enter> now and I'll
+ proceed,\MessageBreak but check your table. The offending entry is
+ indicated with an exclamation\MessageBreak mark in the output.}%
\else\let\FCs@gn=\@ne
\fi
\fi
@@ -618,29 +770,34 @@ indention=0pt,labelsep=colon,justification=raggedright}
\fi\unhbox0}
% \end{macrocode}
% \end{macro}
+%
+% The \meta{count}s |\FC@l| captures the part to the left of the decimal
+% mark, |\FC@r| that to the right.
+% \begin{macrocode}
+\newcount\FC@l \newcount\FC@r
+% \end{macrocode}
+% Some auxiliary definitions for capturing compacted information.
+% \begin{macrocode}
+\def\setucc@de#1#2\relax{\uccode`\~=`#1 }
+\def\assignform@t#1,#2,#3\end{\def\FCform@t{#1}\def\FCform@tt{#1#2}}
+% \end{macrocode}
% \def\<#1>{\leavevmode\hbox{$\langle$#1\/$\rangle$}}
% \begin{macro}{\b@fi}
% The macro |\b@fi| provides the beginning of the financial column. It
-% will be inserted in the column to capture the number entered by the user
+% will be inserted in the column to capture the number entered by the user.
% The separator and decimal mark are within a math environment, so you
% can indeed specify |\,| instead of |\thinspace|, but there is an extra
% brace around, so it doesn't affect the spacing between the digits
% (trick copied from |dcolumn|, Ref.~\cite{dcolumn}).
-%
-% The \meta{count}s |\FC@l| captures the part to the left of the decimal
-% marker, |\FC@r| that to the right.
% \begin{macrocode}
-\newcount\FC@l \newcount\FC@r
-\def\FC@chklist{}
-\def\setucc@de#1#2\relax{\uccode`\~=`#1 }
-\def\b@fi#1#2#3{%
+\def\b@fi#1#2#3#4{%
% \end{macrocode}
% An intermediate macro |\sep@xt| to extract the first character
% of |#1|, which in most cases will be the only character.
% \begin{macrocode}
\def\sep@xt##1##2\end{\def\sep@rator{{##1}}}%
\sep@xt#1\end\def\decim@lmark{{#2}}%
-\def\sp@l{#3}\global\advance\FCsc@l by \@ne
+\def\sp@l{#3}\assignform@t#4,,\end \global\advance\FCsc@l by \@ne
\global\FC@l=0 \global\FC@r=1
% \end{macrocode}
% The value specified by the user is then captured by |\FC@l| and
@@ -651,23 +808,23 @@ indention=0pt,labelsep=colon,justification=raggedright}
% There are four parts to an |F|-column entry, all parts optional,
% making 16 combinations. The sequence is
% (in the Backus--Naur notation of Ref.~\cite{CandTA}):
-% \<sign> \<integer constant> \<decimal marker>
+% \<sign> \<integer constant> \<decimal mark>
% \<integer constant>. Here \<sign> is a plus or minus character with
% category code~12, \<integer constant> is a sequence of zero
-% or more (decimal) \<digit>s, and \<decimal marker> is the middel
+% or more (decimal) \<digit>s, and \<decimal mark> is the middel
% part of |#3|, i.e., the comma in |3,2| or the period in |3.2|.
-% If the \<decimal marker> is absent with no space characters between
+% If the \<decimal mark> is absent with no space characters between
% the two \<integer constant> terms, these merge, making four redundant
-% entries. One of the
-% combinations is \<empty>, a sequence of exactly zero non-space tokens:
-% this is the only combination that doesn't put anything in an |F|-column.
+% entries. One of the combinations is \<empty>, a sequence of exactly
+% zero non-space tokens: this is the only combination that doesn't put
+% anything in an |F|-column---and was the most difficult part to handle.
%
% The minus sign must be captured separately, because in an entry like
% |-0,07| the 7~cents are negative, but this cannot be seen from the
-% integer part, since $-0$ is $0$ in \TeX\ (in fact in most computer
-% languages, but not in~MIX~\cite{TAOCP1}), so |\ifnum-0<0| yields false.
-% |\FCs@gn| is a general purpose flag. Its first use is to capture
-% the sign.
+% part to the left of the decimal mark, since $-0$ is~$0$ in \TeX\ (in
+% fact in most computer languages, but not in~MIX~\cite{TAOCP1}), so
+% |\ifnum-0<0| yields |false|. |\FCs@gn| is a general purpose flag. Its
+% first use is to capture the sign.
% \begin{macrocode}
\let\FCs@gn=\@ne\relax \setbox0\hbox\bgroup$%
% \end{macrocode}
@@ -726,7 +883,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
\ifnum\count@=\mathcode`- \expandafter\global\FC@l=\the\FC@l
\else \expandafter\global\FC@r=\the\FC@r\fi}%
% \end{macrocode}
-% The signs are relatively simply: record the sign, restore |\mathcode|s if
+% The signs are relatively simple: record the sign, restore |\mathcode|s if
% needed (it should be: a minus sign between digits screws up everything),
% and start scanning the number.
% \begin{macrocode}
@@ -744,7 +901,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
\mathcode`-="8000 \mathcode`+=\mathcode`- \mathcode`.=\mathcode`-
% \end{macrocode}
% These three remain active until the |$| in |\e@fi| is encountered.
-% The following ones will, in the general case, have their activeness
+% The following ones will, except in the \<empty> case, have their activeness
% turned off at some time.
% \begin{macrocode}
\def\actdecm@rk##1##2\relax{\ifx##1.\relax \mathcode`,=\mathcode`-
@@ -765,21 +922,24 @@ indention=0pt,labelsep=colon,justification=raggedright}
% globally to a negative value. This doesn't harm, because it didn't
% contain relevant information anyway. Outside the group, the sign
% of |\FC@r| can then be tested. This is a slight misuse of this
-% |\count|, but now it's documented.
-%
-% If there was no decimal sign or if there was a decimal sign but no
-% decimal part, |\FC@r| will still be~1, which doesn't parse well with
-% |\secd@xt|, so a zero is appended.
+% |\count|, but now it's documented. In effect, |\FC@r| can only be~|-1|,
+% |1|, or at least~|10|, so the comparison |\ifnum\FC@r>0| does not mis~0.
% \begin{macrocode}
\def\e@fi{\ifnum\mathcode`\0=\mathcode`- \global\FC@r=\m@ne\fi$\egroup
\ifnum\FC@r>0
- \ifnum\FC@r<10 \multiply\FC@r by 10 \fi
% \end{macrocode}
-% Next is a loop for bringing the decimal part in the correct way to the
+% If there was no decimal mark or if there was a decimal mark but no
+% decimal part, |\FC@r| will still be~1, which doesn't parse well with
+% |\secd@xt|, so a zero is appended, i.e., yielding~|10|.
+% \begin{macrocode}
+ \ifnum\FC@r<10 \FC@r=10 \fi
+% \end{macrocode}
+% Next is a loop for bringing the decimal part in the correct way to
% the integer part. The loop is performed the number of decimal
% digits to be printed (the~2 in |3,2| of the default setting). This also
-% means that if you specified more decimal digits than this, the excess
-% digit(s) will not be handled and a |\PackageWarning| will be given.
+% means that if you provided more decimal digits than this, the excess
+% digit(s) will not be handled and a |\PackageWarning| will be given,
+% showing these excess digits. This is truncation, not rounding!
% \begin{macrocode}
\def\i@ts##1##2{\count0=##2}
\afterassignment\i@ts\count@\sp@l
@@ -896,22 +1056,23 @@ indention=0pt,labelsep=colon,justification=raggedright}
\let\@@array=\@array
% \end{macrocode}
% \end{macro}
+% Much of the techniques here are repeated in |\LT@array|.
% \subsection{The sumline, close to a postamble}
% \begin{macro}{\@mksumline}
% The construction of the sumline is much easier than that of the preamble
% for several reasons. It may be safely assumed that the preamble specifier
% is grammatically correct because it has already been screened by |\@mkpream|.
-% Furthermore most entries will simply add nothing to |\s@ml@ne|, e.g., |@|, |!|,
+% Furthermore, most entries will simply add nothing to |\s@ml@ne|, e.g., |@|, |!|,
% and \verb+|+ can be fully ignored. Ampersands are only inserted by |c|, |l|, |r|,
% |p|, |m|, and |b|. So a specifier like |@{}lflf@{}| will yield the sumline
% |&\a&&\a\\|, (where |\a| is a macro that prints the desired result of the column,
-% see later). Had the specifier been \verb+l|f||@{ }l|f+, then the same sumline must
+% see below). Had the specifier been \verb+l|f||@{ }l|f+, then the same sumline must
% be constructed: all difficulties are already picked up and solved in the creation
% of the preamble.
%
% In reality the sumline must be constructed from the expanded form of the
% specifier, so |@{}lf@{}| will expand as
-% |@{}l>{\b@fi{.}{,}{3,2}}r<{\e@fi}@{}|. The rules for constructing the
+% |@{}l>{\b@fi{.}{,}{3,2}{}}r<{\e@fi}@{}|. The rules for constructing the
% sumline are now very simple:
% \begin{compactitem}[$\bullet$]
% \item add an ampersand when |c|, |l|, |r|, |p|, |m|, or |b| is found,
@@ -925,7 +1086,7 @@ indention=0pt,labelsep=colon,justification=raggedright}
% be written, but that is not necessary: |\@testpach| can do all the work,
% although much of it will be discarded. Here speed is sacrificed for space
% and this can be afforded because the creation of the sumline is done only
-% once per |\tabular|.
+% once per |\tabular| or |\longtable|.
%
% The start is copied from |\@mkpream|.
% \begin{macrocode}
@@ -939,12 +1100,9 @@ indention=0pt,labelsep=colon,justification=raggedright}
% \end{macrocode}
% Then |\@mkpream| is picked up again.
% \begin{macrocode}
-\@temptokena{#1}
-\@tempswatrue
+\@temptokena{#1}\@tempswatrue
\@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}%
-\count0\m@ne
-\let\the@toks\relax
-\prepnext@tok
+\count0\m@ne\let\the@toks\relax\prepnext@tok
% \end{macrocode}
% Next is the loop over all tokens in the expanded form of the specifier. The change
% with respect to |\@mkpream| is that the body of the loop is now only dealing
@@ -955,10 +1113,8 @@ indention=0pt,labelsep=colon,justification=raggedright}
\expandafter \@tfor \expandafter \@nextchar
\expandafter :\expandafter =\the\@temptokena \do
{\@testpach
- \ifcase \@chclass \@classfz
- \or \or \@classfii \or
- \or \or \or \or \or \or \or \@classfx \fi
- \@lastchclass\@chclass}%
+ \ifcase \@chclass \@classfz \or \or \@classfii \or \or \or \or \or
+ \or \or \or \@classfx \fi\@lastchclass\@chclass}%
% \end{macrocode}
% And the macro is finished by applying the |\aut@check| and appending the
% |\\| to the sumline. Note that the |\aut@check| is performed {\itshape
@@ -1006,7 +1162,8 @@ indention=0pt,labelsep=colon,justification=raggedright}
\edef\t@stn{\string\e@fi}
\ifx\t@stm\t@stn
% \end{macrocode}
-% If both tests yield |true| then add the macro to typeset everything.
+% If both tests yield |true|, i.e., we encountered a |<{\e@fi}| where we expect one to
+% find, then add the macro to typeset everything.
% \begin{macrocode}
\@addtosumline{\prr@sult}
% \end{macrocode}
@@ -1074,12 +1231,14 @@ indention=0pt,labelsep=colon,justification=raggedright}
\def\sumline{\@ifnextchar[\s@mline{\s@mline[2pt]}}
\def\s@mline[#1]{\global\s@mlinesep=#1 \s@ml@ne}
% \end{macrocode}
+% In the introduction it was stated that |\sumline| has two options, but in
+% reality that second option is the option to |\\| that is issued by |\s@ml@ne|.
% \end{macro}
% \begin{macro}{\prr@sult}
% The macro |\prr@sult| actually puts the information together. It starts
% like |\leeg|.
% \begin{macrocode}
-\def\prr@sult{$\egroup \let\e@fi=\relax
+\def\prr@sult{$\egroup \let\e@fi=\relax \let\FCform@t=\FCform@tt
% \end{macrocode}
% Then the information for the last line is computed. It is not sufficient
% to calculate the width of the result (in points) to use that as the width
@@ -1126,7 +1285,7 @@ FCtot@\romannumeral\FCsc@l\endcsname}$}%
% table but it doesn't increase the totals of that column by~3 (assuming
% |3,2| coding for the separations). But you won't cheat, won't you?
% It may affect the width, so be careful: don't insert the unabridged
-% version of Romeo and Julia here.
+% version of Romeo and Juliet~\cite{RJ} here.
% \end{macro}
% \begin{macro}{\res@tsumline}
% Since all changes to the totals and widths of the columns are global,
@@ -1168,6 +1327,7 @@ FCtot@\romannumeral\FCsc@l\endcsname}$}%
% If the list |\FC@chklist| is empty, the list for the automatic check is
% generated (which will remain empty if |\FCsc@l| is odd).
% \begin{macrocode}
+\def\FC@chklist{}
\def\aut@check{\ifx\@empty\FC@chklist\relax
\ifodd\FCsc@l\else
\count0=\@ne \count1=\FCsc@l
@@ -1217,12 +1377,84 @@ FCtot@\romannumeral\FCsc@l\endcsname}$}%
\def\checkfcolumns#1#2{\noalign{\xdef\FC@chklist{\FC@chklist #1,#2;}}}
% \end{macrocode}
% \end{macro}
+% \subsection{Support for package longtable}
+% Package |longtable| is used for tables that may span multiple pages. |fcolumn| and
+% |longtable| work together as long as |longtable| is loaded first, so that |fcolumn|
+% can adapt one definition of |longtable|. If |longtable| is not loaded, that definition
+% is just that: a definition. If |longtable| is loaded before |fcolumn|, it is a
+% redefinition, and it should be. For that reason the user is warned (not loading
+% |longtable| is not an error if you don't use it) if |fcolumn| is loaded without prior
+% loading of |longtable|.
+% \begin{macrocode}
+\ifx\longtable\@undefined
+ \PackageWarning{fcolumn}{fcolumn is loaded without longtable. That's
+ OK, but\MessageBreak if you want to load longtable as well, make sure
+ \MessageBreak it is done before loading fcolumn}
+\fi
+% \end{macrocode}
+% \begin{macro}{\LT@array}
+% And here is the only definition of |longtable| that needs to be adapted a bit, to make
+% |fcolumn| work with that package.
+% \begin{macrocode}
+\def\LT@array[#1]#2{%
+ \refstepcounter{table}\stepcounter{LT@tables}%
+ \if l#1 \LTleft\z@\LTright\fill
+ \else\if r#1 \LTleft\fill\LTright\z@
+ \else\if c#1 \LTleft\fill\LTright\fill
+ \fi\fi\fi
+ \let\LT@mcol\multicolumn\let\LT@@tabarray\@tabarray\let\LT@@hl\hline
+ \def\@tabarray{\let\hline\LT@@hl \LT@@tabarray}%
+ \let\\\LT@tabularcr\let\tabularnewline\\%
+ \def\newpage{\noalign{\break}}%
+ \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
+ \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
+ \let\hline\LT@hline\let\kill\LT@kill\let\caption\LT@caption
+ \@tempdima\ht\strutbox\let\@endpbox\LT@endpbox
+ \ifx\extrarowheight\@undefined
+ \let\@acol\@tabacol\let\@classz\@tabclassz\let\@classiv\@tabclassiv
+ \def\@startpbox{\vtop\LT@startpbox}\let\@@startpbox
+ \@startpbox\let\@@endpbox\@endpbox\let\LT@LL@FM@cr\@tabularcr
+ \else
+ \advance\@tempdima\extrarowheight \col@sep\tabcolsep
+ \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
+ \fi
+ \setbox\@arstrutbox\hbox{\vrule\@height\arraystretch\@tempdima
+ \@depth\arraystretch\dp\strutbox\@width\z@}%
+ \let\@sharp##\let\protect\relax
+ \begingroup
+ \@mkpream{#2}%
+ \xdef\LT@bchunk{%
+ \global\advance\c@LT@chunks\@ne\global\LT@rows\z@
+ \setbox\z@\vbox\bgroup\LT@setprevdepth\tabskip\LTleft
+ \noexpand\halign to\hsize\bgroup\tabskip\z@\@arstrut
+ \@preamble\tabskip\LTright\cr}%
+ \endgroup
+% \end{macrocode}
+% Until this line it was just the code for |\LT@array| from package |longtable|.
+% The five lines of the next chunk are new to |\LT@array|. Their
+% purpose is the same as in |\@array| above.
+% \begin{macrocode}
+ \begingroup
+ \@mksumline{#2}%
+ \endgroup
+ \res@tsumline
+ \everycr{\noalign{\global\FCsc@l=0 }}%
+% \end{macrocode}
+% From here on |\LT@array| is picked up again.
+% \begin{macrocode}
+ \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
+ \LT@make@row\m@th\let\par\@empty
+ \lineskip\z@\baselineskip\z@\LT@bchunk}
+% \end{macrocode}
+% \end{macro}
% That's it!
% \section*{Acknowledgement}
% Thanks to Karl Berry for valuable comments regarding the consistency of
% the installation procedure of this version. Frank Mittelbach gave
% various useful suggestions for improving the input parsing as well as
-% hints to make the package more \LaTeX-like.
+% hints to make the package more \LaTeX-like. He also challenged me to make |fcolumn|
+% compatible with |longtable|. Christian Hoff's request on column formatting triggered
+% many happy hours of coding.
% \bibliographystyle{plain}
% \begin{thebibliography}{9}
% \itemsep0pt
@@ -1232,10 +1464,12 @@ FCtot@\romannumeral\FCsc@l\endcsname}$}%
% A new implementation of \LaTeX's |tabular| and |array| environment.
% \bibitem{booktabs} Simon Fear. Publication quality tables in \LaTeX.
% \bibitem{dcolumn} David Carlisle. The |dcolumn| package.
+% \bibitem{longtable} David Carlisle. The |longtable| package.
% \bibitem{world_economy} According to the IMF \url{www.imf.org}.
% \bibitem{CandTB} Donald Knuth, Computers \& Typesetting/B, \TeX: the program.
% \bibitem{CandTA} Donald Knuth, Computers \& Typesetting/A, The \TeX book.
% \bibitem{TAOCP1} Donald Knuth, The Art of Computers Programming, volume~1.
+% \bibitem{RJ} William Shakespeare, Romeo and Juliet, a tragedy (1597).
% \end{thebibliography}
% \Finale
\endinput
diff --git a/macros/latex/contrib/fcolumn/fcolumn.ins b/macros/latex/contrib/fcolumn/fcolumn.ins
index fcfed706ee..5c2e3e7d48 100644
--- a/macros/latex/contrib/fcolumn/fcolumn.ins
+++ b/macros/latex/contrib/fcolumn/fcolumn.ins
@@ -17,7 +17,7 @@
This is a generated file.
-Copyright (C) 2015--2019 by Edgar Olthof
+Copyright (C) 2015--2021 by Edgar Olthof
This file may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -42,9 +42,9 @@ LaTeX version 1999/12/01 or later.
\Msg{* fcolumn.sty *}
\Msg{* *}
\Msg{* into a directory searched by TeX. *}
-\Msg{* To produce the documentation, run the file *}
-\Msg{* fcolumn.dtx through LaTeX. Make sure to update *}
-\Msg{* the glossary and index by makeindex: *}
+\Msg{* To produce the documentation, type ``make'' or *}
+\Msg{* run the file fcolumn.dtx through LaTeX. Make sure *}
+\Msg{* to update the glossary and index by makeindex: *}
\Msg{* *}
\Msg{* makeindex -s gglo.ist -o fcolumn.gls fcolumn.glo *}
\Msg{* makeindex -s gglo.ist -o fcolumn.ind fcolumn.idx *}
diff --git a/macros/latex/contrib/fcolumn/fcolumn.pdf b/macros/latex/contrib/fcolumn/fcolumn.pdf
index 79c96886b2..16ea57e5a7 100644
--- a/macros/latex/contrib/fcolumn/fcolumn.pdf
+++ b/macros/latex/contrib/fcolumn/fcolumn.pdf
Binary files differ
diff --git a/macros/latex/contrib/fcolumn/fcolumn.sty b/macros/latex/contrib/fcolumn/fcolumn.sty
deleted file mode 100644
index 479dff097a..0000000000
--- a/macros/latex/contrib/fcolumn/fcolumn.sty
+++ /dev/null
@@ -1,299 +0,0 @@
-%%
-%% This is file `fcolumn.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% fcolumn.dtx (with options: `package')
-%%
-%% This is a generated file.
-%%
-%% Copyright (C) 2015--2019 by Edgar Olthof
-%%
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either
-%% version 1.3 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.3 or later is part of all distributions of
-%% LaTeX version 1999/12/01 or later.
-\ProvidesPackage{fcolumn}
- [2019/04/24 v1.2 Automatic Currency Package (EHTO)]
-\NeedsTeXFormat{LaTeX2e}
-\RequirePackage{array}[v2.4k]
-\newif\ifstrict@ccounting \strict@ccountingfalse
-\DeclareOption{strict}{\strict@ccountingtrue}
-\ProcessOptions
-\newcolumntype{F}[3]{>{\b@fi{#1}{#2}{#3}}r<{\e@fi}}
-\newcolumntype{f}{F{.}{,}{3,2}}
-\newcount\FCsc@l \FCsc@l=0 \newcount\FCtc@l \FCtc@l=0
-\newif\ifwiths@p
-\def\geldm@cro#1#2{\withs@pfalse
-\afterassignment\g@ldm@cro\count@#1\relax{#2}}
-\def\g@ldm@cro#1\relax#2{\ifnum#2<0 \ifstrict@ccounting (\else -\fi
- \count2=-#2 \else\count2=#2
-\fi
-\count4=\ifx\relax#1\relax 2 \else \@gobble#1\relax\fi
-\count3=0
-\loop\ifnum\count3<\count4
- \divide\count2 by 10 \advance\count3 by \@ne
-\repeat
-\g@ldens{\the\count@}%
-\ifnum\count3>0\decim@lmark
- \ifnum#2>0 \count2=-#2\else\count2=#2 \fi
- \loop\ifnum\count3>0
- \divide\count2 by 10 \advance\count3 by \m@ne
- \repeat
- \loop\ifnum\count3<\count4
- \multiply\count2 by 10 \advance\count3 by \@ne
- \repeat
- \ifnum#2>0 \advance\count2 by #2
- \else \advance\count2 by -#2
- \fi
- \zerop@d{\number\count3}{\number\count2}%
-\fi
-\ifx\FCs@gn\m@ne \ifnum#2<0 \ifstrict@ccounting
- \rlap{)~!}\else\rlap{~!}\fi\else\ifstrict@ccounting
- \rlap{\phantom{)}~!}\else\rlap{~!}\fi\fi
-\else \ifnum#2<0 \ifstrict@ccounting\rlap{)}\fi\fi
-\fi}
-\def\g@ldens#1{{\count3=\count2 \count0=#1
-\ifnum\count0<1 \count0=3 \fi
-\loop \ifnum\count0>0 \divide\count2 by 10 \advance\count0 by \m@ne
-\repeat
-\ifnum\count2>0 \g@ldens{#1}\fi
-\count0=#1
-\ifnum\count0<1 \count0=3 \fi
-\loop \ifnum\count0>0 \multiply\count2 by 10 \advance\count0 by \m@ne
-\repeat
-\count2=-\count2
-\advance\count2 by \count3 \du@zendprint{#1}}}
-\def\du@zendprint#1{\ifwiths@p\ifnum#1>0 \sep@rator\fi
- \zerop@d{#1}{\number\count2}%
-\else\zerop@d1{\number\count2}\fi\global\withs@ptrue}
-\def\zerop@d#1#2{{\count0=1 \count1=#2
-\loop \divide \count1 by 10 \ifnum\count1>0 \advance\count0 by \@ne
-\repeat
-\ifnum#1>0
- \loop \ifnum\count0<#1\relax 0\advance\count0 by \@ne
- \repeat
-\else
- \advance\count0 by -3
- \loop \ifnum\count0<0 0\advance\count0 by \@ne
- \repeat
-\fi\number#2}}
-\def\zetg@ld#1#2{\count0=#2\relax \let\FCs@gn=\@ne
-\ifnum\count0<0
- \ifnum\csname FCtot@\romannumeral\FCsc@l\endcsname<0
- \let\FCs@gn=\m@ne
- \fi
-\fi
-\ifnum\count0>0
- \ifnum\csname FCtot@\romannumeral\FCsc@l\endcsname>0
- \let\FCs@gn=\m@ne
- \fi
-\fi
-\global\advance\csname FCtot@\romannumeral\FCsc@l\endcsname by \count0
-\ifx\FCs@gn\m@ne
- \ifnum\count0>0 \let\FCs@gn\@ne \fi
- \count0=\csname FCtot@\romannumeral\FCsc@l\endcsname
- \multiply\count0 by \FCs@gn
- \ifnum\count0<0
- \let\FCs@gn=\m@ne
- \PackageError{fcolumn}{Register overflow}{Overflow occurred
- in fcolumn \number\FCsc@l. Check your table.}%
- \else\let\FCs@gn=\@ne
- \fi
-\fi
-\setbox0=\hbox{$\geldm@cro{#1}{#2}$}%
-\ifdim\wd0>\csname FCwd@\romannumeral\FCsc@l\endcsname
- \global\csname FCwd@\romannumeral\FCsc@l\endcsname=\wd0
-\fi\unhbox0}
-\newcount\FC@l \newcount\FC@r
-\def\FC@chklist{}
-\def\setucc@de#1#2\relax{\uccode`\~=`#1 }
-\def\b@fi#1#2#3{%
-\def\sep@xt##1##2\end{\def\sep@rator{{##1}}}%
-\sep@xt#1\end\def\decim@lmark{{#2}}%
-\def\sp@l{#3}\global\advance\FCsc@l by \@ne
-\global\FC@l=0 \global\FC@r=1
-\let\FCs@gn=\@ne\relax \setbox0\hbox\bgroup$%
-\uccode`\~=`0\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=0}
-\uccode`\~=`1\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=1}
-\uccode`\~=`2\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=2}
-\uccode`\~=`3\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=3}
-\uccode`\~=`4\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=4}
-\uccode`\~=`5\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=5}
-\uccode`\~=`6\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=6}
-\uccode`\~=`7\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=7}
-\uccode`\~=`8\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=8}
-\uccode`\~=`9\relax \uppercase{\def~}{\restorem@thcodes \global\FC@l=9}
-\def\deactdecm@rk##1##2\relax{\mathcode`##1=0 }%
-\afterassignment\setucc@de\count@#3\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`- \restorem@thcodes\fi
-\afterassignment\deactdecm@rk\count@#3\relax \global\FC@r=1}%
-\def\d@cm##1##2{\count@=\mathcode`##1 }
-\ifnum\uccode`\~=`. \uccode`\~=`,\relax\else \uccode`\~=`.\relax\fi
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`- \restorem@thcodes\fi
-\afterassignment\d@cm\count@#3\relax
-\ifnum\count@=\mathcode`- \expandafter\global\FC@l=\the\FC@l
-\else \expandafter\global\FC@r=\the\FC@r\fi}%
-\uccode`\~=`+\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`-
-\restorem@thcodes\fi\global\FC@l=0}%
-\uccode`\~=`-\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`-
-\restorem@thcodes\fi\global\let\FCs@gn\m@ne \global\FC@l=0}%
-\mathcode`-="8000 \mathcode`+=\mathcode`- \mathcode`.=\mathcode`-
-\def\actdecm@rk##1##2\relax{\ifx##1.\relax \mathcode`,=\mathcode`-
-\else \mathcode`##1=\mathcode`- \fi}%
-\afterassignment\actdecm@rk\count@#3\relax
-\mathcode`\0=\mathcode`- \mathcode`\1=\mathcode`-
-\mathcode`\2=\mathcode`- \mathcode`\3=\mathcode`-
-\mathcode`\4=\mathcode`- \mathcode`\5=\mathcode`-
-\mathcode`\6=\mathcode`- \mathcode`\7=\mathcode`-
-\mathcode`\8=\mathcode`- \mathcode`\9=\mathcode`- }
-\def\e@fi{\ifnum\mathcode`\0=\mathcode`- \global\FC@r=\m@ne\fi$\egroup
-\ifnum\FC@r>0
- \ifnum\FC@r<10 \multiply\FC@r by 10 \fi
- \def\i@ts##1##2{\count0=##2}
- \afterassignment\i@ts\count@\sp@l
- \loop\ifnum\count0>0 \multiply\FC@l by 10
- \expandafter\secd@xt\number\FC@r\end \advance\count0 by \m@ne
- \repeat
- \ifnum\FC@r>10
- \def\tw@l##1##2\relax{##2}
- \PackageWarning{fcolumn}{Excess digit\ifnum\FC@r>100 s\fi\space
- ``\expandafter\tw@l\number\FC@r\relax'' in decimal part
- \MessageBreak ignored}
- \fi
- \ifx\FCs@gn\m@ne\relax \FC@l=-\FC@l \fi
- \zetg@ld{\sp@l}{\FC@l}%
-\fi}
-\def\secd@xt#1#2#3\end{\advance\FC@l by #2
-\FC@r=#1#3 \ifnum\FC@r<10 \multiply\FC@r by 10 \fi}
-\def\restorem@thcodes{\mathcode`\0=0 \mathcode`\1=0
-\mathcode`\2=0 \mathcode`\3=0 \mathcode`\4=0 \mathcode`\5=0
-\mathcode`\6=0 \mathcode`\7=0 \mathcode`\8=0 \mathcode`\9=0 }
-\def\@array[#1]#2{%
-\@tempdima \ht \strutbox
-\advance \@tempdima by\extrarowheight
-\setbox \@arstrutbox \hbox{\vrule
- \@height \arraystretch \@tempdima
- \@depth \arraystretch \dp \strutbox
- \@width \z@}%
-\def\ialign{\everycr{\noalign{\global\FCsc@l=0 }}%
- \tabskip\z@skip\halign}
-\begingroup
-\@mkpream{#2}%
-\xdef\@preamble{\noexpand \ialign \@halignto
-\bgroup\@arstrut\@preamble\tabskip\z@\cr}%
-\endgroup
-\begingroup
-\@mksumline{#2}%
-\endgroup
-\res@tsumline
-\@arrayleft
-\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
-\bgroup
-\let \@sharp ##\let \protect \relax
-\lineskip \z@
-\baselineskip \z@
-\m@th
-\let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
-\let\@@array=\@array
-\def\@mksumline#1{\gdef\s@ml@ne{}\@lastchclass 4 \@firstamptrue
-\global\FCsc@l=0
-\let\prr@sult=\relax
-\@temptokena{#1}
-\@tempswatrue
-\@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}%
-\count0\m@ne
-\let\the@toks\relax
-\prepnext@tok
-\expandafter \@tfor \expandafter \@nextchar
- \expandafter :\expandafter =\the\@temptokena \do
- {\@testpach
- \ifcase \@chclass \@classfz
- \or \or \@classfii \or
- \or \or \or \or \or \or \or \@classfx \fi
- \@lastchclass\@chclass}%
-\xdef\s@ml@ne{\s@ml@ne\noexpand\aut@check\noexpand\\}}
-\def\@addtosumline#1{\xdef\s@ml@ne{\s@ml@ne #1}}
-\def\@classfx{\if@firstamp \@firstampfalse \else \@addtosumline &\fi}
-\def\@classfz{\ifnum\@chnum<\thr@@ \@classfx\fi}
-\def\@classfii{\ifnum\@lastchclass=8
- \edef\t@stm{\expandafter\string\@nextchar}
- \edef\t@stn{\string\e@fi}
- \ifx\t@stm\t@stn
- \@addtosumline{\prr@sult}
- \global\advance\FCsc@l by \@ne
- \ifnum\FCsc@l>\FCtc@l
- \expandafter\ifx\csname FCtot@\romannumeral\FCsc@l\endcsname\relax
- \expandafter\newcount\csname FCtot@\romannumeral\FCsc@l\endcsname
- \else
- \PackageError{fcolumn}{Name clash for <count>}{\expandafter\csname
- FCtot@\romannumeral\FCsc@l\endcsname is already defined and it may
- not even be a <count>. If you're\MessageBreak sure it is a <count>,
- you can press <enter> now and I'll proceed, but things\MessageBreak
- will get overwritten.}%
- \fi
- \expandafter\ifx\csname FCwd@\romannumeral\FCsc@l\endcsname\relax
- \expandafter\newdimen\csname FCwd@\romannumeral\FCsc@l\endcsname
- \global\FCtc@l=\FCsc@l
- \else
- \PackageError{fcolumn}{Name clash for <dimen>}{\expandafter\csname
- FCwd@\romannumeral\FCsc@l\endcsname is already defined and it may
- not even be a <dimen>. If you're\MessageBreak sure it is a <dimen>,
- you can press <enter> now and I'll proceed, but things\MessageBreak
- will get overwritten.}%
- \fi
- \fi
- \fi
-\fi}
-\newdimen\s@mlinesep
-\def\sumline{\@ifnextchar[\s@mline{\s@mline[2pt]}}
-\def\s@mline[#1]{\global\s@mlinesep=#1 \s@ml@ne}
-\def\prr@sult{$\egroup \let\e@fi=\relax
-\setbox0=\hbox{$\geldm@cro{\sp@l}{\number\csname
-FCtot@\romannumeral\FCsc@l\endcsname}$}%
-\ifdim\wd0>\csname FCwd@\romannumeral\FCsc@l\endcsname
- \global\csname FCwd@\romannumeral\FCsc@l\endcsname=\wd0
-\fi
-\vbox{\hrule width \csname FCwd@\romannumeral\FCsc@l\endcsname
-\vskip\s@mlinesep
-\hbox to \csname FCwd@\romannumeral\FCsc@l\endcsname{\hfil\unhbox0}}}
-\def\leeg#1{$\egroup \let\e@fi=\relax #1}
-\def\res@tsumline{\FCsc@l=\FCtc@l\loop\ifnum\FCsc@l>0
- \global\csname FCtot@\romannumeral\FCsc@l\endcsname=0
- \global\csname FCwd@\romannumeral\FCsc@l\endcsname=\z@
- \advance\FCsc@l by \m@ne\repeat}
-\def\resetsumline{\noalign{\res@tsumline}}
-\def\aut@check{\ifx\@empty\FC@chklist\relax
- \ifodd\FCsc@l\else
- \count0=\@ne \count1=\FCsc@l
- \divide\count1 by \tw@
- \loop\ifnum\count1<\FCsc@l
- \advance\count1 by \@ne
- \xdef\FC@chklist{\FC@chklist\number\count0,\number\count1;}%
- \advance\count0 by\@ne
- \repeat
- \fi
-\fi
-\loop
- \ifx\FC@chklist\@empty\let\FCs@gn=\@ne\else\let\FCs@gn=\m@ne\fi
- \ifx\FCs@gn\m@ne
- \expandafter\fre@t\FC@chklist\end
- \ifnum\csname FCtot@\romannumeral\count0\endcsname=
- \csname FCtot@\romannumeral\count1\endcsname\else
- \PackageWarningNoLine{fcolumn}{F-columns \number\count0 \space
- and \number\count1 \space do not balance}%
- \fi
-\repeat}
-\def\fre@t#1,#2;#3\end{\count0=#1 \count1=#2 \xdef\FC@chklist{#3}}
-\def\checkfcolumns#1#2{\noalign{\xdef\FC@chklist{\FC@chklist #1,#2;}}}
-\endinput
-%%
-%% End of file `fcolumn.sty'.
diff --git a/macros/latex/contrib/fcolumn/makefile b/macros/latex/contrib/fcolumn/makefile
index 7a751b7c92..3af7c8a619 100644
--- a/macros/latex/contrib/fcolumn/makefile
+++ b/macros/latex/contrib/fcolumn/makefile
@@ -1,4 +1,5 @@
-.SUFFIXES: .pdf .glo .gls .ind .idx .dtx .sty .ins
+.SUFFIXES: .dtx .glo .gls .idx .ind .ins .pdf .sty
+DIST=fcolumn.dtx fcolumn.ins fcolumn.pdf fcolumn.sty makefile README
.ins.sty:
pdflatex $*.ins
@@ -18,23 +19,20 @@
.dtx.pdf:
pdflatex $*.dtx
-all: fcolumn.pdf
+all: fcolumn.sty fcolumn.pdf
install:
tex fcolumn.ins
-dist: fcolumn.dtx fcolumn.ins fcolumn.sty fcolumn.pdf README makefile
- mkdir fcolumn; cp fcolumn.dtx fcolumn; cp fcolumn.ins fcolumn; \
- cp fcolumn.sty fcolumn; cp fcolumn.pdf fcolumn; cp README fcolumn; \
- cp makefile fcolumn; tar -czf fcolumn.tgz fcolumn; rm -r fcolumn
+dist: $(DIST)
+ mkdir FCv1.3; cp $(DIST) FCv1.3; tar -czf fcolumn.tgz FCv1.3; rm -r FCv1.3
fcolumn.pdf: fcolumn.dtx fcolumn.gls fcolumn.ind fcolumn.sty
-fcolumn.idx: fcolumn.dtx
+fcolumn.glo fcolumn.idx: fcolumn.dtx
fcolumn.ind: fcolumn.idx
-fcolumn.glo: fcolumn.dtx
fcolumn.gls: fcolumn.glo
.PHONY: clean
clean:
- -rm fcolumn.pdf fcolumn.sty fcolumn.log fcolumn.glo fcolumn.gls \
- fcolumn.ind fcolumn.idx fcolumn.aux fcolumn.ilg
+ -rm fcolumn.pdf fcolumn.sty fcolumn.log fcolumn.glo fcolumn.gls fcolumn.ind \
+ fcolumn.idx fcolumn.aux fcolumn.ilg fcolumn.out fcolumn.tgz
diff --git a/macros/latex/contrib/readablecv/README.md b/macros/latex/contrib/readablecv/README.md
index ddd6fc54b6..cf54150fea 100644
--- a/macros/latex/contrib/readablecv/README.md
+++ b/macros/latex/contrib/readablecv/README.md
@@ -1,23 +1,5 @@
- %% ReadableCV
- %% Copyright 2020 Philip Stone
- %
- % This work may be distributed and/or modified under the
- % conditions of the LaTeX Project Public License, either version 1.3
- % 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.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 Philip Stone
- %
- % This work consists of the files ReadableCV.cls and ReadableCV.tex
+ReadableCV v3
+This class, ReadableCV, is a re - working of how I wrote my own CV using other software. The intention is that it is a highly readable CV which is easy for a company to find the information which shows you as the best person for the job.
-This class, ReadableCV, is a re - working of how I wrote my own CV using other software.
-The intention is that it is a highly readable CV which is easy for a company to examine.
-
-The class file has plenty of comments describing it and the accompanying .tex file,
-whilst serving as an example of how to use the class, also contains plenty comments. \ No newline at end of file
+The class file has plenty of comments describing it and the accompanying .tex file, whilst serving as an example of how to use the class, also contains plenty of comments.
diff --git a/macros/latex/contrib/readablecv/ReadableCV.cls b/macros/latex/contrib/readablecv/ReadableCV.cls
index db6197592d..a6fbe38354 100644
--- a/macros/latex/contrib/readablecv/ReadableCV.cls
+++ b/macros/latex/contrib/readablecv/ReadableCV.cls
@@ -1,5 +1,5 @@
%% ReadableCV
-%% Copyright 2020 Philip Stone
+%% Copyright 2021 Philip Stone
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,19 +15,27 @@
%
% This work consists of the files ReadableCV.cls and ReadableCV.tex
-\def\ClassDate{2020/05/14}
-\def\ClassVersion{2.0}
+\NeedsTeXFormat{LaTeX2e}
+\def\ClassDate{2021/01/09}
+\def\ClassVersion{3.0}
\ProvidesClass{ReadableCV}[\ClassDate ReadableCV \ClassVersion class written by Philip Stone]
-\LoadClass[10pt, a4paper, onecolumn, oneside, notitlepage]{article}
-\NeedsTeXFormat{LaTeX2e}
+\DeclareOption{twocolumn}{\OptionNotUsed}
+\DeclareOption{twoside}{\OptionNotUsed}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{memoir}}
+\ExecuteOptions{a4paper}
+\ProcessOptions\relax
+\LoadClass[10pt, onecolumn, oneside]{memoir}
+
+\setlrmarginsandblock{1.5cm}{1.5cm}{*}
+\setulmarginsandblock{1.5cm}{*}{*}
+\checkandfixthelayout
+
%set up PDF metadata
\usepackage{hyperref}
-% Set up paper size and language
-\RequirePackage[a4paper, total={7in, 10in}]{geometry}
-\RequirePackage{titlesec}
+%Alter how date is printed
\RequirePackage[nodayofweek]{datetime}
% Allow use of multiple columns
@@ -37,11 +45,12 @@
\RequirePackage{marvosym}
\RequirePackage{graphicx}
\RequirePackage[x11names]{xcolor}
-\RequirePackage[sfdefault,thin]{roboto}
+\RequirePackage[thin]{roboto}
\RequirePackage[T1]{fontenc}
\pagestyle{empty}
-\setlength{\parindent}{0em}
+%\setlength{\parindent}{0em}
+\addtolength{\parskip}{6pt}
% Allow use of if statements
\RequirePackage{etoolbox}
@@ -61,12 +70,10 @@
% Displays section title or heading
\newcommand{\newHeading}[2]{
\begin{\SectionAlignment}
-% \vspace{\baselineskip}
- \bigskip
- \textcolor{\HeadingColour}{\textbf{\Large{#1}}}
+ \smallskip
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Large{#1}}}}
\smallskip
\hrule
-% \vspace{\baselineskip}
\end{\SectionAlignment}
}
@@ -106,11 +113,11 @@
\newcommand{\HeaderText}{
- \begin{minipage}{1.0\linewidth}
+ \noindent\begin{minipage}{1.0\linewidth}
\begin{\HeaderAlignment}
- \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\
- \vspace{-0.3em}
- \LARGE{\rcvjobtitle}\\
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Huge{\rcvname}}}}\\
+ \smallskip
+ \robotoThin{\LARGE{\rcvjobtitle}}\\
\smallskip
\ifdefempty{\rcvmobileno}%
@@ -122,7 +129,7 @@
}
{
%mobile number not defined, home number is
- \normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
}
}
{
@@ -130,12 +137,12 @@
\ifdefempty{\rcvhomeno}%
{
%if mobile number defined, home number not defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}
}
{
%if home number and mobile number defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
- }
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
+ }}
}
\ifdefempty{\rcvemailaddr}%
@@ -146,7 +153,7 @@
}
{
%email not defined, web is
- \normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
}
}
{
@@ -154,12 +161,12 @@
\ifdefempty{\rcvwebaddr}%
{
%if email defined, web not defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}
}
{
%if email and web defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
- }
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
+ }}
}
\end{\HeaderAlignment}
\end{minipage}
@@ -168,27 +175,27 @@
\newcommand{\HeaderRightContact}{
% Name and jobtitle on the left. Contact details on the right.
- \begin{minipage}{0.5\linewidth}
+ \noindent\begin{minipage}{0.5\linewidth}
\begin{flushleft}
- \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\
- \vspace{-0.3em}
- \LARGE{\rcvjobtitle}\\
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Huge{\rcvname}}}}\\
+ \smallskip
+ \robotoThin{\LARGE{\rcvjobtitle}}\\
\end{flushleft}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{flushright}
\ifdefempty{\rcvmobileno}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}}
\ifdefempty{\rcvhomeno}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}}
\ifdefempty{\rcvemailaddr}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}}
\ifdefempty{\rcvwebaddr}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}}
\end{flushright}
\end{minipage}
}
@@ -196,27 +203,27 @@
\newcommand{\HeaderLeftContact}{
% Name and jobtitle on the right. Contact details on the left.
- \begin{minipage}{0.5\linewidth}
+ \noindent\begin{minipage}{0.5\linewidth}
\begin{flushleft}
\ifdefempty{\rcvmobileno}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}}
\ifdefempty{\rcvhomeno}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}}
\ifdefempty{\rcvemailaddr}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}}
\ifdefempty{\rcvwebaddr}
{}
- {\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
+ {\robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}}
\end{flushleft}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{flushright}
- \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\
- \vspace{-0.3em}
- \LARGE{\rcvjobtitle}\\
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Huge{\rcvname}}}}\\
+ \smallskip
+ \robotoThin{\LARGE{\rcvjobtitle}}\\
\end{flushright}
\end{minipage}
@@ -230,16 +237,16 @@
}
\newcommand{\HeaderLeftImage}{
- \begin{minipage}{0.5\linewidth}
+ \noindent\begin{minipage}{0.5\linewidth}
\begin{flushleft}
\includegraphics[width=2.5cm,height=2.5cm,keepaspectratio]{\rcvimageloc}
\end{flushleft}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{flushright}
- \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\
- \vspace{-0.3em}
- \LARGE{\rcvjobtitle}\\
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Huge{\rcvname}}}}\\
+ \smallskip
+ \robotoThin{\LARGE{\rcvjobtitle}}\\
\smallskip
\ifdefempty{\rcvmobileno}%
@@ -251,7 +258,7 @@
}
{
%mobile number not defined, home number is
- \normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Telefon}}\ \robotoThin{\rcvhomeno}\\}
}
}
{
@@ -259,11 +266,11 @@
\ifdefempty{\rcvhomeno}%
{
%if mobile number defined, home number not defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}
}
{
%if home number and mobile number defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}}
}
}
@@ -275,7 +282,7 @@
}
{
%email not defined, web is
- \normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
}
}
{
@@ -283,11 +290,11 @@
\ifdefempty{\rcvwebaddr}%
{
%if email defined, web not defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}
}
{
%if email and web defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}}
}
}
\end{flushright}
@@ -295,11 +302,11 @@
}
\newcommand{\HeaderRightImage}{
- \begin{minipage}{0.5\linewidth}
+ \noindent\begin{minipage}{0.5\linewidth}
\begin{flushleft}
- \textcolor{\HeadingColour}{\textbf{\Huge{\rcvname}}}\\
- \vspace{-0.3em}
- \LARGE{\rcvjobtitle}\\
+ \textcolor{\HeadingColour}{\robotoThin{\textbf{\Huge{\rcvname}}}}\\
+ \smallskip
+ \robotoThin{\LARGE{\rcvjobtitle}}\\
\smallskip
\ifdefempty{\rcvmobileno}%
@@ -311,7 +318,7 @@
}
{
%mobile number not defined, home number is
- \normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
}
}
{
@@ -319,11 +326,11 @@
\ifdefempty{\rcvhomeno}%
{
%if mobile number defined, home number not defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\\}}
}
{
%if home number and mobile number defined
- \normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mobilefone}\ \rcvmobileno\ {\textcolor{\HeadingColour}{\Telefon}\ \rcvhomeno\\}}}
}
}
@@ -335,7 +342,7 @@
}
{
%email not defined, web is
- \normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
}
}
{
@@ -343,11 +350,11 @@
\ifdefempty{\rcvwebaddr}%
{
%if email defined, web not defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\\}}
}
{
%if email and web defined
- \normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}
+ \robotoThin{\normalsize{\textcolor{\HeadingColour}{\Letter}\ \rcvemailaddr\ {\textcolor{\HeadingColour}{\Mundus}\ \rcvwebaddr\\}}}
}
}
\end{flushleft}
@@ -419,7 +426,7 @@
}
}
- \vspace{\baselineskip}
+% \vspace{\baselineskip}
}
\newcommand{\addSkills}[9]{
@@ -464,34 +471,66 @@
% including dates [1], job title [2],
% company name [3] and role summary [4]
+\vspace{0.5em}
+\begin{samepage}
\iftoggle{jobfirst}{
% Display job before company
- \begin{tabular}{@{}p{3cm} l}
+ \noindent\begin{tabular}{@{}p{3cm} l}
\textbf{#1} & \textbf{#2}\\
& \textbf{#3}\\
\end{tabular}
}
{
% Display company before job
- \begin{tabular}{@{}p{3cm} l}
+ \noindent\begin{tabular}{@{}p{3cm} l}
\textbf{#1} & \textbf{#3}\\
& \textbf{#2}\\
\end{tabular}
}
- \vspace{\baselineskip}
- \textit{Role outline} \par \par \hspace{2em}#4 \bigskip
+ \vspace{-0.5em}
+ \noindent\sffamily{\textit{Role outline}} \rmfamily \par #4 \vspace{\baselineskip}
+\end{samepage}
}
-\newcommand{\roleAchievements}[5]{
- % Adds up to five achievements in an itemized list
- \textit{Key achievements} \par \par
-
+\newcommand{\roleResponsibilities}[5]{
+ % Adds up to five responsibilities in an itemized list
+ \vspace{\baselineskip}
+
+\noindent\textit{Responsibilities}
+\vspace{-1em}
+
+ \def\rone{#1}
+ \def\rtwo{#2}
+ \def\rthree{#3}
+ \def\rfour{#4}
+ \def\rfive{#5}
+
+ \begin{itemize}
+ \ifdefempty{\rone}{}{\item \rone}
+ \ifdefempty{\rtwo}{}{\item \rtwo}
+ \ifdefempty{\rthree}{}{\item \rthree}
+ \ifdefempty{\rfour}{}{\item \rfour}
+ \ifdefempty{\rfive}{}{\item \rfive}
+ \end{itemize}
+
+% \bigskip
+}
+
+\newcommand{\roleAchievements}[6]{
+ % Adds up to six achievements in an itemized list
+
\def\aone{#1}
\def\atwo{#2}
\def\athree{#3}
\def\afour{#4}
\def\afive{#5}
+ \def\asix{#6}
+
+% \begin{samepage}
+ \vspace{-0.5em}
+ \noindent\sffamily{\textit{Achievements}}\rmfamily
+ \vspace{-1em}
\begin{itemize}
\ifdefempty{\aone}{}{\item \aone}
@@ -499,9 +538,9 @@
\ifdefempty{\athree}{}{\item \athree}
\ifdefempty{\afour}{}{\item \afour}
\ifdefempty{\afive}{}{\item \afive}
+ \ifdefempty{\asix}{}{\item \asix}
\end{itemize}
-
- \bigskip
+%\end{samepage}
}
\newcommand{\newCourse}[4]{
@@ -540,13 +579,14 @@
\newcommand{\setRecpPostcode}[1]{\def\recppostcode{#1}}
\newcommand{\makeLetter}{
+ \setlength{\parindent}{0em}
\begin{flushright}
\today
\end{flushright}
\bigskip \bigskip
- \recpname \\
+ \noindent\recpname \\
\ifdefempty{\recpjobtitle}{}{\recpjobtitle \\}
\recproad \\ \recptown \\ \recpcity \\ \recppostcode
diff --git a/macros/latex/contrib/readablecv/ReadableCV.pdf b/macros/latex/contrib/readablecv/ReadableCV.pdf
index 509ceae98a..63c79940e7 100644
--- a/macros/latex/contrib/readablecv/ReadableCV.pdf
+++ b/macros/latex/contrib/readablecv/ReadableCV.pdf
Binary files differ
diff --git a/macros/latex/contrib/readablecv/ReadableCV.tex b/macros/latex/contrib/readablecv/ReadableCV.tex
index 3a148b61a3..eee0bf4459 100644
--- a/macros/latex/contrib/readablecv/ReadableCV.tex
+++ b/macros/latex/contrib/readablecv/ReadableCV.tex
@@ -1,12 +1,10 @@
-\documentclass{ReadableCV}
+% Change the size of the paper your CV will be printed on
+% by entering either a4paper or letterpaper here.
+\documentclass[a4paper]{ReadableCV}
% Set color of body text
\color{black}
-% Set indent and paragraph formatting
-\setlength{\parindent}{0pt}
-\addtolength{\parskip}{6pt}
-
\begin{document}
% Set page colour using X11names colour definitions
@@ -15,7 +13,7 @@
% Set header details being aligned to the right or left
% If an image is displayed it will be shown on the
% opposite side to what is set here.
-\setHeaderAlignment{right}
+\setHeaderAlignment{left}
% Set colour of all headings, header highlights
\setHeadingColours{SlateGray3}
@@ -33,12 +31,12 @@
% Set up information needed for header.
% If you do not want to include certain
% information use {} instead.
-\setYourName{Joe Bloggs}
-\setYourJobTitle{General Dogs - Body}
-\setYourMobileNo{0712 345 6789}
-\setYourHomeNo{0123 456 7890}
-\setYourEmailAddr{joebloggs@gmail.com}
-\setYourWebAddr{www.joebloggs.co.uk}
+\setYourName{Jobseeker}
+\setYourJobTitle{Job title}
+\setYourMobileNo{Mobile phone}
+\setYourHomeNo{Home phone}
+\setYourEmailAddr{Email address}
+\setYourWebAddr{Web address}
% Display header information
\showHeader
@@ -49,16 +47,22 @@
% Creates a new section title / heading
\newHeading{Personal Profile}
-Write some text here that explains a bit about what you can offer, things you have achieved etc.\ This should be around 4 - 6 lines but is entirely up to the user.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\newHeading{Core Skills}
% Add up to nine core skills. If they are
% all not needed use {} instead.
-\addSkills{one}{two}{three}
- {four}{five}{six}
- {seven}{eight}{nine}
-
+\addSkills{Skill one}
+ {Skill two}
+ {Skill three}
+ {Skill four}
+ {Skill five}
+ {Skill six}
+ {Skill seven}
+ {Skill eight}
+ {Skill nine}
+
\newHeading{Career Summary}
% Set up whether job title or company printed first
@@ -70,50 +74,72 @@ Write some text here that explains a bit about what you can offer, things you ha
% company name [3] and role summary [4]
% If a full history is required use \newrole and \roleAchievements
% If only a brief description needed then just use \newrole
-\newRole{2013 - present}
- {General Dogs - Body}
- {Bigcorp}
- {A short summary broadly detailing what the role involves.}
-
-\roleAchievements{one}
- {two}
- {three}
- {four}
- {five}
-
-\newRole{2000 - 2013}
- {Dishwasher}
- {Fleece them cafe}
- {A short summary broadly detailing what the role involves.}
-
-% This tends to be any training work send you on
-\newHeading{Professional Development}
-
-% Allows the display of a new course. Arguments are
-% [1] date, [2] course title, [3] awarding body and [4] grade
-% Leave grade blank if not required.
-% If JobFirst set then course title will be first
-% If CompanyFirst set then awarding body will be first
-\newCourse{2018}
- {Course Title}
- {Awarding body}
- {Grade}
+\newRole{2018 -- present}
+ {Job title}
+ {Company name}
+ {A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+
+\roleAchievements{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+\newRole{2007 -- 2018}
+{Job title}
+{Company name}
+{A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+\roleAchievements{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+\newRole{1999 -- 2006}
+{Job title}
+{Company name}
+{A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+\roleAchievements{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+\newRole{2003 -- 2006}{Job title}{Company name}{A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+\newRole{2002 -- 2003}{Job title}{Company name}{A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+\newRole{2001 -- 2003}{Job title}{Company name}{A short summary broadly detailing what the role involves. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lacinia gravida pellentesque.}
+
+% move, duplicate, delete or comment out the following line if necessary
+\newpage
% This is training you have done in your own time
\newHeading{Personal Development}
-\newCourse{2018}
- {Course Title}
- {Awarding body}
- {Grade}
+\newCourse{2019}
+{Course title}
+{Awarding body}{}
+
+\newCourse{2019}
+{Course title}
+{Awarding body}{}
+
+\newCourse{2019}
+{Course title}
+{Awarding body}{}
% School education
\newHeading{Education}
-
-\newCourse{2018}
- {Course Title}
- {Awarding body}
- {Grade}
+
+\newCourse{2000 - 2002}{Course title}{Awarding body}{}
+\newCourse{1996 - 1998}{Course title}{Awarding body}{}
+\newCourse{1994 - 1996}{Course title}{Awarding body}{}
+\newCourse{1989 - 1994}{Course title}{Awarding body}{}
\clearpage
@@ -122,6 +148,8 @@ Write some text here that explains a bit about what you can offer, things you ha
% Displays same header as on CV
\showHeader
+
+
% Name and address must be present but
% job title is optional
\setRecpName{Mr Deeds}
@@ -142,15 +170,16 @@ Dear \recpname,
Please find enclosed my CV in application for the post advertised in the [insert place advertised] on [date advert seen].
-The nature of my degree course has prepared me for this position. It involved a great deal of independent research, requiring initiative, self-motivation and a wide range of skills. For one course, [insert course], an understanding of the [insert sector] industry was essential. I found this subject very stimulating.
+The nature of my [qualification] has prepared me for this position. It involved a great deal of independent research, requiring initiative, self-motivation and a wide range of skills. One of my courses, [insert course], an understanding of the [insert sector] industry was essential. I found this subject very interesting.
-I am a fast and accurate writer, with a keen eye for detail and I should be very grateful for the opportunity to progress to market reporting. I am able to take on the responsibility of this position immediately, and have the enthusiasm and determination to ensure that I make a success of it.
+I am a fast and accurate writer, with a keen eye for detail and I should be very grateful for the opportunity to progress. I am able to take on the responsibility of this position immediately, and have the enthusiasm and determination to ensure that I make a success of it.
Thank you for taking the time to consider this application and I look forward to hearing from you in the near future.
% Do not remove the following line
\bigskip
+% comment, or uncomment, whichever you prefer to use
Yours sincerely, % if the opening is "Dear Mr(s) Doe,"
%Yours faithfully, % if the opening is "Dear Sir or Madam,"