├── lump_data.pdf ├── cover_letter.pdf ├── density_pos.pdf ├── figure4-5mers.pdf ├── figure4-5mers.tif ├── stoptag-table.pdf ├── figure1-density.pdf ├── figure1-density.tif ├── figure2-hckmers.pdf ├── figure2-hckmers.tif ├── figure3-contigs.pdf ├── figure3-contigs.tif ├── figures ├── ._table1.pdf ├── ._figure5-5mers.pdf ├── ._stoptag-table.pdf ├── ._figure1-density.pdf ├── ._figure2-hckmers.pdf ├── ._figure3-contigs.pdf ├── ._figure4-contigs.pdf ├── ._table4-overlap.pdf ├── ._table2-assemblies.pdf └── ._table3-simulated-stoptags.pdf ├── assembly_comparison.pdf ├── contig_pos_stoptags.pdf ├── overlap_stoptag_ids.pdf ├── position_read_stoptags.pdf ├── simulated_stoptag_ids.pdf ├── lump_comparison_assembly.xlsx ├── position_read_stoptags_sim.pdf ├── position_read_stoptags_soils.pdf ├── .gitignore ├── position_read_stoptags_rumen_human_gut.pdf ├── Makefile ├── simplemargins.sty ├── subcaption.sty ├── recent-version └── artifacts-paper2.bbl ├── ltcaption.sty ├── bicaption.sty ├── caption2.sty ├── setspace.sty ├── newfloat.sty ├── plos2009.bst └── assembly-artifacts.tex /lump_data.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/lump_data.pdf -------------------------------------------------------------------------------- /cover_letter.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/cover_letter.pdf -------------------------------------------------------------------------------- /density_pos.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/density_pos.pdf -------------------------------------------------------------------------------- /figure4-5mers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figure4-5mers.pdf -------------------------------------------------------------------------------- /figure4-5mers.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figure4-5mers.tif -------------------------------------------------------------------------------- /stoptag-table.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/stoptag-table.pdf -------------------------------------------------------------------------------- /figure1-density.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figure1-density.pdf -------------------------------------------------------------------------------- /figure1-density.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figure1-density.tif -------------------------------------------------------------------------------- /figure2-hckmers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figure2-hckmers.pdf -------------------------------------------------------------------------------- /figure2-hckmers.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figure2-hckmers.tif -------------------------------------------------------------------------------- /figure3-contigs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figure3-contigs.pdf -------------------------------------------------------------------------------- /figure3-contigs.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figure3-contigs.tif -------------------------------------------------------------------------------- /figures/._table1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figures/._table1.pdf -------------------------------------------------------------------------------- /assembly_comparison.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/assembly_comparison.pdf -------------------------------------------------------------------------------- /contig_pos_stoptags.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/contig_pos_stoptags.pdf -------------------------------------------------------------------------------- /overlap_stoptag_ids.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/overlap_stoptag_ids.pdf -------------------------------------------------------------------------------- /figures/._figure5-5mers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figures/._figure5-5mers.pdf -------------------------------------------------------------------------------- /figures/._stoptag-table.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figures/._stoptag-table.pdf -------------------------------------------------------------------------------- /position_read_stoptags.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/position_read_stoptags.pdf -------------------------------------------------------------------------------- /simulated_stoptag_ids.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/simulated_stoptag_ids.pdf -------------------------------------------------------------------------------- /figures/._figure1-density.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figures/._figure1-density.pdf -------------------------------------------------------------------------------- /figures/._figure2-hckmers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figures/._figure2-hckmers.pdf -------------------------------------------------------------------------------- /figures/._figure3-contigs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figures/._figure3-contigs.pdf -------------------------------------------------------------------------------- /figures/._figure4-contigs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figures/._figure4-contigs.pdf -------------------------------------------------------------------------------- /figures/._table4-overlap.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figures/._table4-overlap.pdf -------------------------------------------------------------------------------- /lump_comparison_assembly.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/lump_comparison_assembly.xlsx -------------------------------------------------------------------------------- /figures/._table2-assemblies.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figures/._table2-assemblies.pdf -------------------------------------------------------------------------------- /position_read_stoptags_sim.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/position_read_stoptags_sim.pdf -------------------------------------------------------------------------------- /position_read_stoptags_soils.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/position_read_stoptags_soils.pdf -------------------------------------------------------------------------------- /figures/._table3-simulated-stoptags.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/figures/._table3-simulated-stoptags.pdf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | assembly-artifacts.aux 3 | assembly-artifacts.blg 4 | assembly-artifacts.log 5 | assembly-artifacts.pdf 6 | assembly-artifacts.bbl 7 | -------------------------------------------------------------------------------- /position_read_stoptags_rumen_human_gut.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dib-lab/2012-assembly-artifacts/master/position_read_stoptags_rumen_human_gut.pdf -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: assembly-artifacts.pdf 2 | 3 | clean: 4 | rm -fr *.log *.aux assembly-artifacts.pdf 5 | 6 | assembly-artifacts.pdf: assembly-artifacts.tex 7 | pdflatex assembly-artifacts 8 | bibtex assembly-artifacts 9 | pdflatex assembly-artifacts 10 | pdflatex assembly-artifacts 11 | 12 | arxiv-tar: 13 | tar czf assembly-artifacts.tar.gz assembly-artifacts.tex \ 14 | assembly_comparison.pdf \ 15 | contig_pos_stoptags.pdf \ 16 | density_pos.pdf \ 17 | figure1-density.pdf \ 18 | figure2-hckmers.pdf \ 19 | figure3-contigs.pdf \ 20 | figure4-contigs.pdf \ 21 | figure5-5mers.pdf \ 22 | lump_data.pdf \ 23 | overlap_stoptag_ids.pdf \ 24 | position_read_stoptags.pdf \ 25 | position_read_stoptags_rumen_human_gut.pdf \ 26 | position_read_stoptags_sim.pdf \ 27 | position_read_stoptags_soils.pdf \ 28 | simulated_stoptag_ids.pdf \ 29 | stoptag-table.pdf \ 30 | bicaption.sty \ 31 | caption.sty \ 32 | caption2.sty \ 33 | caption3.sty \ 34 | ltcaption.sty \ 35 | newfloat.sty \ 36 | setspace.sty \ 37 | subcaption.sty \ 38 | plos2009.bst \ 39 | assembly-artifacts.bbl 40 | -------------------------------------------------------------------------------- /simplemargins.sty: -------------------------------------------------------------------------------- 1 | % simplemargins.sty 2 | % 3 | % by Jonathan Kamens (jik@GZA.COM) 4 | % March 15, 1993 5 | % 6 | % This is something that non-hacker-type \LaTeX users have needed for 7 | % a long time. It's just really stupid to have to explain how all of 8 | % the page dimensions work, and how to use \setlength and \addtolength 9 | % to change them, evey time someone who doesn't really care about it 10 | % wants to change their margins. This file gives them the ability to 11 | % do that easily. 12 | % 13 | % \setleftmargin{dimen} sets the left margin to that width 14 | % \setrightmargin{dimen} sets the right margin to that width 15 | % \settopmargin{dimen} sets the top margin to that width 16 | % \setbottommargin{dimen} sets the bottommargin to that width 17 | % \setallmargins{dimen} sets all four margins to that width 18 | % 19 | % \setpagewidth{dimen} sets the page width to that width 20 | % \setpageheight{dimen} sets the page height to that width 21 | % 22 | % The page is assumed to be 8.5 x 11 when this file is initially 23 | % loaded. If this is not the case, then use 24 | % 25 | % \setlength{\smpagewidth}{dimen} 26 | % \setlength{\smpageheight}{dimen} 27 | % 28 | % after loading simplemargins to set the actual page width and height, 29 | % before using any of the other simplemargins command (*including* 30 | % \setpagewidth or \setpageheight, which depend on the previous values 31 | % for \smpagewidth and \smpageheight). 32 | 33 | \typeout{Simplemargins margin control commands <15 Mar 93>.} 34 | 35 | \newlength{\smpagewidth} 36 | \newlength{\smpageheight} 37 | 38 | \setlength{\smpagewidth}{8.5in} 39 | \setlength{\smpageheight}{11in} 40 | 41 | \newcommand{\setpagewidth}[1]{ 42 | \addtolength{\smpagewidth}{-#1} 43 | \addtolength{\textwidth}{-\smpagewidth} 44 | \setlength{\smpagewidth}{#1} 45 | } 46 | \newcommand{\setpageheight}[1]{ 47 | \addtolength{\smpageheight}{-#1} 48 | \addtolength{\textheight}{-\smpageheight} 49 | \setlength{\smpageheight}{#1} 50 | } 51 | \newcommand{\setleftmargin}[1]{ 52 | \addtolength{\textwidth}{\oddsidemargin} 53 | \addtolength{\textwidth}{1in} 54 | \addtolength{\textwidth}{-#1} 55 | \setlength{\oddsidemargin}{-1in} 56 | \addtolength{\oddsidemargin}{#1} 57 | \setlength{\evensidemargin}{\oddsidemargin} 58 | } 59 | \newcommand{\setrightmargin}[1]{ 60 | \setlength{\textwidth}{\smpagewidth} 61 | \addtolength{\textwidth}{-\oddsidemargin} 62 | \addtolength{\textwidth}{-1in} 63 | \addtolength{\textwidth}{-#1} 64 | } 65 | \newcommand{\settopmargin}[1]{ 66 | \addtolength{\textheight}{\topmargin} 67 | \addtolength{\textheight}{1in} 68 | \addtolength{\textheight}{\headheight} 69 | \addtolength{\textheight}{\headsep} 70 | \addtolength{\textheight}{-#1} 71 | \setlength{\topmargin}{-1in} 72 | \addtolength{\topmargin}{-\headheight} 73 | \addtolength{\topmargin}{-\headsep} 74 | \addtolength{\topmargin}{#1} 75 | } 76 | \newcommand{\setbottommargin}[1]{ 77 | \setlength{\textheight}{\smpageheight} 78 | \addtolength{\textheight}{-\topmargin} 79 | \addtolength{\textheight}{-1in} 80 | \addtolength{\textheight}{-\footskip} 81 | \addtolength{\textheight}{-#1} 82 | } 83 | \newcommand{\setallmargins}[1]{ 84 | \settopmargin{#1} 85 | \setbottommargin{#1} 86 | \setleftmargin{#1} 87 | \setrightmargin{#1} 88 | } 89 | -------------------------------------------------------------------------------- /subcaption.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `subcaption.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% subcaption.dtx (with options: `package') 8 | %% 9 | %% Copyright (C) 1994-2012 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) 10 | %% 11 | %% -------------------------------------------------------------------------- 12 | %% 13 | %% This work may be distributed and/or modified under the 14 | %% conditions of the LaTeX Project Public License, either version 1.3 15 | %% of this license or (at your option) any later version. 16 | %% The latest version of this license is in 17 | %% http://www.latex-project.org/lppl.txt 18 | %% and version 1.3 or later is part of all distributions of LaTeX 19 | %% version 2003/12/01 or later. 20 | %% 21 | %% This work has the LPPL maintenance status "maintained". 22 | %% 23 | %% This Current Maintainer of this work is Axel Sommerfeldt. 24 | %% 25 | %% This work consists of the files caption.ins, caption.dtx, caption2.dtx, 26 | %% caption3.dtx, bicaption.dtx, ltcaption.dtx, subcaption.dtx, and newfloat.dtx, 27 | %% the derived files caption.sty, caption2.sty, caption3.sty, 28 | %% bicaption.sty, ltcaption.sty, subcaption.sty, and newfloat.sty, 29 | %% and the user manuals caption-deu.tex, caption-eng.tex, and caption-rus.tex. 30 | %% 31 | \NeedsTeXFormat{LaTeX2e}[1994/12/01] 32 | \ProvidesPackage{subcaption}[2012/01/12 v1.1d Sub-captions (AR)] 33 | \RequirePackage{caption}[2011/08/18] % needs v3.2b or newer 34 | \caption@AtBeginDocument{\caption@ifcompatibility{% 35 | \caption@Error{% 36 | The `subcaption' package does not work correctly\MessageBreak 37 | in compatibility mode}}{}} 38 | \caption@ifundefined\subfigure{}{% 39 | \PackageError{subcaption}{% 40 | This package can't be used in cooperation\MessageBreak 41 | with the subfigure package}{RTFM}% 42 | \endinput} 43 | \caption@ifundefined\subfloat{}{% 44 | \PackageError{subcaption}{% 45 | This package can't be used in cooperation\MessageBreak 46 | with the subfig package}{RTFM}% 47 | \endinput} 48 | \caption@SetupOptions{subcaption}{\captionsetup[sub]{#2}}% 49 | \caption@ExecuteOptions{subcaption}{% 50 | font+=small,labelformat=parens,labelsep=space,skip=6pt,list=0,hypcap=0} 51 | \caption@ProcessOptions*{subcaption} 52 | \caption@ForEachType{\DeclareCaptionSubType{#1}} 53 | \newcommand*\subcaption{% 54 | \caption@iftype 55 | {\setcaptionsubtype*\caption}% 56 | {\caption@Error{\noexpand\subcaption outside float}% 57 | \caption@gobble}}% 58 | \g@addto@macro\caption@subtypehook{% 59 | \let\subcaption\caption} 60 | \newcommand*\phantomsubcaption{% 61 | \caption@iftype 62 | {\setcaptionsubtype*\phantomcaption}% 63 | {\caption@Error{\noexpand\phantomsubcaption outside float}}}% 64 | \g@addto@macro\caption@subtypehook{% 65 | \let\phantomsubcaption\phantomcaption} 66 | \caption@For{subtypelist}{% 67 | \newenvironment{sub#1}% 68 | {\caption@withoptargs\subcaption@minipage}% 69 | {\endminipage}}% 70 | \newcommand*\subcaption@minipage[2]{% 71 | \minipage#1{#2}% 72 | \setcaptionsubtype\relax} 73 | \newcommand*\subcaptionbox{% 74 | \let\captionbox@settype\setcaptionsubtype 75 | \caption@withoptargs\caption@box} 76 | \g@addto@macro\caption@subtypehook{% 77 | \ifx\label\subcaption@label \else 78 | \let\subcaption@ORI@label\label 79 | \let\label\subcaption@label 80 | \fi} 81 | \newcommand*\subcaption@label{ 82 | \caption@withoptargs\subcaption@@label} 83 | \newcommand*\subcaption@@label[2]{% 84 | \@bsphack\begingroup 85 | \subcaption@ORI@label#1{#2}% 86 | \let\SK@\@gobbletwo 87 | \protected@edef\@currentlabel{\csname thesub\@captype\endcsname}% 88 | \subcaption@ORI@label#1{sub@#2}% 89 | \endgroup\@esphack} 90 | \DeclareRobustCommand*\subref{% 91 | \@ifstar{\subcaption@ref*}\@subref} 92 | \newcommand*\@subref{% 93 | \caption@withoptargs\@@subref} 94 | \newcommand*\@@subref[2]{% 95 | \caption@ifundefined\hyperref 96 | {\subcaption@ref#1{#2}}% 97 | {\hyperref[#2]{\subcaption@ref*#1{#2}}}} 98 | \newcommand*\subcaption@ref{% 99 | \caption@withoptargs\subcaption@@ref} 100 | \newcommand*\subcaption@@ref[2]{% 101 | \begingroup 102 | \caption@setoptions{sub}% 103 | \subcaption@reffmt\p@subref{\ref#1{sub@#2}}% 104 | \endgroup} 105 | \newcommand*\p@subref{} 106 | \DeclareCaptionOption{subrefformat}{\subcaption@setrefformat{#1}} 107 | \newcommand*\subcaption@setrefformat[1]{% 108 | \@ifundefined{caption@lfmt@#1}% 109 | {\caption@Error{Undefined label format `#1'}}% 110 | {\expandafter\let\expandafter\subcaption@reffmt\csname caption@lfmt@#1\endcsname}} 111 | \subcaption@setrefformat{simple} 112 | \endinput 113 | %% 114 | %% End of file `subcaption.sty'. 115 | -------------------------------------------------------------------------------- /recent-version/artifacts-paper2.bbl: -------------------------------------------------------------------------------- 1 | \begin{thebibliography}{10} 2 | \providecommand{\url}[1]{\texttt{#1}} 3 | \providecommand{\urlprefix}{URL } 4 | \expandafter\ifx\csname urlstyle\endcsname\relax 5 | \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else 6 | \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup 7 | \urlstyle{rm}\Url}\fi 8 | \providecommand{\bibAnnoteFile}[1]{% 9 | \IfFileExists{#1}{\begin{quotation}\noindent\textsc{Key:} #1\\ 10 | \textsc{Annotation:}\ \input{#1}\end{quotation}}{}} 11 | \providecommand{\bibAnnote}[2]{% 12 | \begin{quotation}\noindent\textsc{Key:} #1\\ 13 | \textsc{Annotation:}\ #2\end{quotation}} 14 | \providecommand{\eprint}[2][]{\url{#2}} 15 | 16 | \bibitem{Hess:2011p686} 17 | Hess M, Sczyrba A, Egan R, Kim TW, Chokhawala H, et~al. (2011) Metagenomic 18 | discovery of biomass-degrading genes and genomes from cow rumen. 19 | \newblock Science 331: 463--7. 20 | \bibAnnoteFile{Hess:2011p686} 21 | 22 | \bibitem{Qin:2010p189} 23 | Qin J, Li R, Raes J, Arumugam M, Burgdorf KS, et~al. (2010) A human gut 24 | microbial gene catalogue established by metagenomic sequencing. 25 | \newblock Nature 464: 59--65. 26 | \bibAnnoteFile{Qin:2010p189} 27 | 28 | \bibitem{Iverson:2012p1281} 29 | Iverson V, Morris RM, Frazar CD, Berthiaume CT, Morales RL, et~al. (2012) 30 | Untangling genomes from metagenomes: revealing an uncultured class of marine 31 | euryarchaeota. 32 | \newblock Science 335: 587--90. 33 | \bibAnnoteFile{Iverson:2012p1281} 34 | 35 | \bibitem{Mackelprang:2011p1087} 36 | Mackelprang R, Waldrop MP, DeAngelis KM, David MM, Chavarria KL, et~al. (2011) 37 | Metagenomic analysis of a permafrost microbial community reveals a rapid 38 | response to thaw. 39 | \newblock Nature 480: 368--71. 40 | \bibAnnoteFile{Mackelprang:2011p1087} 41 | 42 | \bibitem{Miller:2010p226} 43 | Miller JR, Koren S, Sutton G (2010) Assembly algorithms for next-generation 44 | sequencing data. 45 | \newblock Genomics 95: 315--27. 46 | \bibAnnoteFile{Miller:2010p226} 47 | 48 | \bibitem{Pop:2009p798} 49 | Pop M (2009) Genome assembly reborn: recent computational challenges. 50 | \newblock Briefings in bioinformatics 10: 354--66. 51 | \bibAnnoteFile{Pop:2009p798} 52 | 53 | \bibitem{Mende:2012p1262} 54 | Mende DR, Waller AS, Sunagawa S, J{\"a}rvelin AI, Chan MM, et~al. (2012) 55 | Assessment of metagenomic assembly using simulated next generation sequencing 56 | data. 57 | \newblock PLoS ONE 7: e31386. 58 | \bibAnnoteFile{Mende:2012p1262} 59 | 60 | \bibitem{Pignatelli:2011p742} 61 | Pignatelli M, Moya A (2011) Evaluating the fidelity of de novo short read 62 | metagenomic assembly using simulated data. 63 | \newblock PLoS ONE 6: e19984. 64 | \bibAnnoteFile{Pignatelli:2011p742} 65 | 66 | \bibitem{Peng:2011p898} 67 | Peng Y, Leung HCM, Yiu SM, Chin FYL (2011) Meta-idba: a de novo assembler for 68 | metagenomic data. 69 | \newblock Bioinformatics 27: i94--101. 70 | \bibAnnoteFile{Peng:2011p898} 71 | 72 | \bibitem{Namiki:2012iq} 73 | Namiki T, Hachiya T, Tanaka H, Sakakibara Y (2012) {MetaVelvet: an extension of 74 | Velvet assembler to de novo metagenome assembly from short sequence reads}. 75 | \newblock Nucleic Acids Research . 76 | \bibAnnoteFile{Namiki:2012iq} 77 | 78 | \bibitem{Li:2010p234} 79 | Li R, Zhu H, Ruan J, Qian W, Fang X, et~al. (2010) De novo assembly of human 80 | genomes with massively parallel short read sequencing. 81 | \newblock Genome Res 20: 265--72. 82 | \bibAnnoteFile{Li:2010p234} 83 | 84 | \bibitem{Mavromatis:2006p894} 85 | Mavromatis K, Ivanova N, Barry K, Shapiro H, Goltsman E, et~al. (2006) Use of 86 | simulated data sets to evaluate the fidelity of metagenomic processing 87 | methods. 88 | \newblock Nature Methods 4: 495--500. 89 | \bibAnnoteFile{Mavromatis:2006p894} 90 | 91 | \bibitem{Morgan:2010p740} 92 | Morgan J, Darling A, Eisen J (2010) Metagenomic sequencing of an in 93 | vitro-simulated microbial community. 94 | \newblock PLoS ONE 5: e10209. 95 | \bibAnnoteFile{Morgan:2010p740} 96 | 97 | \bibitem{Chitsaz:2011kr} 98 | Chitsaz H, Yee-Greenbaum JL, Tesler G, Lombardo MJ, Dupont CL, et~al. (2011) 99 | {Efficient de novo assembly of single-cell bacterial genomes from short-read 100 | data sets}. 101 | \newblock Nature Biotechnology 29: 915--921. 102 | \bibAnnoteFile{Chitsaz:2011kr} 103 | 104 | \bibitem{GomezAlvarez:2009p1334} 105 | Gomez-Alvarez V, Teal TK, Schmidt TM (2009) Systematic artifacts in metagenomes 106 | from complex microbial communities. 107 | \newblock The ISME Journal 3: 1314--7. 108 | \bibAnnoteFile{GomezAlvarez:2009p1334} 109 | 110 | \bibitem{Keegan:2012p1336} 111 | Keegan KP, Trimble WL, Wilkening J, Wilke A, Harrison T, et~al. (2012) A 112 | platform-independent method for detecting errors in metagenomic sequencing 113 | data: Drisee. 114 | \newblock PLoS Comput Biol 8: e1002541. 115 | \bibAnnoteFile{Keegan:2012p1336} 116 | 117 | \bibitem{Niu:2010p1333} 118 | Niu B, Fu L, Sun S, Li W (2010) Artificial and natural duplicates in 119 | pyrosequencing reads of metagenomic data. 120 | \newblock BMC Bioinformatics 11: 187. 121 | \bibAnnoteFile{Niu:2010p1333} 122 | 123 | \bibitem{Pell:2012cq} 124 | Pell J, Hintze A, Canino-Koning R, Howe A, Tiedje JM, et~al. (2012) {Scaling 125 | metagenome sequence assembly with probabilistic de Bruijn graphs}. 126 | \newblock Proceedings of the National Academy of Sciences of the United States 127 | of America 109: 13272--13277. 128 | \bibAnnoteFile{Pell:2012cq} 129 | 130 | \bibitem{Zerbino:2008p665} 131 | Zerbino DR, Birney E (2008) Velvet: algorithms for de novo short read assembly 132 | using de bruijn graphs. 133 | \newblock Genome Res 18: 821--9. 134 | \bibAnnoteFile{Zerbino:2008p665} 135 | 136 | \bibitem{Barabasi:1999p1083} 137 | Barab{\'a}si A, Albert R (1999) Emergence of scaling in random networks. 138 | \newblock Science 286: 509. 139 | \bibAnnoteFile{Barabasi:1999p1083} 140 | 141 | \bibitem{Haas:2011jg} 142 | Haas BJ, Gevers D, Earl AM, Feldgarden M, Ward DV, et~al. (2011) {Chimeric 16S 143 | rRNA sequence formation and detection in Sanger and 454-pyrosequenced PCR 144 | amplicons}. 145 | \newblock Genome Research 21: 494--504. 146 | \bibAnnoteFile{Haas:2011jg} 147 | 148 | \bibitem{Altschul:1990p1335} 149 | Altschul SF, Gish W, Miller W, Myers EW, Lipman DJ (1990) Basic local alignment 150 | search tool. 151 | \newblock J Mol Biol 215: 403--10. 152 | \bibAnnoteFile{Altschul:1990p1335} 153 | 154 | \bibitem{Li:2001p1337} 155 | Li W, Jaroszewski L, Godzik A (2001) Clustering of highly homologous sequences 156 | to reduce the size of large protein databases. 157 | \newblock Bioinformatics 17: 282--3. 158 | \bibAnnoteFile{Li:2001p1337} 159 | 160 | \bibitem{Sommer:2007p1253} 161 | Sommer DD, Delcher AL, Salzberg SL, Pop M (2007) Minimus: a fast, lightweight 162 | genome assembler. 163 | \newblock Bmc Bioinformatics 8: 64. 164 | \bibAnnoteFile{Sommer:2007p1253} 165 | 166 | \end{thebibliography} 167 | -------------------------------------------------------------------------------- /ltcaption.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `ltcaption.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% ltcaption.dtx (with options: `package') 8 | %% 9 | %% Copyright (C) 1994-2012 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) 10 | %% 11 | %% -------------------------------------------------------------------------- 12 | %% 13 | %% This work may be distributed and/or modified under the 14 | %% conditions of the LaTeX Project Public License, either version 1.3 15 | %% of this license or (at your option) any later version. 16 | %% The latest version of this license is in 17 | %% http://www.latex-project.org/lppl.txt 18 | %% and version 1.3 or later is part of all distributions of LaTeX 19 | %% version 2003/12/01 or later. 20 | %% 21 | %% This work has the LPPL maintenance status "maintained". 22 | %% 23 | %% This Current Maintainer of this work is Axel Sommerfeldt. 24 | %% 25 | %% This work consists of the files caption.ins, caption.dtx, caption2.dtx, 26 | %% caption3.dtx, bicaption.dtx, ltcaption.dtx, subcaption.dtx, and newfloat.dtx, 27 | %% the derived files caption.sty, caption2.sty, caption3.sty, 28 | %% bicaption.sty, ltcaption.sty, subcaption.sty, and newfloat.sty, 29 | %% and the user manuals caption-deu.tex, caption-eng.tex, and caption-rus.tex. 30 | %% 31 | \NeedsTeXFormat{LaTeX2e}[1994/12/01] 32 | \ProvidesPackage{ltcaption}[2011/09/12 v1.3 longtable captions (AR)] 33 | \@ifpackageloaded{longtable}{}{% 34 | \PackageError{ltcaption}{longtable package not loaded, aborting}{RTFM}} 35 | \providecommand*\LTcaptype{table} 36 | \providecommand*\ext@table{lot} 37 | \@ifundefined{caption@AtBeginDocument}\AtBeginDocument\caption@AtBeginDocument{% 38 | \@ifpackageloaded{listings}{% 39 | \providecommand*\ext@lstlisting{lol}}{}} 40 | \@ifpackageloaded{caption}{}{% 41 | \newskip\LTcapskip \LTcapskip=\abovecaptionskip 42 | \newskip\LTcapleft \LTcapleft=\fill 43 | \newskip\LTcapright \LTcapright=\fill 44 | \newif\ifLTcapmargins \LTcapmarginstrue 45 | \providecommand*\CaptionLabelFont{} 46 | \providecommand*\CaptionTextFont{} 47 | \providecommand*\CaptionLabelSeparator{:} 48 | } 49 | \@ifundefined{caption@AtBeginDocument}\AtBeginDocument\caption@AtBeginDocument{% 50 | \let\ltcaption@ORI@LT@array\LT@array 51 | \renewcommand*\LT@array{% 52 | \let\caption@LT@refstepcounter\refstepcounter 53 | \def\refstepcounter{% 54 | \caption@LTtype\caption@LT@refstepcounter}% 55 | \let\caption@LT@Hrefstepcounter\H@refstepcounter 56 | \def\H@refstepcounter{% 57 | \caption@LTtype\caption@LT@Hrefstepcounter}% 58 | \let\caption@LT@makecurrent\hyper@makecurrent 59 | \def\hyper@makecurrent{% 60 | \caption@LTtype\caption@LT@makecurrent}% 61 | \def\lst@@caption{\relax}% 62 | \ltcaption@ORI@LT@array}} 63 | \newcommand*\caption@LTtype[2]{% 64 | \edef\caption@LT@tempa{#2}% 65 | \ifx\caption@LT@tempa\caption@LT@table 66 | \caption@LT@type#1% 67 | \else 68 | #1{#2}% 69 | \fi}% 70 | \newcommand*\caption@LT@type[1]{% 71 | \expandafter#1\expandafter{\LTcaptype}} 72 | \newcommand*\caption@LT@table{table}% 73 | \long\def\LT@c@ption#1[#2]#3{% 74 | \LT@makecaption#1{\csname fnum@\LTcaptype\endcsname}{#3}% 75 | \def\@tempa{#2}% 76 | \ifx\@tempa\@empty\else 77 | {\let\\\space 78 | \addcontentsline{\csname ext@\LTcaptype\endcsname}{\LTcaptype}% 79 | {\protect\numberline{\csname the\LTcaptype\endcsname}{#2}}}% 80 | \fi 81 | \ignorespaces} 82 | \renewcommand\LT@makecaption[3]{% 83 | \LT@@makecaption{% 84 | \sbox\@tempboxa{% 85 | #1{{\CaptionLabelFont#2\CaptionLabelSeparator} }\CaptionTextFont#3}% 86 | \ifdim\wd\@tempboxa>\hsize 87 | #1{{\CaptionLabelFont#2\CaptionLabelSeparator} }\CaptionTextFont#3% 88 | \else 89 | \hbox to\hsize{\hfil\box\@tempboxa\hfil}% 90 | \fi 91 | \endgraf\vskip\LTcapskip}} 92 | \newcommand\LT@@makecaption[1]{% 93 | \caption@LT@make{\hb@xt@\hsize{% 94 | \ifLTcapmargins 95 | \hspace\LTcapleft 96 | \FBifLTcapwidth{\advance\LTcapwidth-\LTcapleft}% 97 | \else 98 | \hspace\LTleft 99 | \FBifLTcapwidth{\advance\LTcapwidth-\LTleft}% 100 | \fi 101 | \FBifLTcapwidth{\advance\LTcapwidth-% 102 | \ifLTcapmargins\LTcapright\else\LTright\fi}% 103 | \parbox[t]\LTcapwidth{#1}% 104 | \ifLTcapmargins 105 | \hskip\LTcapright 106 | \else 107 | \hskip\LTright 108 | \fi}}} 109 | \AtBeginDocument{\providecommand*\FBifLTcapwidth[1]{}} 110 | \newcommand\caption@LT@make[1]{% 111 | \noalign{\caption@LT@config}% 112 | \expandafter\LT@mcol\expandafter\LT@cols\expandafter{\caption@LTfmt}{% 113 | \hb@xt@\z@{% 114 | \hspace\caption@LTleft 115 | \parbox[t]\linewidth{#1}% 116 | \hspace\caption@LTright}}}% 117 | \newcommand*\caption@LT@config{% 118 | \caption@LT@parse\LTleft\caption@LTleft\caption@ifLTleft 119 | \caption@LT@parse\LTright\caption@LTright\caption@ifLTright 120 | \xdef\caption@LTfmt{% 121 | @{}\caption@ifLTleft{\caption@ifLTright{c}{r}}{l}@{}}} 122 | \newcommand*\caption@LT@parse[3]{% 123 | \let\@pluspart\@undefined 124 | \let\@minuspart\@undefined 125 | \expandafter\caption@LT@parse@\expandafter\@fixpart\the#1 x % 126 | \xdef#2{-\@fixpart 127 | \ifx\@minuspart\@undefined\else 128 | \space\@plus\space\@minuspart 129 | \fi 130 | \ifx\@pluspart\@undefined\else 131 | \space\@minus\space\@pluspart 132 | \fi}% 133 | \let#3\@firstoftwo 134 | \ifx\@pluspart\@undefined 135 | \ifx\@minuspart\@undefined 136 | \let#3\@secondoftwo 137 | \fi 138 | \fi} 139 | \def\caption@LT@parse@#1#2 {% 140 | \edef\@tempa{\@car#2\@nil}% 141 | \if p\@tempa 142 | \def\next{\caption@LT@parse@\@pluspart}% 143 | \else\if m\@tempa 144 | \def\next{\caption@LT@parse@\@minuspart}% 145 | \else\if x\@tempa 146 | \let\next\relax 147 | \else 148 | \def#1{#2}% 149 | \def\next{\caption@LT@parse@ @}% 150 | \fi\fi\fi 151 | \next} 152 | \newenvironment{longtable*}{% 153 | \let\caption@LT@type\@gobble 154 | \let\caption@LT@raisedlink\Hy@raisedlink 155 | \def\Hy@raisedlink{% 156 | \let\Hy@raisedlink\caption@LT@raisedlink 157 | \@gobble}% 158 | \let\ltcaption@ORI@LT@c@ption\LT@c@ption 159 | \def\LT@c@ption##1[##2]##3{% 160 | \ifx##1\@firstofone 161 | \PackageError{ltcaption}% 162 | {Not allowed in longtable* environment}% 163 | {If you do not understand this error, please take a closer 164 | look\MessageBreak at the documentation of the `ltcaption' 165 | package.\MessageBreak \@ehc}% 166 | \else 167 | \ltcaption@ORI@LT@c@ption{##1}[{##2}]{##3}% 168 | \fi}% 169 | \longtable}% 170 | {\endlongtable} 171 | \@ifundefined{@komalongtablefalse}{}{% 172 | \if@komalongtable 173 | \renewcommand{\LT@makecaption}[3]{% 174 | \noalign{% 175 | \if@captionabove 176 | \vskip\belowcaptionskip 177 | \else 178 | \vskip\abovecaptionskip 179 | \fi 180 | }% 181 | \caption@LT@make{% 182 | \@@makecaption{#1}{#2}{#3}% 183 | \endgraf 184 | \if@captionabove 185 | \vskip\abovecaptionskip 186 | \else 187 | \vskip\belowcaptionskip 188 | \fi 189 | }% 190 | }% 191 | \let\LT@@makecaption\@undefined 192 | \fi} 193 | \endinput 194 | %% 195 | %% End of file `ltcaption.sty'. 196 | -------------------------------------------------------------------------------- /bicaption.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `bicaption.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% bicaption.dtx (with options: `package') 8 | %% 9 | %% Copyright (C) 1994-2012 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) 10 | %% 11 | %% -------------------------------------------------------------------------- 12 | %% 13 | %% This work may be distributed and/or modified under the 14 | %% conditions of the LaTeX Project Public License, either version 1.3 15 | %% of this license or (at your option) any later version. 16 | %% The latest version of this license is in 17 | %% http://www.latex-project.org/lppl.txt 18 | %% and version 1.3 or later is part of all distributions of LaTeX 19 | %% version 2003/12/01 or later. 20 | %% 21 | %% This work has the LPPL maintenance status "maintained". 22 | %% 23 | %% This Current Maintainer of this work is Axel Sommerfeldt. 24 | %% 25 | %% This work consists of the files caption.ins, caption.dtx, caption2.dtx, 26 | %% caption3.dtx, bicaption.dtx, ltcaption.dtx, subcaption.dtx, and newfloat.dtx, 27 | %% the derived files caption.sty, caption2.sty, caption3.sty, 28 | %% bicaption.sty, ltcaption.sty, subcaption.sty, and newfloat.sty, 29 | %% and the user manuals caption-deu.tex, caption-eng.tex, and caption-rus.tex. 30 | %% 31 | \NeedsTeXFormat{LaTeX2e}[1994/12/01] 32 | \ProvidesPackage{bicaption}[2011/10/30 v1.0a Bilingual Captions (AR)] 33 | \RequirePackage{caption}[2011/08/28] % needs v3.2c or newer 34 | \caption@AtBeginDocument{\caption@ifcompatibility{% 35 | \caption@Error{% 36 | The `bicaption' package does not work correctly\MessageBreak 37 | in compatibility mode}}{}} 38 | \newcommand*\bicaption@Warning[1]{% 39 | \bicaption@WarningNoLine{#1\on@line}} 40 | \newcommand*\bicaption@WarningNoLine[1]{% 41 | \PackageWarning{bicaption}{#1.^^J\bicaption@wh\@gobbletwo}} 42 | \newcommand*\bicaption@wh{% 43 | See the bicaption package documentation for explanation.} 44 | \newcommand*\bicaption@Error[1]{% 45 | \PackageError{bicaption}{#1}\bicaption@eh} 46 | \newcommand*\bicaption@eh{% 47 | If you do not understand this error, please take a closer look\MessageBreak 48 | at the documentation of the `bicaption' package.\MessageBreak\@ehc} 49 | \newcount\bicaption@lang 50 | \DeclareCaptionOption{bi-lang}{% 51 | \caption@ifinlist{#1}{0,all,both}{% 52 | \bicaption@lang=0\relax 53 | }{\caption@ifinlist{#1}{1,1st,first}{% 54 | \bicaption@lang=1\relax 55 | }{\caption@ifinlist{#1}{2,2nd,second}{% 56 | \bicaption@lang=2\relax 57 | }{% 58 | \bicaption@Error{Undefined bi-lang value `#1'}% 59 | }}}} 60 | \DeclareCaptionOption{bi-singlelinecheck}[1]{% 61 | \caption@set@bool\bicaption@ifslc{#1}} 62 | \DeclareCaptionOption{bi-slc}[1]{% 63 | \caption@set@bool\bicaption@ifslc{#1}} 64 | \DeclareCaptionOption{bi-swap}[1]{% 65 | \caption@set@bool\bicaption@ifswap{#1}} 66 | \DeclareCaptionOption{lang}{\def\bicaption@language{#1}} 67 | \let\KV@caption@language\KV@caption@lang 68 | \newcommand*\bicaption@selectlanguage{% 69 | \@ifstar 70 | {\bicaption@select@language\select@language} 71 | {\bicaption@select@language\selectlanguage}} 72 | \newcommand*\bicaption@select@language[1]{% 73 | \caption@ifundefined\bicaption@language{}{% 74 | \expandafter#1\expandafter{\bicaption@language}}} 75 | \g@addto@macro\caption@applyfont{% 76 | \bicaption@selectlanguage*} 77 | \g@addto@macro\caption@prepareslc{% 78 | \let\bicaption@language\@undefined} 79 | \caption@ExecuteOptions{caption}{bi-lang=0,bi-slc=1,bi-swap=0} 80 | \ifcsname bbl@main@language\endcsname 81 | \edef\@tempa{\noexpand\captionsetup[bi-first]{lang=\bbl@main@language}} 82 | \@tempa 83 | \else\ifcsname xpg@main@language\endcsname 84 | \edef\@tempa{\noexpand\captionsetup[bi-first]{lang=\xpg@main@language}} 85 | \@tempa 86 | \else 87 | \bicaption@WarningNoLine{Please load this package after the babel package} 88 | \fi\fi 89 | \caption@SetupOptions{bicaption}{\captionsetup[bi-second]{#2}}% 90 | \caption@ProcessOptions*{bicaption} 91 | \let\caption@kernel@addcontentsline@ORI\caption@kernel@addcontentsline 92 | \renewcommand*\caption@kernel@addcontentsline[2]{% 93 | \caption@ifundefined\bicaption@lentry 94 | {\caption@kernel@addcontentsline@ORI{#1}{#2}}% 95 | {\expandafter\bicaption@addcontentsline\expandafter{\bicaption@lentry}{#1}{#2}% 96 | \global\let\bicaption@lentry\@undefined}} 97 | \newcommand\bicaption@addcontentsline[3]{% 98 | \begingroup 99 | \caption@setoptions{bi}% 100 | \ifnum\bicaption@lang=2\relax \else 101 | \begingroup 102 | \caption@setoptions{bi-first}% 103 | \bicaption@@addcontentsline{#2}{#3}% 104 | \endgroup 105 | \fi 106 | \ifnum\bicaption@lang=1\relax \else 107 | \begingroup 108 | \caption@setoptions{bi-second}% 109 | \bicaption@@addcontentsline{#2}{#1}% 110 | \endgroup 111 | \fi 112 | \endgroup} 113 | \newcommand*\bicaption@@addcontentsline[2]{% 114 | \caption@ifcontentsline{#2}{% 115 | \bicaption@selectlanguage\relax 116 | \caption@kernel@addcontentsline@ORI{#1}{#2}}} 117 | \let\caption@@make@ORI\caption@@make 118 | \renewcommand\caption@@make[2]{% 119 | \caption@ifundefined\bicaption@text 120 | {\caption@@make@ORI{#1}{#2}}% 121 | {\expandafter\bicaption@@make\expandafter{\bicaption@text}{#1}{#2}% 122 | \global\let\bicaption@text\@undefined}} 123 | \newcommand\bicaption@@make[3]{% 124 | \caption@setoptions{bi}% 125 | \ifnum\bicaption@lang=0\relax 126 | \bicaption@ifslc 127 | {\caption@@slc{#2}{#3}{\captionwidth}{}% 128 | {\caption@set@bool\caption@ifslc0}% 129 | \caption@@slc{#2}{#1}{\captionwidth}{}% 130 | {\caption@set@bool\caption@ifslc0}}% 131 | {}% 132 | \fi 133 | \ifnum\bicaption@lang=2\relax 134 | \bicaption@label 135 | \global\let\bicaption@label\relax 136 | \else 137 | \begingroup 138 | \caption@setoptions{bi-first}% 139 | \caption@@make@ORI{#2}{#3}% 140 | \endgroup 141 | \fi 142 | \ifnum\bicaption@lang=1\relax 143 | \else 144 | \begingroup 145 | \caption@setoptions{bi-second}% 146 | \caption@@make@ORI{#2}{#1}% 147 | \endgroup 148 | \fi} 149 | \newcommand\bicaption{\@bicaption\caption} 150 | \newcommand\bicaptionbox{\@bicaption\captionbox} 151 | \newcommand\bisubcaption{\@bicaption\subcaption} 152 | \let\subbicaption\bisubcaption 153 | \newcommand\bisubcaptionbox{\@bicaption\subcaptionbox} 154 | \let\subbicaptionbox\bisubcaptionbox 155 | \newcommand*\@bicaption[1]{% 156 | \def\bicaption@cmd{#1}% 157 | \@ifstar 158 | {\l@addto@macro\bicaption@cmd*% 159 | \@@bicaption}% 160 | {\caption@dblarg\@@@bicaption}} 161 | \newcommand\@@bicaption[1]{% 162 | \@@@@bicaption{}{#1}[]} 163 | \long\def\@@@bicaption[#1]#2{% 164 | \caption@dblarg{\@@@@bicaption{#1}{#2}}} 165 | \long\def\@@@@bicaption#1#2[#3]#4{% 166 | \bicaption@getlabel#2\label{}\@nil 167 | \bicaption@ifswap 168 | {\bicaption@setup{#1}{#2}% 169 | \bicaption@cmd[{#3}]{#4}}% 170 | {\bicaption@setup{#3}{#4}% 171 | \bicaption@cmd[{#1}]{#2}}} 172 | \long\def\bicaption@getlabel#1\label#2#3\@nil{% 173 | \def\@tempa{#2}% 174 | \ifx\@tempa\@empty 175 | \let\bicaption@label\relax 176 | \else 177 | \def\@tempb{*}% 178 | \ifx\@tempa\@tempb 179 | \def\bicaption@label{\label*}% 180 | \bicaption@@getlabel#3\@nil 181 | \else 182 | \def\bicaption@label{\label}% 183 | \bicaption@@getlabel{#2}#3\@nil 184 | \fi 185 | \fi} 186 | \long\def\bicaption@@getlabel#1#2\@nil{% 187 | \def\@tempa{#1}% 188 | \def\@tempb{[}% 189 | \ifx\@tempa\@tempb 190 | \bicaption@@@getlabel#1#2\@nil 191 | \else 192 | \l@addto@macro\bicaption@label{{#1}}% 193 | \fi} 194 | \long\def\bicaption@@@getlabel[#1]#2\@nil{% 195 | \l@addto@macro\bicaption@label{[{#1}]}% 196 | \bicaption@@getlabel#2\@nil} 197 | \newcommand\bicaption@setup[2]{% 198 | \def\bicaption@lentry{#1}% 199 | \def\bicaption@text{\ignorespaces#2}} 200 | \AtBeginDocument{% 201 | \ifx\caption@freeze\@undefined \else 202 | \g@addto@macro\caption@freeze{% 203 | \let\caption@frozen@bicaption\bicaption 204 | \def\bicaption{% 205 | \caption@withoptargs\caption@SC@bicaption}% 206 | \long\def\caption@SC@bicaption#1#2{% 207 | \@ifnextchar[%] 208 | {\caption@SC@bi@caption{#1}{#2}}% 209 | {\caption@SC@bi@caption@{#1}{#2}}}% 210 | \long\def\caption@SC@bi@caption#1#2[#3]#4{% 211 | \caption@@freeze{\bicaption#1{#2}[{#3}]{#4}}% 212 | \ignorespaces}% 213 | \long\def\caption@SC@bi@caption@#1#2#3{% 214 | \caption@@freeze{\bicaption#1{#2}{#3}}% 215 | \ignorespaces}% 216 | \l@addto@macro\caption@warmup{% 217 | \let\bicaption\caption@frozen@bicaption}}% 218 | \fi} 219 | \newcommand*\bicaption@declarelist[1]{% 220 | \@namedef{listof#1}{\bicaption@listof#1}} 221 | \@onlypreamble\bicaption@declarelist 222 | \def\bicaption@listof#1 {\@nameuse{listof#1}} 223 | \caption@ForEachType{\bicaption@declarelist{#1}} 224 | \endinput 225 | %% 226 | %% End of file `bicaption.sty'. 227 | -------------------------------------------------------------------------------- /caption2.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `caption2.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% caption2.dtx (with options: `package') 8 | %% 9 | %% Copyright (C) 1994-2012 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) 10 | %% 11 | %% -------------------------------------------------------------------------- 12 | %% 13 | %% This work may be distributed and/or modified under the 14 | %% conditions of the LaTeX Project Public License, either version 1.3 15 | %% of this license or (at your option) any later version. 16 | %% The latest version of this license is in 17 | %% http://www.latex-project.org/lppl.txt 18 | %% and version 1.3 or later is part of all distributions of LaTeX 19 | %% version 2003/12/01 or later. 20 | %% 21 | %% This work has the LPPL maintenance status "maintained". 22 | %% 23 | %% This Current Maintainer of this work is Axel Sommerfeldt. 24 | %% 25 | %% This work consists of the files caption.ins, caption.dtx, caption2.dtx, 26 | %% caption3.dtx, bicaption.dtx, ltcaption.dtx, subcaption.dtx, and newfloat.dtx, 27 | %% the derived files caption.sty, caption2.sty, caption3.sty, 28 | %% bicaption.sty, ltcaption.sty, subcaption.sty, and newfloat.sty, 29 | %% and the user manuals caption-deu.tex, caption-eng.tex, and caption-rus.tex. 30 | %% 31 | \NeedsTeXFormat{LaTeX2e}[1994/12/01] 32 | \ProvidesPackage{caption2}[2011/08/12 v2.2d Customising captions (AR)] 33 | \PackageWarning{caption2}{% 34 | ****************************************************\MessageBreak 35 | THIS PACKAGE IS OBSOLETE:\MessageBreak 36 | This package attempts to provide an `caption2'\MessageBreak 37 | package v2.0/2.1 author environment so that OLD\MessageBreak 38 | documents can be successfully processed. It should\MessageBreak 39 | NOT be used for NEW documents! New documents should\MessageBreak 40 | use the regular `caption' package v3.x instead.\MessageBreak 41 | ****************************************************\@gobbletwo}% 42 | \RequirePackage{caption3}[2007/09/01] % needs v3.1 or newer 43 | \@ifpackageloaded{caption}{% 44 | \PackageError{caption2}{% 45 | You can't use both, the (current) caption *and*\MessageBreak 46 | the (obsolete) caption2 package}\caption@eh 47 | \endinput 48 | }{} 49 | \newcommand*\captionlabeldelim{} 50 | \newcommand*\captionlabelsep{} 51 | \newcommand*\ifcaptionwidth{\ifdim\captionwidth>\z@} 52 | \let\captionindent\caption@indent 53 | \def\ifcaptionlabel{% 54 | \ifcaption@star 55 | \@tempswafalse 56 | \else 57 | \@tempswatrue 58 | \fi 59 | \if@tempswa} 60 | \def\captionlabeltrue{\caption@starfalse} 61 | \def\captionlabelfalse{\caption@startrue} 62 | \def\ifonelinecaptions{% 63 | \caption@ifslc{\@tempswatrue}{\@tempswafalse}% 64 | \if@tempswa} 65 | \def\onelinecaptionstrue{\caption@setbool{slc}{1}} 66 | \def\onelinecaptionsfalse{\caption@setbool{slc}{0}} 67 | \newif\ifignoreLTcapwidth 68 | \newcommand*\normalcaptionparams{% 69 | \let\captionsize\@empty 70 | \renewcommand*\captionfont{\captionsize}% 71 | \let\captionlabelfont\@empty 72 | \renewcommand*\captionlabeldelim{:}% 73 | \renewcommand*\captionlabelsep{\space}% 74 | \setcaptionmargin\z@ 75 | \setlength\captionindent\z@ 76 | \onelinecaptionstrue} 77 | \newcommand*\defcaptionstyle[1]{% 78 | \@namedef{caption@@#1}} 79 | \newcommand*\newcaptionstyle[1]{% 80 | \expandafter\ifx\csname caption@@#1\endcsname\relax 81 | \expandafter\defcaptionstyle 82 | \else 83 | \PackageError{caption2}{Caption style `#1' already defined}{\caption@eh}% 84 | \expandafter\@gobbletwo 85 | \fi 86 | {#1}} 87 | \newcommand*\renewcaptionstyle[1]{% 88 | \expandafter\ifx\csname caption@@#1\endcsname\relax 89 | \PackageError{caption2}{Caption style `#1' undefined}{\caption@eh}% 90 | \expandafter\@gobbletwo 91 | \else 92 | \expandafter\defcaptionstyle 93 | \fi 94 | {#1}} 95 | \newcommand*\dummycaptionstyle[2]{% 96 | \defcaptionstyle{#1}{% 97 | \expandafter\ifx\csname caption@@\caption@style\expandafter\endcsname% 98 | \csname caption@@#1\endcsname 99 | \PackageError{caption2}{You can't use the caption style `#1' directy}{% 100 | The caption style `#1' is only a dummy and does not really exists.% 101 | \MessageBreak You have to redefine it (with \protect\renewcaptionstyle) 102 | before you can select\MessageBreak it with \protect\captionstyle. 103 | \space\caption@eh}% 104 | \else 105 | #2\usecaptionstyle\caption@style 106 | \fi}} 107 | \newcommand*\captionstyle[1]{% 108 | \expandafter\ifx\csname caption@@#1\endcsname\relax 109 | \PackageError{caption2}{Undefined caption style `#1'}{\caption@eh}% 110 | \else 111 | \def\caption@style{#1}% 112 | \fi} 113 | \newcaptionstyle{normal}{\caption@make{normal}} 114 | \newcaptionstyle{center}{\caption@make{center}} 115 | \newcaptionstyle{centerlast}{\caption@make{centerlast}} 116 | \newcaptionstyle{flushleft}{\caption@make{flushleft}} 117 | \newcaptionstyle{flushright}{\caption@make{flushright}} 118 | \newcaptionstyle{hang}{\caption@make{hang}} 119 | \newcaptionstyle{hang+center}{\caption@make{hang@center}} 120 | \newcaptionstyle{hang+centerlast}{\caption@make{hang@centerlast}} 121 | \newcaptionstyle{hang+flushleft}{\caption@make{hang@flushleft}} 122 | \newcaptionstyle{indent}{\caption@make{indent}} 123 | \newcommand*\caption@makecaption[1]{% 124 | \usecaptionmargin 125 | \ifcaptionlabel 126 | \def\caption@label{% 127 | {\captionlabelfont\captionlabel\captionlabeldelim}\captionlabelsep}% 128 | \else 129 | \let\caption@label\@empty 130 | \fi 131 | \captionfont 132 | \onelinecaption 133 | {\caption@label\captiontext}% 134 | {\parbox[b]\captionlinewidth{\strut\@nameuse{caption@@@#1}\par}\par}} 135 | \newcommand*\caption@@@normal{% 136 | \caption@label\captiontext} 137 | \newcommand*\caption@@@center{% 138 | \centering\caption@label\captiontext}% 139 | \newcommand*\caption@@@centerlast{% 140 | \centerlast\caption@label\captiontext} 141 | \newcommand*\caption@@@flushleft{% 142 | \raggedright\caption@label\captiontext}% 143 | \newcommand*\caption@@@flushright{% 144 | \raggedleft\caption@label\captiontext}% 145 | \newcommand*\caption@@@hang{% 146 | \sbox\@tempboxa{\caption@label}% 147 | \hangindent\wd\@tempboxa\noindent 148 | \usebox\@tempboxa\caption@hangplus\captiontext} 149 | \newcommand*\caption@hangplus{} 150 | \newcommand*\caption@@@hang@center{% 151 | \let\caption@hangplus\centering\caption@@@hang} 152 | \newcommand*\caption@@@hang@centerlast{% 153 | \let\caption@hangplus\centerlast\caption@@@hang} 154 | \newcommand*\caption@@@hang@flushleft{% 155 | \let\caption@hangplus\raggedright\caption@@@hang} 156 | \newcommand*\caption@@@indent{% 157 | \hangindent\captionindent\noindent 158 | \caption@label\captiontext} 159 | \DeclareOption{normal}{\captionstyle{normal}} 160 | \DeclareOption{center}{\captionstyle{center}} 161 | \DeclareOption{centerlast}{\captionstyle{centerlast}} 162 | \DeclareOption{flushleft}{\captionstyle{flushleft}} 163 | \DeclareOption{flushright}{\captionstyle{flushright}} 164 | \DeclareOption{anne}{\ExecuteOptions{centerlast}} 165 | \DeclareOption{hang}{\captionstyle{hang}} 166 | \DeclareOption{hang+center}{\captionstyle{hang+center}} 167 | \DeclareOption{hang+centerlast}{\captionstyle{hang+centerlast}} 168 | \DeclareOption{hang+flushleft}{\captionstyle{hang+flushleft}} 169 | \DeclareOption{isu}{\ExecuteOptions{hang}} 170 | \DeclareOption{indent}{\captionstyle{indent}} 171 | \DeclareOption{scriptsize}{\g@addto@macro\captionsize\scriptsize} 172 | \DeclareOption{footnotesize}{\g@addto@macro\captionsize\footnotesize} 173 | \DeclareOption{small}{\g@addto@macro\captionsize\small} 174 | \DeclareOption{normalsize}{\g@addto@macro\captionsize\normalsize} 175 | \DeclareOption{large}{\g@addto@macro\captionsize\large} 176 | \DeclareOption{Large}{\g@addto@macro\captionsize\Large} 177 | \DeclareOption{up}{\g@addto@macro\captionlabelfont\upshape} 178 | \DeclareOption{it}{\g@addto@macro\captionlabelfont\itshape} 179 | \DeclareOption{sl}{\g@addto@macro\captionlabelfont\slshape} 180 | \DeclareOption{sc}{\g@addto@macro\captionlabelfont\scshape} 181 | \DeclareOption{md}{\g@addto@macro\captionlabelfont\mdseries} 182 | \DeclareOption{bf}{\g@addto@macro\captionlabelfont\bfseries} 183 | \DeclareOption{rm}{\g@addto@macro\captionlabelfont\rmfamily} 184 | \DeclareOption{sf}{\g@addto@macro\captionlabelfont\sffamily} 185 | \DeclareOption{tt}{\g@addto@macro\captionlabelfont\ttfamily} 186 | \DeclareOption{oneline}{\onelinecaptionstrue} 187 | \DeclareOption{nooneline}{\onelinecaptionsfalse} 188 | \newcommand*\caption@setpackage[1]{\@namedef{caption@pkt@#1}} 189 | \DeclareOption{float}{% 190 | \caption@twozerofalse\caption@setpackage{float}{1}} 191 | \DeclareOption{longtable}{% 192 | \caption@twozerofalse\caption@setpackage{longtable}{1}} 193 | \DeclareOption{subfigure}{% 194 | \caption@twozerofalse\caption@setpackage{subfigure}{1}} 195 | \DeclareOption{none}{\caption@twozerofalse 196 | \caption@setpackage{float}{0}\caption@setpackage{longtable}{0}% 197 | \caption@setpackage{subfigure}{0}} 198 | \DeclareOption{all}{\ExecuteOptions{float,longtable,subfigure}} 199 | \newif\ifcaption@ruled 200 | \DeclareOption{ruled}{\caption@ruledtrue} 201 | \DeclareOption{boxed}{} 202 | \DeclareOption{ignoreLTcapwidth}{\ignoreLTcapwidthtrue} 203 | \DeclareOption{debug}{\captionsetup{debug}} 204 | \newif\ifcaption@twozero 205 | \normalcaptionparams 206 | \ExecuteOptions{none,normal} 207 | \caption@twozerotrue 208 | \ProcessOptions* 209 | \ifcaption@twozero 210 | \PackageInfo{caption2}{Running in caption2 v2.0 compatibility mode} 211 | \fi 212 | \def\captionof{\@ifstar{\caption@of{\caption*}}{\caption@of\caption}} 213 | \newcommand*\caption@of[2]{\def\@captype{#2}#1} 214 | \caption@ifundefined\abovecaptionskip{% 215 | \newlength\abovecaptionskip\setlength\abovecaptionskip{10\p@}}{} 216 | \caption@ifundefined\belowcaptionskip{% 217 | \newlength\belowcaptionskip\setlength\belowcaptionskip{0\p@}}{} 218 | \newdimen\captionlinewidth 219 | \newdimen\realcaptionwidth 220 | \newcommand*\usecaptionmargin{% 221 | \ifcaptionwidth 222 | \leftskip\captionlinewidth 223 | \advance\leftskip by -\captionwidth 224 | \divide\leftskip by 2 225 | \rightskip\leftskip 226 | \captionlinewidth\captionwidth 227 | \else 228 | \leftskip\captionmargin 229 | \rightskip\captionmargin 230 | \advance\captionlinewidth by -2\captionmargin 231 | \fi 232 | \realcaptionwidth\captionlinewidth} 233 | \newcommand\onelinecaption[1]{% 234 | \let\next\@firstofone 235 | \ifonelinecaptions 236 | \sbox\@tempboxa{#1}% 237 | \ifdim\wd\@tempboxa >\captionlinewidth 238 | \else 239 | \def\next{{\centering\usebox\@tempboxa\par}\@gobble}% 240 | \fi 241 | \fi\next} 242 | \newcommand*\usecaptionstyle[1]{% 243 | \caption@ifundefined\captiontext{% 244 | \PackageError{caption2}{You can't use \protect#1 245 | in normal text}{The usage of \protect#1 is only 246 | allowed inside code declared with\MessageBreak \protect\defcaptionstyle, 247 | \protect\newcaptionstyle \space or \protect\renewcaptionstyle. 248 | \space\caption@eh} 249 | }{% 250 | \@ifundefined{caption@@#1}% 251 | {\PackageError{caption2}{Caption style `#1' undefined}{\caption@eh}}% 252 | {\let\caption@make\caption@makecaption 253 | \@nameuse{caption@@#1}}% 254 | }} 255 | \renewcommand\@makecaption[2]{% 256 | \vskip\abovecaptionskip 257 | \captionlinewidth\hsize 258 | \realcaptionwidth\hsize 259 | \def\captionlabel{#1}% 260 | \def\captiontext{#2}% 261 | \usecaptionstyle\caption@style 262 | \vskip\belowcaptionskip} 263 | \newcommand*\caption@ifpackage[3]{% 264 | \if1\@nameuse{caption@pkt@#1}% 265 | \@ifundefined{#2}% 266 | {\let\next\AtBeginDocument}% 267 | {\let\next\@firstofone}% 268 | \else\ifcaption@twozero 269 | \@ifundefined{#2}% 270 | {#3\let\next\@gobble}% 271 | {\let\next\@firstofone}% 272 | \else 273 | #3\let\next\@gobble 274 | \fi\fi 275 | \expandafter\let\csname caption@pkt@#1\endcsname\undefined 276 | \caption@ifdebug{% 277 | \ifx\next\@gobble\PackageInfo{caption2}{#1 => gobble}% 278 | \else\ifx\next\@firstofone\PackageInfo{caption2}{#1 => firstofone}% 279 | \else\ifx\next\AtBeginDocument\PackageInfo{caption2}{#1 => AtBeginDocument}% 280 | \fi\fi\fi}{}% 281 | \next} 282 | \caption@ifpackage{float}{floatc@plain}{}{% 283 | \ifx\floatc@plain\relax 284 | \PackageWarning{caption2}{% 285 | Option `float' was set but there is no float package loaded} 286 | \else 287 | \PackageInfo{caption2}{float package v1.2 (or newer) detected} 288 | \newcommand\caption@floatc[3]{% 289 | \ifx\captionlabelfont\@empty 290 | \let\captionlabelfont\@fs@cfont 291 | \fi 292 | \captionlinewidth\hsize 293 | \realcaptionwidth\hsize 294 | \def\captionlabel{#2}% 295 | \def\captiontext{#3}% 296 | \usecaptionstyle{#1}} 297 | \renewcommand*\floatc@plain{\caption@floatc{\caption@style}} 298 | \ifcaption@ruled 299 | \dummycaptionstyle{ruled}{\onelinecaptionsfalse\setcaptionmargin{\z@}}% 300 | \else 301 | \newcaptionstyle{ruled}{% 302 | \ifcaptionlabel 303 | {\@fs@cfont\captionlabel}\space% 304 | \fi\captiontext\par}% 305 | \fi 306 | \renewcommand*\floatc@ruled{\caption@floatc{ruled}} 307 | \renewcommand*\caption@of[2]{\def\@captype{#2}% 308 | \@ifundefined{fst@#2}{}{% 309 | \@nameuse{fst@#2}% 310 | \caption@ifundefined\@float@setevery{}{\@float@setevery{#2}}% 311 | \let\caption@fs@capt\@fs@capt 312 | \let\@fs@capt\caption@of@float}% 313 | #1} 314 | \newcommand\caption@of@float[2]{\egroup 315 | \vskip\abovecaptionskip 316 | \normalsize\caption@fs@capt{#1}{#2}% 317 | \vskip\belowcaptionskip 318 | \bgroup}% 319 | \fi} 320 | \caption@ifpackage{longtable}{LT@makecaption}{}{% 321 | \ifx\LT@makecaption\relax 322 | \PackageWarning{caption2}{% 323 | Option `longtable' was set but there is no longtable package loaded} 324 | \else 325 | \PackageInfo{caption2}{longtable package v3.15 (or newer) detected} 326 | \dummycaptionstyle{longtable}{} 327 | \renewcommand\LT@makecaption[3]{% 328 | \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\hsize{% 329 | \ifignoreLTcapwidth 330 | \else 331 | \setcaptionwidth\LTcapwidth 332 | \fi 333 | \captionlinewidth\hsize 334 | \realcaptionwidth\hsize 335 | \captionlabelfalse#1\captionlabeltrue 336 | \def\captionlabel{#2}% 337 | \def\captiontext{#3}% 338 | \usecaptionstyle{longtable}% 339 | \endgraf\vskip\baselineskip}% 340 | \hss}}} 341 | \fi} 342 | \newcommand*\setsubcapstyle{% 343 | \caption@ifundefined\subcapraggedrightfalse{% 344 | \newif\ifsubcapraggedright}{}% 345 | \ifsubcaphang 346 | \ifsubcapcenter 347 | \subcapstyle{hang+center}% 348 | \else\ifsubcapcenterlast 349 | \subcapstyle{hang+centerlast}% 350 | \else\ifsubcapraggedright 351 | \subcapstyle{hang+flushleft}% 352 | \else 353 | \subcapstyle{hang}% 354 | \fi\fi\fi 355 | \else\ifsubcapcenter 356 | \subcapstyle{center}% 357 | \else\ifsubcapcenterlast 358 | \subcapstyle{centerlast}% 359 | \else\ifsubcapraggedright 360 | \subcapstyle{flushleft}% 361 | \else 362 | \subcapstyle{normal}% 363 | \fi\fi\fi\fi} 364 | \newcommand\caption@makesubcaption[2]{% 365 | \renewcommand*\captionfont{\subcapsize\subcapfont}% 366 | \renewcommand*\captionlabelfont{\normalfont\subcapsize\subcaplabelfont}% 367 | \let\captionlabeldelim\subcaplabeldelim 368 | \let\captionlabelsep\subcaplabelsep 369 | \ifsubfigcapwidth 370 | \setcaptionwidth\subfigcapwidth 371 | \else 372 | \setcaptionmargin\subfigcapmargin 373 | \fi 374 | \setlength\captionmargin\subfigcapmargin 375 | \setlength\captionwidth\subfigcapwidth 376 | \captionindent\subcapindent 377 | \ifsubcapnooneline 378 | \onelinecaptionsfalse 379 | \else 380 | \onelinecaptionstrue 381 | \fi 382 | \hbox to\@tempdima{% 383 | \caption@subfig@hss\parbox[t]\@tempdima{% 384 | \captionlinewidth\@tempdima 385 | \realcaptionwidth\@tempdima 386 | \captionlabeltrue 387 | \def\captionlabel{#1}% 388 | \def\captiontext{\ignorespaces #2}% 389 | \usecaptionstyle\caption@substyle}% 390 | \caption@subfig@hss}} 391 | \caption@ifpackage{subfigure}{@makesubfigurecaption}{% 392 | \let\setsubcapstyle\undefined 393 | \let\caption@makesubcaption\undefined}{% 394 | \ifx\@makesubfigurecaption\relax 395 | \PackageWarning{caption2}{% 396 | Option `subfigure' was set but there is no subfigure package loaded} 397 | \let\setsubcapstyle\undefined 398 | \let\caption@makesubcaption\undefined 399 | \else 400 | \ifx\subcapfont\undefined 401 | \PackageInfo{caption2}{subfigure package v2.0 detected} 402 | \let\subcapfont\@empty 403 | \newcommand*\subfigcapwidth{\z@} 404 | \newcommand*\setsubcapmargin{% 405 | \subfigcapwidthfalse 406 | \renewcommand*\subfigcapmargin} 407 | \newcommand*\setsubcapwidth{% 408 | \subfigcapwidthtrue 409 | \renewcommand*\subfigcapwidth} 410 | \newcommand*\subcaplabelsep{\space} 411 | \let\caption@subfig@hss\hfil 412 | \else 413 | \PackageInfo{caption2}{subfigure package v2.1 (or newer) detected} 414 | \newdimen\subfigcapwidth 415 | \newcommand*\setsubcapmargin{% 416 | \subfigcapwidthfalse 417 | \setlength\subfigcapmargin} 418 | \newcommand*\setsubcapwidth{% 419 | \subfigcapwidthtrue 420 | \setlength\subfigcapwidth} 421 | \newcommand*\subcaplabelsep{\hskip\subfiglabelskip} 422 | \let\caption@subfig@hss\hss 423 | \fi 424 | \newif\ifsubfigcapwidth 425 | \newdimen\subcapindent 426 | \newcommand*\subcaplabeldelim{} 427 | \newcommand*\subcapstyle[1]{% 428 | \expandafter\ifx\csname caption@@#1\endcsname\relax 429 | \PackageError{caption2}{Undefined caption style `#1'}{\caption@eh}% 430 | \else 431 | \def\caption@substyle{#1}% 432 | \fi} 433 | \setsubcapstyle 434 | \renewcommand*\@thesubfigure{\thesubfigure} 435 | \renewcommand*\@thesubtable{\thesubtable} 436 | \let\@makesubfigurecaption\caption@makesubcaption 437 | \let\@makesubtablecaption\caption@makesubcaption 438 | \fi} 439 | \let\caption@ifpackage\undefined 440 | \endinput 441 | %% 442 | %% End of file `caption2.sty'. 443 | -------------------------------------------------------------------------------- /setspace.sty: -------------------------------------------------------------------------------- 1 | % You may freely use, modify, and/or distribute this file, without limitation. 2 | %%% ====================================================================== 3 | %%% @LaTeX-style-file{ 4 | %%% filename = "setspace.sty", 5 | %%% version = "6.7", 6 | %%% date = "Fri 1 December 2000", 7 | %%% time = "17:49 UT+11", 8 | %%% author = "Geoffrey Tobin", 9 | %%% address = "Department of Electronic Engineering 10 | %%% Faculty of Science and Technology 11 | %%% La Trobe University 12 | %%% Bundoora VIC 3086 13 | %%% Australia", 14 | %%% email = "G.Tobin@latrobe.edu.au (Internet)", 15 | %%% telephone = "(+ 613) 9479-3736", 16 | %%% FAX = "(+ 613) 9479-3025", 17 | %%% supported = "yes", 18 | %%% archived = "CTAN", 19 | %%% keywords = "LaTeX package, line spacing", 20 | %%% codetable = "ISO/ASCII", 21 | %%% checksum = "11793 546 2608 21972", 22 | %%% docstring = "setspace.sty is a LaTeX (2e) package. 23 | %%% Comments and bug reports welcome! 24 | %%% 25 | %%% This includes GDG's modification to Erica Harris' 26 | %%% setspace.sty. The main aspects of this 27 | %%% modification deal with the definitions of 28 | %%% \singlespacing \onehalfspacing, and 29 | %%% \doublespacing, (these are near the beginning of 30 | %%% the file). Primarily, these deal with adding 31 | %%% fontsize changes to guarantee that the new 32 | %%% baseline is properly defined and placed into 33 | %%% action. The extra \vskip in the definition of 34 | %%% \singlespacing seems to make for a cleaner 35 | %%% transition from multiple spacing back to single 36 | %%% spacing. These did not appear warrranted for 37 | %%% other size changes. 38 | %%% 39 | %%% Modified by GDG on November 1, 1992, to allow 40 | %%% for use of New Font Selection Scheme. 41 | %%% 42 | %%% Modified by GDG on June 4, 1993, to correct 43 | %%% for spacing tokens in definition of \@setsize 44 | %%% Thanks to Kaja P. Christiansen 45 | %%% for the fix!! 46 | %%% 47 | %%% Modified by GDG on May 24, 1994, to change toggle 48 | %%% definition from \selectfont to \@newbaseline. 49 | %%% 50 | %%% Modified by GDG on May 25, 1994, to add 51 | %%% definition of \everydisplay -- this part of 52 | %%% the code was apparently written by Geoffrey 53 | %%% Tobin on Thu 23 Jan 1992 and was provided by 54 | %%% stanton@haas.berkeley.edu (Richard Stanton). 55 | %%% This should help with some of the awkward math 56 | %%% placements in changing spacings. 57 | %%% 58 | %%% Modified by GT on 23 Jan 1996, to correct 59 | %%% \everymath bug, first reported by Mario 60 | %%% Wolczko on 9 June 1992. 61 | %%% 62 | %%% Modified by GT on 23 Jan 1996, to correct 63 | %%% usage of comment characters in macro 64 | %%% definitions. 65 | %%% 66 | %%% Modified by GT on 23 Jan 1996, to update 67 | %%% (adjusted) \@xfloat definition for LaTeX2e. 68 | %%% Bug report was courtesy of Kay Nettle. 69 | %%% 70 | %%% Modified by GT on 24 Jan 1996, to update 71 | %%% (adjusted) \@footnotetext definition for 72 | %%% LaTeX2e, and to add an adjusted LaTeX2e 73 | %%% \@mpfootnotext definition for minipages. 74 | %%% Bug report was courtesy Kay Nettle. 75 | %%% 76 | %%% Changed by GT on 6 Feb 1996, into a LaTeX2e 77 | %%% package. 78 | %%% 79 | %%% Made more package-like by GT on 14 Feb 1996, 80 | %%% by adding standard messages. 81 | %%% 82 | %%% GT replaced \@normalsize by \normalsize on 28 83 | %%% Sep 1996. This change was successively 84 | %%% advised by: 85 | %%% 86 | %%% Rowland J.~Bartlett 87 | %%% 88 | %%% on Tue 6 Aug 96, 89 | %%% 90 | %%% Ted Stern 91 | %%% 92 | %%% on Wed 7 Aug 96, 93 | %%% 94 | %%% Michal Jaegermann 95 | %%% 96 | %%% on Fri 27 Sep 96. 97 | %%% 98 | %%% GT: Sat 28 Sep 1996: Added call to 99 | %%% \setspace@size in \setstretch, as suggested 100 | %%% by David Hull 101 | %%% on Wed 24 July 1996. 102 | %%% 103 | %%% GT: Sat 28 Sep 1996: Pared \setspace@size 104 | %%% mercilessly down to \@currsize, following 105 | %%% advice given on Fri 27 Sep 1996 by Michal 106 | %%% Jaegermann . 107 | %%% Retained this macro for flexibility. 108 | %%% 109 | %%% Code rearranged by GT, Sat 28 Sep 1996, to give 110 | %%% greater prominence to \setstretch. 111 | %%% 112 | %%% Also, GT changed (Sat 28 Sep 1996) many 113 | %%% occurrences of \def to \newcommand, 114 | %%% \renewcommand, or \newenvironment, 115 | %%% as seemed appropriate. 116 | %%% 117 | %%% GT, Tue 10 Dec 1996: Following a suggestion 118 | %%% by Ted Stern, the `single' spacing is now 119 | %%% settable by the user. This is for slightly 120 | %%% large fonts such as Lucida Bright. 121 | %%% 122 | %%% GT, Wed 11 Dec 1996: For simplicity and 123 | %%% maintainability, call \onehalfspacing in 124 | %%% the onehalfspace environment, and 125 | %%% \doublespacing in the doublespace 126 | %%% environment. 127 | %%% 128 | %%% GT, Wed 11 Dec 1996: Also deleted 129 | %%% \setspace@size from \setstretch, 130 | %%% as \@currsize suffices. 131 | %%% 132 | %%% Modified by Brett Presnell (BP) 133 | %%% on 21 Mar 1998 134 | %%% to add nodisplayskipstretch option, which 135 | %%% turns off the stretching of the space 136 | %%% before and after displays, which is often 137 | %%% excessive, particularly with doublespaced 138 | %%% documents. Also added the 139 | %%% setdisplayskipstretch command, which allows 140 | %%% the user to choose by how much to stretch 141 | %%% the space before and after displays 142 | %%% independently from the setting of 143 | %%% baselinestretch. This works regardless of 144 | %%% whether the nodisplayskipstretch option is 145 | %%% in effect. 146 | %%% 147 | %%% GT, Wed 15 Apr 1998: Added the singlespace* 148 | %%% environment requested by 149 | %%% Mark Olesen 150 | %%% on Sat 24 May 1997 and Wed 18 June 1997. 151 | %%% This is reported to give improved vertical 152 | %%% spacing around itemize and quote environments. 153 | %%% 154 | %%% GT, Wed 15 Apr 1998: David Hull pointed out on 155 | %%% Fri 12 Dec 1997 that the \belowdisplayskip line 156 | %%% in the \everydisplay was mistyped. Now fixed. 157 | %%% 158 | %%% GT, Thu 26 Nov 1998: Finally got round to 159 | %%% fixing the absence of \begingroup from 160 | %%% onehalfspace and doublespace environments. 161 | %%% Thanks to: Bernd Schandl, Ron Smith, 162 | %%% Himanshu Gohel, and Kevin Ruland, for bringing 163 | %%% it to my long overdue attention. 164 | %%% 165 | %%% GT, Tue 27 July 1999: On Saturday 24 July 166 | %%% 1999, Alexander L. Wolf 167 | %%% informed me that the \doublespace and 168 | %%% \onehalfspace _macros_ are still at fault. 169 | %%% 170 | %%% GT, Fri 3 March 2000: Today Stefano 171 | %%% Lacaprara of Italy brought my attention to 172 | %%% the need to extend the commands and macros 173 | %%% to point sizes other than 10, 11 and 12. 174 | %%% Since there's no general formula for the 175 | %%% line stretch values in terms of point size, 176 | %%% and they vary only slightly between 10, 11 177 | %%% and 12 pt, and furthermore the values were 178 | %%% presumably optimised specifically for the 179 | %%% Computer Modern fonts, i've chosen to use 180 | %%% the 10 pt values as the generic defaults. 181 | %%% 182 | %%% GT, Fri 1 December 2000: George Pearson 183 | %%% requested package options for the three 184 | %%% common spacings. 185 | %%% 186 | %%% The checksum field above contains a CRC-16 187 | %%% checksum as the first value, followed by the 188 | %%% equivalent of the standard UNIX wc (word 189 | %%% count) utility output of lines, words, and 190 | %%% characters. This is produced by Robert 191 | %%% Solovay's checksum utility." 192 | %%% } 193 | %%% ====================================================================== 194 | %% FILE: setspace.sty in SYS2.TEX.PUB.ISULATEX.STYLES 195 | %% AUTHOR: Erica M. S. Harris 196 | %% DATE: April 1990 197 | %% MOD: March 1991 198 | %%% 199 | %%% Update to LaTeX (2e) : 6 Feb 1996. 200 | %%% Description: LaTeX Document Package "setspace" 201 | %%% 202 | %%% Usage: 203 | %%% \documentclass[...]{...} 204 | %%% \usepackage{setspace} 205 | %%% 206 | %% Based on the doublespace option created by Stephen Page. 207 | %% 208 | %% This style option provides commands and environments for doing 209 | %% double and one-and-a-half spacing based on pt size. 210 | %% 211 | %% Single spacing is the default. 212 | %% 213 | %% Three commands, \singlespacing, \onehalfspacing, and 214 | %% \doublespacing, are for use in the preamble to set the overall 215 | %% spacing for the document. If a different spacing is required then 216 | %% the \setstretch{baselinestretch} command can be used in the 217 | %% preamble to set the baselinestretch appropriately. The default 218 | %% spacing with this style option is single spacing. 219 | %% 220 | %% Three environments, singlespace, onehalfspace, and doublespace, 221 | %% allow the spacing to be changed within the document. Both the 222 | %% onehalfspace and doublespace environments are intended to increase 223 | %% the spacing, so the onehalfspace environment should not be used in 224 | %% a double spaced document. If an increased spacing different from 225 | %% one-and-a-half or double spacing is required then the spacing 226 | %% environment can be used. The spacing environment takes one 227 | %% argument which is the larger baselinestretch to use, 228 | %% e.g., \begin{spacing}{2.5}. 229 | %% 230 | %% \footins is adjusted the same as \parskip - appears to work. Lose 231 | %% stretch parts but don't consider that to be crucial 232 | %% 233 | %% Removed code for altering spacing before and after displayed 234 | %% equations - just looked too much. 235 | %% 236 | %% MODS: 237 | %% Redefinition of \spacing and \endspacing for consistency with 238 | %% TeX 3.x inserted by George Greenwade. Modification provided by 239 | %% Philip Ross (ROSS@UK.AC.ABDN.BIOMED) and John Byrne via INFO-TeX. 240 | %% 241 | %% PLEASE REPORT ANY BUGS 242 | %% 243 | %% Old Documentation follows: 244 | %% 1. A new environment "singlespace" is provided, within which single 245 | %% spacing will apply. 246 | %% JFL - changed so that it works in regular text and so that 247 | %% vertical space before and after is correctly computed 248 | %% 2. Double spacing is turned off within footnotes and floats (figures 249 | %% and tables). 250 | %% 3. Proper double spacing happens below tabular environments and in 251 | %% other places where LaTeX uses a strut. 252 | %% 4. Slightly more space is inserted before footnotes. 253 | %% 5. JFL - fixes spacing before and after displayed math 254 | %% 255 | %% 256 | %% mods: Jean-Francois Lamy 257 | %% lamy@ai.toronto.edu 258 | %% lamy@utai.uucp 259 | %% 260 | %% POSSIBLE BUGS: 261 | %% . Increasing struts may possibly cause some other obscure part of 262 | %% formatting to fall over. 263 | %% . \begin{singlespace}\begin{quote} produces the wrong spacing before 264 | %% the quote (extra glue is inserted). 265 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 266 | 267 | \NeedsTeXFormat {LaTeX2e}[1994/12/01] 268 | \def \filename {setspace.sty} 269 | \def \filedate {2000/12/01} 270 | \def \fileversion {6.7} 271 | \ProvidesPackage {setspace}[\filedate\space\fileversion\space 272 | Contributed and Supported LaTeX2e package] 273 | \typeout {Package: `setspace' \fileversion\space <\filedate>} 274 | 275 | % BP: add nodisplayskipstretch option and \setdisplayskipstretch command. 276 | 277 | \newcommand{\displayskipstretch}{\baselinestretch} 278 | \newcommand{\setdisplayskipstretch}[1]{\renewcommand{\displayskipstretch}{#1}} 279 | \DeclareOption{nodisplayskipstretch}{\setdisplayskipstretch{1.0}} 280 | 281 | % GT: add George Pearsons' suggested options. 282 | 283 | \DeclareOption{singlespacing}{\AtEndOfPackage{\singlespacing}} 284 | \DeclareOption{onehalfspacing}{\AtEndOfPackage{\onehalfspacing}} 285 | \DeclareOption{doublespacing}{\AtEndOfPackage{\doublespacing}} 286 | 287 | \ProcessOptions 288 | 289 | % GT: Sat 28 Sep 1996: Widely using \newcommand, \renewcommand, and 290 | % \newenvironment, instead of \def. 291 | 292 | % ** Line space commands. 293 | 294 | \newcommand{\setstretch}[1]{% 295 | \def\baselinestretch{#1}% 296 | \@currsize 297 | } 298 | 299 | % GT: Sat 28 Sep 1996: spacing commands and environments modified to 300 | % use \setstretch instead of \baselinestretch. 301 | % 302 | % GT: Sat 28 Sep 1996: No, I don't know understand the line spacing 303 | % algorithms! If someone (LaTeX team) can enlighten me as to the 304 | % general rule, please do! It would be very pleasant if setspace.sty 305 | % were suited for document font sizes other than 10, 11 and 12 pt. 306 | % 307 | % GT: Tue 10 Dec 1996: Instead of fixing singlespacing to exact unity, 308 | % allow user to redefine it (only slightly, please!) from its initial 309 | % value of unity, in the case when a particular font is slightly larger 310 | % or slightly smaller than its point size would indicate. This change 311 | % affects setspace's single spacing commands, and LaTeX's footnote and 312 | % float environments. The one and a half, double, and arbitrary 313 | % spacing commands are unaltered. 314 | 315 | \newcommand{\SetSinglespace}[1]{% 316 | \def\setspace@singlespace{#1}% 317 | } 318 | 319 | % Here's the default single line spacing value. 320 | \SetSinglespace{1} 321 | 322 | \newcommand{\singlespacing}{% 323 | \setstretch {\setspace@singlespace}% normally 1 324 | \vskip \baselineskip % Correction for coming into singlespace 325 | } 326 | 327 | \newcommand{\onehalfspacing}{% 328 | \setstretch{1.25}% default 329 | \ifcase \@ptsize \relax % 10pt 330 | \setstretch {1.25}% 331 | \or % 11pt 332 | \setstretch {1.213}% 333 | \or % 12pt 334 | \setstretch {1.241}% 335 | \fi 336 | } 337 | 338 | \newcommand{\doublespacing}{% 339 | \setstretch {1.667}% default 340 | \ifcase \@ptsize \relax % 10pt 341 | \setstretch {1.667}% 342 | \or % 11pt 343 | \setstretch {1.618}% 344 | \or % 12pt 345 | \setstretch {1.655}% 346 | \fi 347 | } 348 | 349 | % ** Modification of the LaTeX command \@setsize. 350 | 351 | %---Stretch the baseline BEFORE calculating the strut size. This improves 352 | % spacing below tabular environments etc., probably... 353 | % Comments are welcomed. 354 | 355 | % GT: Sun 29 Sep 1996: Question: Is this code anywhere near correct 356 | % since this part of LaTeX (in, eg, latex.ltx) has been greatly changed? 357 | 358 | % GT: Sun 29 Sep 1996: The meanings of the arguments to \@setsize 359 | % appear to be (whatever these may signify) : 360 | % current size; font baselineskip; ignored (!); and font size. 361 | 362 | % GT: Sun 29 Sep 1996: Note that \@setsize (in latest LaTeX, 363 | % \@setfontsize, which is called by \@setsize) seems to be the only 364 | % place in purely modern LaTeX where \@currsize is set, and ltxguide.cls 365 | % seems to be the only file in the LaTeX base distribution that uses it! 366 | 367 | \def\@setsize#1#2#3#4{% 368 | % Modified 1993.04.07--GDG per KPC 369 | \@nomath#1% 370 | \let\@currsize#1% 371 | \baselineskip #2% 372 | \baselineskip \baselinestretch\baselineskip 373 | \parskip \baselinestretch\parskip 374 | \setbox\strutbox \hbox{% 375 | \vrule height.7\baselineskip 376 | depth.3\baselineskip 377 | width\z@}% 378 | \skip\footins \baselinestretch\skip\footins 379 | \normalbaselineskip\baselineskip#3#4} 380 | 381 | % ** Float and footnote adjustments to compensate for a change in the 382 | % ** main text's line spacing. 383 | 384 | %---Increase the space between last line of text and footnote rule. 385 | %\skip\footins 20pt plus4pt minus4pt 386 | 387 | %---Reset baselinestretch within floats and footnotes. 388 | 389 | % GT: Tue 23 Jan 1996: This is where the conflict with the combination 390 | % of the color package and the figure environment used to occur. 391 | 392 | % Floats. 393 | 394 | % GT: Sat 28 Sep 1996: \@xfloat is the only place where \normalsize 395 | % is still used in setspace.sty ! 396 | 397 | \let\latex@xfloat=\@xfloat 398 | \def\@xfloat #1[#2]{% 399 | \latex@xfloat #1[#2]% 400 | \def\baselinestretch{\setspace@singlespace}% 401 | \normalsize 402 | } 403 | 404 | % GT: Wed 24 Jan 1996: This footnote code was copied from LaTeX and 405 | % modified rather naively. It had to be brought up to date, not only 406 | % because of LaTeX's new color ability, but also because ther had 407 | % been major changes to this code in LaTeX at least as far back as 408 | % March 1992. 409 | 410 | % Normal, bottom of the page, footnotes. 411 | % 412 | % GT: Based HEAVILY on original LaTeX (2e) code. A standard hook would 413 | % be MUCH preferred, so that LaTeX's footnote implementation needn't be 414 | % copied each time it changes. 415 | % 416 | % GT: The \protected@edef requires at least the December 1994 LaTeX. 417 | % This is precisely the kind of VERSION DEPENDENCY situation that 418 | % cannot (AFAIK) be avoided, because LaTeX (2e) LACKS appropriate 419 | % standard hooks and/or context markers. 420 | 421 | \long\def\@footnotetext#1{% 422 | \insert\footins{% 423 | % GT: Next line added. Hook desired here! 424 | \def\baselinestretch {\setspace@singlespace}% 425 | \reset@font\footnotesize 426 | \interlinepenalty\interfootnotelinepenalty 427 | \splittopskip\footnotesep 428 | \splitmaxdepth \dp\strutbox \floatingpenalty \@MM 429 | \hsize\columnwidth 430 | \@parboxrestore 431 | \protected@edef\@currentlabel{% 432 | \csname p@footnote\endcsname\@thefnmark 433 | }% 434 | \color@begingroup 435 | \@makefntext{% 436 | \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% 437 | \color@endgroup}} 438 | 439 | % Minipage footnotes. 440 | 441 | \long\def\@mpfootnotetext#1{% 442 | \global\setbox\@mpfootins\vbox{% 443 | \unvbox \@mpfootins 444 | % GT: Next line added. Hook desired here! 445 | \def\baselinestretch {\setspace@singlespace}% 446 | \reset@font\footnotesize 447 | \hsize\columnwidth 448 | \@parboxrestore 449 | \protected@edef\@currentlabel{% 450 | \csname p@mpfootnote\endcsname\@thefnmark}% 451 | \color@begingroup 452 | \@makefntext{% 453 | \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% 454 | \color@endgroup}} 455 | 456 | % ** Line space environments. 457 | 458 | % A single spaced quote (say) is done by surrounding singlespace with quote. 459 | 460 | \newenvironment{singlespace}{% 461 | \vskip \baselineskip 462 | \setstretch {\setspace@singlespace}% 463 | \vskip -\baselineskip 464 | }{% 465 | \par 466 | } 467 | 468 | % GT (c/o Mark Olesen), Wed 15 April 1998. 469 | 470 | \newenvironment{singlespace*}{% 471 | \setstretch {\setspace@singlespace}% 472 | \vskip -\baselineskip 473 | }{% 474 | \vskip -0.5\baselineskip 475 | } 476 | 477 | % spacing, doublespace and onehalfspace all are meant to INCREASE the 478 | % spacing (i.e. calling onehalfspace from within doublespace will not 479 | % produce a graceful transition between spacings) 480 | % 481 | % Next two definitions fixed for consistency with TeX 3.x 482 | 483 | % In order to use \newenvironment, while easily using same code for 484 | % end of each environment, the code that used to be in \endspacing has 485 | % been moved into a new (but internal) macro, \restore@spacing. 486 | 487 | \newcommand{\restore@spacing}{% 488 | \par 489 | \vskip \parskip 490 | \vskip \baselineskip 491 | \endgroup 492 | \vskip -\parskip 493 | \vskip -\baselineskip 494 | } 495 | 496 | \newenvironment{spacing}[1]{% 497 | \par 498 | \begingroup % moved from \endspacing by PGBR 29-1-91 499 | \setstretch {#1}% 500 | }{% 501 | \restore@spacing 502 | } 503 | 504 | % one and a half spacing is 1.5 x pt size 505 | \newenvironment{onehalfspace}{% 506 | \begingroup 507 | \onehalfspacing 508 | }{% 509 | \restore@spacing 510 | } 511 | 512 | % double spacing is 2 x pt size 513 | \newenvironment{doublespace}{% 514 | \begingroup 515 | \doublespacing 516 | }{% 517 | \restore@spacing 518 | } 519 | 520 | % GT: EMSH chose to omit display math part that follows. 521 | % She wrote (see above) that the "altered spacing before and after displayed 522 | % equations ... just looked too much". 523 | % 524 | % Fix up spacing before and after displayed math 525 | % (arraystretch seems to do a fine job for inside LaTeX displayed math, 526 | % since array and eqnarray seem to be affected as expected). 527 | % Changing \baselinestretch and doing a font change also works if done here, 528 | % but then you have to change @setsize to remove the call to @nomath) 529 | % 530 | % GT: The \belowdisplayskip line was mistyped; now fixed, courtesy of 531 | % David Hull. 532 | % 533 | % GT: Brett Parnell has addressed EMSH's concern by replacing 534 | % \baselinestretch by \displayskipstretch in displays, as follows. 535 | 536 | \everydisplay\expandafter{% 537 | \the\everydisplay 538 | \abovedisplayskip \displayskipstretch\abovedisplayskip 539 | \belowdisplayskip \displayskipstretch\belowdisplayskip 540 | \abovedisplayshortskip \displayskipstretch\abovedisplayshortskip 541 | \belowdisplayshortskip \displayskipstretch\belowdisplayshortskip 542 | } 543 | 544 | \endinput 545 | 546 | %%% EOF. 547 | -------------------------------------------------------------------------------- /newfloat.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `newfloat.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% newfloat.dtx (with options: `package') 8 | %% 9 | %% Copyright (C) 1994-2012 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) 10 | %% 11 | %% -------------------------------------------------------------------------- 12 | %% 13 | %% This work may be distributed and/or modified under the 14 | %% conditions of the LaTeX Project Public License, either version 1.3 15 | %% of this license or (at your option) any later version. 16 | %% The latest version of this license is in 17 | %% http://www.latex-project.org/lppl.txt 18 | %% and version 1.3 or later is part of all distributions of LaTeX 19 | %% version 2003/12/01 or later. 20 | %% 21 | %% This work has the LPPL maintenance status "maintained". 22 | %% 23 | %% This Current Maintainer of this work is Axel Sommerfeldt. 24 | %% 25 | %% This work consists of the files caption.ins, caption.dtx, caption2.dtx, 26 | %% caption3.dtx, bicaption.dtx, ltcaption.dtx, subcaption.dtx, and newfloat.dtx, 27 | %% the derived files caption.sty, caption2.sty, caption3.sty, 28 | %% bicaption.sty, ltcaption.sty, subcaption.sty, and newfloat.sty, 29 | %% and the user manuals caption-deu.tex, caption-eng.tex, and caption-rus.tex. 30 | %% 31 | \NeedsTeXFormat{LaTeX2e}[1994/12/01] 32 | \ProvidesPackage{newfloat}[2011/11/16 v1.0a Defining new floating environments (AR)] 33 | \newcommand*\newfloat@Info[1]{% 34 | \PackageInfo{newfloat}{#1}} 35 | \newcommand*\newfloat@Error[1]{% 36 | \PackageError{newfloat}{#1}\newfloat@eh} 37 | \newcommand*\newfloat@eh{% 38 | If you do not understand this error, please take a closer look\MessageBreak 39 | at the documentation of the `newfloat' package.\MessageBreak\@ehc} 40 | \RequirePackage{keyval}[1997/11/10] 41 | \newcommand*\DeclareFloatingEnvironment{% 42 | \@testopt\@DeclareFloatingEnvironment{}} 43 | \@onlypreamble\DeclareFloatingEnvironment 44 | \def\@DeclareFloatingEnvironment[#1]#2{% 45 | \newfloat@Info{New float `#2' with options `#1'}% 46 | \edef\newfloat@Type{\def\noexpand\newfloat@Type{\@car#2\@nil}}% 47 | \uppercase\expandafter{\newfloat@Type}% 48 | \edef\@tempa{% 49 | \noexpand\g@addto@macro\noexpand\newfloat@Type{\@cdr#2\@nil}}% 50 | \@tempa 51 | \newcounter{#2}% 52 | \ifdefined\c@float@type % from float package 53 | \expandafter\edef\csname ftype@#2\endcsname{\the\value{float@type}}% 54 | \addtocounter{float@type}{\value{float@type}}% 55 | \else\ifdefined\c@newflo@tctr % from memoir document class 56 | \expandafter\edef\csname ftype@#2\endcsname{\the\c@newflo@tctr}% 57 | \advance\c@newflo@tctr \c@newflo@tctr 58 | \else 59 | \ifdefined\newfloat@ftype \else 60 | \newcount\newfloat@ftype 61 | \newfloat@ftype=8\relax 62 | \fi 63 | \expandafter\xdef\csname ftype@#2\endcsname{\the\newfloat@ftype}% 64 | \advance\newfloat@ftype\newfloat@ftype 65 | \fi\fi 66 | \newfloat@Info{float type `#2'=\@nameuse{ftype@#2}}% 67 | \@namedef{fnum@#2}{\@nameuse{#2name}\nobreakspace\@nameuse{the#2}}% 68 | \expandafter\newcommand\csname #2name\endcsname{}% 69 | \expandafter\let\csname #2name\endcsname\newfloat@Type 70 | \@namedef{fleg#2}{\@nameuse{#2name}}% legend naming (memoir) 71 | \@namedef{flegtoc#2}##1{}% 72 | \newenvironment{#2}{\@float{#2}}{\end@float}% 73 | \newenvironment{#2*}{\@dblfloat{#2}}{\end@dblfloat}% 74 | \expandafter\newcommand\csname listof#2s\endcsname{\newfloat@listof{#2}}% 75 | \expandafter\newcommand\csname listof#2es\endcsname{\newfloat@listof{#2}}% 76 | \ifdefined\l@figure 77 | \expandafter\let\csname l@#2\endcsname\l@figure 78 | \else 79 | \@namedef{l@#2}{\@dottedtocline{1}{1.5em}{2.3em}}% 80 | \fi 81 | \expandafter\newcommand\csname list#2name\endcsname{}% 82 | \expandafter\xdef\csname list#2name\endcsname{List of \newfloat@Type s}% 83 | \expandafter\let\csname fst@#2\endcsname\@undefined 84 | \newfloat@setplacement{#2}{tbp}% 85 | \newfloat@setfileext{#2}{lo#2}% 86 | \newfloat@setoptions*{#2}{#1}% 87 | \@expandtwoargs\newfloat@announce{#2}{\@nameuse{ext@#2}}% 88 | \@ifnextchar[\newfloat@DFE@setname\relax} 89 | \@onlypreamble\@DeclareFloatingEnvironment 90 | \def\newfloat@DFE@setname[#1]{% 91 | \KV@@newfloat@name{#1}% 92 | \@ifnextchar[\newfloat@DFE@setlistname\relax} 93 | \@onlypreamble\newfloat@DFE@setname 94 | \def\newfloat@DFE@setlistname[#1]{% 95 | \KV@@newfloat@listname{#1}} 96 | \@onlypreamble\newfloat@DFE@setlistname 97 | \newcommand*\newfloat@listof[1]{% 98 | \ifcsname listoftoc\endcsname 99 | \expandafter\listoftoc\expandafter{\@nameuse{ext@#1}}% 100 | \else 101 | \begingroup 102 | \expandafter\let\expandafter\listfigurename\csname list#1name\endcsname 103 | \expandafter\let\expandafter\ext@figure\csname ext@#1\endcsname 104 | \let\newfloat@ORI@starttoc\@starttoc 105 | \renewcommand*\@starttoc[1]{% 106 | \expandafter\newfloat@ORI@starttoc\expandafter{\ext@figure}}% 107 | \listoffigures 108 | \endgroup 109 | \fi} 110 | \newcommand*\newfloat@setoptions{% 111 | \@ifstar 112 | {\newfloat@@setoptions\@firstofone}% 113 | {\newfloat@@setoptions\@gobble}} 114 | \newcommand*\newfloat@@setoptions[3]{% 115 | \let\newfloat@within@value\@undefined 116 | \let\newfloat@chapterlistsgaps@value\@undefined 117 | #1{\KV@@newfloat@within\newfloat@within@default}% set default value for new floats 118 | \def\newfloat@type{#2}% 119 | \setkeys{@newfloat}{#3}% 120 | \ifx\newfloat@within@value\@undefined \else 121 | \newfloat@setoption{within}\newfloat@within@value 122 | \fi 123 | \ifx\newfloat@chapterlistsgaps@value\@undefined \else 124 | \newfloat@setoption{chapterlistsgaps}\newfloat@chapterlistsgaps@value 125 | \fi} 126 | \newcommand*\newfloat@within@default{% 127 | \ifcsname c@chapter\endcsname chapter\else none\fi} 128 | \@onlypreamble\newfloat@within@default 129 | \newcommand*\newfloat@setoption[1]{% 130 | \expandafter\@expandtwoargs\csname newfloat@set#1\endcsname\newfloat@type} 131 | \newcommand*\newfloat@setfileext[2]{% 132 | \@namedef{ext@#1}{#2}} 133 | \define@key{@newfloat}{fileext}{% 134 | \newfloat@setoption{fileext}{#1}} 135 | \newcommand*\newfloat@setlistname[2]{% 136 | \@namedef{list#1name}{#2}} 137 | \define@key{@newfloat}{listname}{% 138 | \newfloat@setoption{listname}{#1}} 139 | \newcommand*\newfloat@setname[2]{% 140 | \newfloat@@setname{#1}{#2}% 141 | \begingroup 142 | \ifcsname languagename\endcsname 143 | \ifcsname captions\languagename\endcsname 144 | \expandafter\g@addto@macro\csname captions\languagename\endcsname 145 | {\newfloat@@setname{#1}{#2}}% 146 | \fi 147 | \fi 148 | \endgroup} 149 | %%\AtBeginDocument{\let\newfloat@setname\newfloat@@setname} 150 | \newcommand*\newfloat@@setname[2]{% 151 | \@namedef{#1name}{#2}} 152 | \define@key{@newfloat}{name}{% 153 | \newfloat@setoption{name}{#1}} 154 | \newcommand*\newfloat@setplacement[2]{% 155 | \@namedef{fps@#1}{#2}} 156 | \define@key{@newfloat}{placement}{% 157 | \newfloat@setoption{placement}{#1}} 158 | \newcommand*\newfloat@setwithin[2]{% 159 | \ifcsname c@chapter\endcsname 160 | \@removefromreset{#1}{chapter}% 161 | \fi 162 | \@removefromreset{#1}{section}% 163 | \edef\@tempa{#2}% 164 | \ifx\@tempa\@empty 165 | \def\@tempa{none}% 166 | \fi 167 | \def\@tempb{none}% 168 | \ifx\@tempa\@tempb 169 | \ifcsname c@chapter\endcsname 170 | \@chapterlistsgap@off{#1}% 171 | \fi 172 | \newfloat@@setwithin{#1}{}{}% 173 | \else 174 | \def\@tempb{chapter}% 175 | \ifx\@tempa\@tempb 176 | \@addtoreset{#1}{chapter}% 177 | \@chapterlistsgap@on{#1}% 178 | \newfloat@@setwithin{#1}{\ifnum\c@chapter>\z@ \thechapter.\fi}{\theHchapter.}% 179 | \else 180 | \def\@tempb{section}% 181 | \ifx\@tempa\@tempb 182 | \@addtoreset{#1}{section}% 183 | \ifcsname c@chapter\endcsname 184 | \@addtoreset{#1}{chapter}% 185 | \@chapterlistsgap@on{#1}% 186 | \newfloat@@setwithin{#1}{\thesection.}{\theHsection.}% 187 | \else 188 | \newfloat@@setwithin{#1}{\ifnum\c@section>\z@ \thesection.\fi}{\theHsection.}% 189 | \fi 190 | \else 191 | \newfloat@Error{Invalid value `#2' for option `within'}% 192 | \fi 193 | \fi 194 | \fi} 195 | \newcommand*\newfloat@@setwithin[3]{% 196 | \global\@namedef{the#1}{#2\arabic{#1}}% 197 | \global\@namedef{theH#1}{#3\arabic{#1}}} 198 | \define@key{@newfloat}{within}{% 199 | \def\newfloat@within@value{#1}} 200 | \newcommand*\newfloat@setwithout[1]{% 201 | \newfloat@setwithin{#1}{none}} 202 | \define@key{@newfloat}{without}[]{% 203 | \def\newfloat@within@value{none}} 204 | \newcommand*\newfloat@setchapterlistsgaps[2]{% 205 | \edef\@tempa{#2}% 206 | \def\@tempb{off}% 207 | \ifx\@tempa\@tempb 208 | \@chapterlistsgap@off{#1}% 209 | \else 210 | \def\@tempb{on}% 211 | \ifx\@tempa\@tempb 212 | \@chapterlistsgap@on{#1}% 213 | \else 214 | \newfloat@Error{Invalid value `#2' for option `chapterlistsgaps'}% 215 | \fi 216 | \fi} 217 | \define@key{@newfloat}{chapterlistsgaps}{% 218 | \def\newfloat@chapterlistsgaps@value{#1}} 219 | \providecommand*\@removefromreset[2]{{% 220 | \expandafter\let\csname c@#1\endcsname\@removefromreset 221 | \def\@elt##1{% 222 | \expandafter\ifx\csname c@##1\endcsname\@removefromreset 223 | \else 224 | \noexpand\@elt{##1}% 225 | \fi}% 226 | \expandafter\xdef\csname cl@#2\endcsname{% 227 | \csname cl@#2\endcsname}}} 228 | \newcommand*\newfloat@announce[2]{% 229 | \@cons\newfloat@list{{#1}}% 230 | \@cons\newfloat@@list{{#1}}% 231 | \@ifundefined{newfloat@ext@#2}{% 232 | \@namedef{newfloat@ext@#2}{#1}% 233 | \ifcsname c@lofdepth\endcsname 234 | \@ifundefined{c@#2depth}{% 235 | \newcounter{#2depth}% 236 | \setcounter{#2depth}{1}% 237 | }{}% 238 | \fi 239 | \ifcsname addtotoclist\endcsname 240 | \addtotoclist[float]{#2}% 241 | \@namedef{listof#2name}{\@nameuse{list#1name}}% 242 | \fi 243 | }{}% 244 | \ifcsname contentsuse\endcsname 245 | \contentsuse{#1}{#2}% 246 | \fi 247 | \newfloat@hook{#1}} 248 | \@onlypreamble\newfloat@announce 249 | \newcommand*\newfloat@@list{} 250 | \newcommand*\SetupFloatingEnvironment[1]{% 251 | \newfloat@addtolist{#1}% 252 | \newfloat@setoptions{#1}} 253 | \newcommand\ForEachFloatingEnvironment{% 254 | \@ifstar 255 | {\@ForEachFloatingEnvironment\@gobble}% 256 | {\@ForEachFloatingEnvironment\@iden}} 257 | \newcommand\@ForEachFloatingEnvironment[2]{% 258 | \def\@elt##1{#2}% 259 | \newfloat@list 260 | \let\@elt\relax 261 | #1{\newfloat@addtohook{#2}}} 262 | \providecommand\newfloat@addtohook[1]{% 263 | \toks@=\expandafter{\newfloat@hook{##1}#1}% 264 | \edef\@tempa{\def\noexpand\newfloat@hook####1{\the\toks@}}% 265 | \@tempa} 266 | \providecommand*\newfloat@hook[1]{} 267 | \newcommand*\newfloat@list{} 268 | \newcommand*\newfloat@addtolist[1]{% 269 | \newfloat@ifinlist{#1}{}{% 270 | \ifcsname ext@#1\endcsname 271 | \@cons\newfloat@list{{#1}}% 272 | \@namedef{newfloat@ext@\@nameuse{ext@#1}}{#1}% 273 | \else 274 | \newfloat@Error{`#1' does not seem to be a floating environment}% 275 | \fi}} 276 | \newcommand*\newfloat@ifinlist[1]{% 277 | \let\next\@secondoftwo 278 | \begingroup 279 | \expandafter\let\csname c@#1\endcsname\newfloat@ifinlist 280 | \def\@elt##1{% 281 | \expandafter\ifx\csname c@##1\endcsname\newfloat@ifinlist 282 | \global\let\next\@firstoftwo 283 | \fi}% 284 | \newfloat@list 285 | \endgroup 286 | \next} 287 | \ifcsname ext@figure\endcsname 288 | \newfloat@addtolist{figure} 289 | \fi 290 | \ifcsname ext@table\endcsname 291 | \newfloat@addtolist{table} 292 | \fi 293 | \ifcsname @chapter\endcsname 294 | \providecommand*\@chapterlistsgap{10\p@}% 295 | \providecommand*\@addchapterlistsgap[2]{% 296 | \@nameuse{@ifchapterlistsgap@#1}{% if switched on 297 | \@@addchapterlistsgap{#1}{#2}}} 298 | \providecommand*\@@addchapterlistsgap[2]{% 299 | \@ifundefined{@addchapterlistsgap@#2}{% only once per extension 300 | \@namedef{@addchapterlistsgap@#2}{}% 301 | \@@@addchapterlistsgap{#2}}{}} 302 | \providecommand*\@@@addchapterlistsgap[1]{% 303 | \ifdim \@chapterlistsgap>\z@ 304 | \addtocontents{#1}{\protect\addvspace{\@chapterlistsgap}}% 305 | \fi} 306 | \providecommand*\@addchapterlistsgaps{% 307 | \def\@elt##1{% 308 | \@expandtwoargs\@addchapterlistsgap{##1}{\@nameuse{ext@##1}}}% 309 | \newfloat@list 310 | \let\@elt\relax} 311 | \providecommand*\@chapterlistsgap@off[1]{% 312 | \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@gobble 313 | \ifcsname unsettoc\endcsname 314 | \@expandtwoargs\unsettoc{\@nameuse{ext@#1}}{chapteratlist}% 315 | \fi} 316 | \providecommand*\@chapterlistsgap@on[1]{% 317 | \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@iden 318 | \ifcsname setuptoc\endcsname 319 | \@expandtwoargs\setuptoc{\@nameuse{ext@#1}}{chapteratlist}% 320 | \fi} 321 | \fi 322 | \define@key{newfloat}{chapterlistsgap}{% 323 | \renewcommand*\@chapterlistsgap{#1}} 324 | \define@key{newfloat}{within}{% 325 | \def\newfloat@within@default{#1}% set new default value 326 | \def\@elt##1{\newfloat@setwithin{##1}{#1}}% 327 | \newfloat@list 328 | \let\@elt\relax} 329 | \define@key{newfloat}{without}[]{% 330 | \KV@newfloat@within{none}} 331 | \def\@elt#1{% 332 | \define@key{newfloat}{#1name}{% 333 | \newfloat@setname{#1}{##1}}% 334 | \define@key{newfloat}{list#1name}{% 335 | \newfloat@setname{list#1}{##1}}% 336 | \define@key{newfloat}{#1within}{% 337 | \newfloat@setwithin{#1}{##1}}% 338 | \define@key{newfloat}{#1without}[]{% 339 | \newfloat@setwithout{#1}}% 340 | }% 341 | \newfloat@list 342 | \let\@elt\relax 343 | \let\@tempc\relax 344 | \@expandtwoargs\setkeys{newfloat}{\@ptionlist{\@currname.\@currext}}% 345 | \AtEndOfPackage{\let\@unprocessedoptions\relax} 346 | \newcommand*\newfloatsetup{\setkeys{newfloat}} 347 | \newcommand\newfloat@replace@chapter[2]{% 348 | \begingroup 349 | \let\if@twocolumn\iffalse 350 | \let\if@mainmatter\iffalse 351 | \let\if@thema\iffalse 352 | \def\@tempa[##1]##2{#1}% 353 | \ifx\@tempa\@chapter 354 | \gdef\@chapter[##1]##2{#2}% 355 | \global\let\newfloat@replace@chapter\@gobbletwo 356 | \else\ifx\@tempa\Hy@org@chapter 357 | \gdef\Hy@org@chapter[##1]##2{#2}% 358 | \global\let\newfloat@replace@chapter\@gobbletwo 359 | \fi\fi 360 | \endgroup} 361 | \ifcsname @chapter\endcsname \else 362 | \let\newfloat@replace@chapter\@gobbletwo 363 | \fi 364 | \newfloat@replace@chapter{% 365 | \ifnum \c@secnumdepth >\m@ne 366 | \refstepcounter{chapter}% 367 | \typeout{\@chapapp\space\thechapter.}% 368 | \addcontentsline{toc}{chapter}% 369 | {\protect\numberline{\thechapter}#1}% 370 | \else 371 | \addcontentsline{toc}{chapter}{#1}% 372 | \fi 373 | \chaptermark{#1}% 374 | \addtocontents{lof}{\protect\addvspace{10\p@}}% 375 | \addtocontents{lot}{\protect\addvspace{10\p@}}% 376 | \if@twocolumn 377 | \@topnewpage[\@makechapterhead{#2}]% 378 | \else 379 | \@makechapterhead{#2}% 380 | \@afterheading 381 | \fi 382 | }{% 383 | \ifnum \c@secnumdepth >\m@ne 384 | \refstepcounter{chapter}% 385 | \typeout{\@chapapp\space\thechapter.}% 386 | \addcontentsline{toc}{chapter}% 387 | {\protect\numberline{\thechapter}#1}% 388 | \else 389 | \addcontentsline{toc}{chapter}{#1}% 390 | \fi 391 | \chaptermark{#1}% 392 | \@addchapterlistsgaps 393 | \if@twocolumn 394 | \@topnewpage[\@makechapterhead{#2}]% 395 | \else 396 | \@makechapterhead{#2}% 397 | \@afterheading 398 | \fi} 399 | \newfloat@replace@chapter{% 400 | \ifnum \c@secnumdepth >\m@ne 401 | \if@mainmatter 402 | \refstepcounter{chapter}% 403 | \typeout{\@chapapp\space\thechapter.}% 404 | \addcontentsline{toc}{chapter}% 405 | {\protect\numberline{\thechapter}#1}% 406 | \else 407 | \addcontentsline{toc}{chapter}{#1}% 408 | \fi 409 | \else 410 | \addcontentsline{toc}{chapter}{#1}% 411 | \fi 412 | \chaptermark{#1}% 413 | \addtocontents{lof}{\protect\addvspace{10\p@}}% 414 | \addtocontents{lot}{\protect\addvspace{10\p@}}% 415 | \if@twocolumn 416 | \@topnewpage[\@makechapterhead{#2}]% 417 | \else 418 | \@makechapterhead{#2}% 419 | \@afterheading 420 | \fi 421 | }{% 422 | \ifnum \c@secnumdepth >\m@ne 423 | \if@mainmatter 424 | \refstepcounter{chapter}% 425 | \typeout{\@chapapp\space\thechapter.}% 426 | \addcontentsline{toc}{chapter}% 427 | {\protect\numberline{\thechapter}#1}% 428 | \else 429 | \addcontentsline{toc}{chapter}{#1}% 430 | \fi 431 | \else 432 | \addcontentsline{toc}{chapter}{#1}% 433 | \fi 434 | \chaptermark{#1}% 435 | \@addchapterlistsgaps 436 | \if@twocolumn 437 | \@topnewpage[\@makechapterhead{#2}]% 438 | \else 439 | \@makechapterhead{#2}% 440 | \@afterheading 441 | \fi} 442 | \newfloat@replace@chapter{% 443 | \refstepcounter{chapter}% 444 | \ifnum\c@secnumdepth<\z@ \let\@secnumber\@empty 445 | \else \let\@secnumber\thechapter \fi 446 | \typeout{\chaptername\space\@secnumber}% 447 | \def\@toclevel{0}% 448 | \ifx\chaptername\appendixname \@tocwriteb\tocappendix{chapter}{#2}% 449 | \else \@tocwriteb\tocchapter{chapter}{#2}\fi 450 | \chaptermark{#1}% 451 | \addtocontents{lof}{\protect\addvspace{10\p@}}% 452 | \addtocontents{lot}{\protect\addvspace{10\p@}}% 453 | \@makechapterhead{#2}\@afterheading 454 | }{% 455 | \refstepcounter{chapter}% 456 | \ifnum\c@secnumdepth<\z@ \let\@secnumber\@empty 457 | \else \let\@secnumber\thechapter \fi 458 | \typeout{\chaptername\space\@secnumber}% 459 | \def\@toclevel{0}% 460 | \ifx\chaptername\appendixname \@tocwriteb\tocappendix{chapter}{#2}% 461 | \else \@tocwriteb\tocchapter{chapter}{#2}\fi 462 | \chaptermark{#1}% 463 | \@addchapterlistsgaps 464 | \@makechapterhead{#2}\@afterheading} 465 | \@ifpackageloaded{tocbasic}{% 466 | \let\newfloat@replace@chapter\@gobbletwo}{} 467 | \ifcsname insertchapterspace\endcsname 468 | \renewcommand*\insertchapterspace{\@addchapterlistsgaps} 469 | \let\newfloat@replace@chapter\@gobbletwo 470 | \fi 471 | \newfloat@replace@chapter{% 472 | \ifnum \c@secnumdepth >\m@ne 473 | \refstepcounter{chapter}% 474 | \typeout{\@chapapp\space\thechapter.}% 475 | \addcontentsline{toc}{chapter}% 476 | {\protect\numberline{\thechapter}\toc@font0 #1}% 477 | \else 478 | \addcontentsline{toc}{chapter}{\toc@font0 #1}% 479 | \fi 480 | \chaptermark{#1}% 481 | \addtocontents{lof}{\protect\addvspace{10\p@}}% 482 | \addtocontents{lot}{\protect\addvspace{10\p@}}% 483 | \if@twocolumn 484 | \@topnewpage[\@makechapterhead{#2}]% 485 | \else 486 | \@makechapterhead{#2}% 487 | \@afterheading 488 | \fi 489 | }{% 490 | \ifnum \c@secnumdepth >\m@ne 491 | \refstepcounter{chapter}% 492 | \typeout{\@chapapp\space\thechapter.}% 493 | \addcontentsline{toc}{chapter}% 494 | {\protect\numberline{\thechapter}\toc@font0 #1}% 495 | \else 496 | \addcontentsline{toc}{chapter}{\toc@font0 #1}% 497 | \fi 498 | \chaptermark{#1}% 499 | \@addchapterlistsgaps 500 | \if@twocolumn 501 | \@topnewpage[\@makechapterhead{#2}]% 502 | \else 503 | \@makechapterhead{#2}% 504 | \@afterheading 505 | \fi} 506 | % boek(3).cls [2004/06/07 v2.1a NTG LaTeX document class] 507 | \newfloat@replace@chapter{% 508 | \ifnum \c@secnumdepth >\m@ne 509 | \if@mainmatter 510 | \refstepcounter{chapter}% 511 | \typeout{\@chapapp\space\thechapter.}% 512 | \addcontentsline{toc}{chapter}% 513 | {\protect\numberline{\thechapter}\toc@font0 #1}% 514 | \else 515 | \addcontentsline{toc}{chapter}{\toc@font0 #1}% 516 | \fi 517 | \else 518 | \addcontentsline{toc}{chapter}{\toc@font0 #1}% 519 | \fi 520 | \chaptermark{#1}% 521 | \addtocontents{lof}{\protect\addvspace{10\p@}}% 522 | \addtocontents{lot}{\protect\addvspace{10\p@}}% 523 | \if@twocolumn 524 | \@topnewpage[\@makechapterhead{#2}]% 525 | \else 526 | \@makechapterhead{#2}% 527 | \@afterheading 528 | \fi 529 | }{% 530 | \ifnum \c@secnumdepth >\m@ne 531 | \if@mainmatter 532 | \refstepcounter{chapter}% 533 | \typeout{\@chapapp\space\thechapter.}% 534 | \addcontentsline{toc}{chapter}% 535 | {\protect\numberline{\thechapter}\toc@font0 #1}% 536 | \else 537 | \addcontentsline{toc}{chapter}{\toc@font0 #1}% 538 | \fi 539 | \else 540 | \addcontentsline{toc}{chapter}{\toc@font0 #1}% 541 | \fi 542 | \chaptermark{#1}% 543 | \@addchapterlistsgaps 544 | \if@twocolumn 545 | \@topnewpage[\@makechapterhead{#2}]% 546 | \else 547 | \@makechapterhead{#2}% 548 | \@afterheading 549 | \fi} 550 | \newfloat@replace@chapter{% 551 | \ifnum \c@secnumdepth >\m@ne 552 | \if@mainmatter 553 | \refstepcounter{chapter}% 554 | \typeout{\chaptername\space\thechapter.} 555 | \if@thema 556 | \ifx\@shortauthor\@empty 557 | \addcontentsline{toc}{chapter}{% 558 | \protect\numberline{\thechapter.}#1}% 559 | \else 560 | \addcontentsline{toc}{chapter}{% 561 | \protect\numberline{\thechapter.}% 562 | \@shortauthor\hfill\mbox{}\vskip\normallineskip #1}% 563 | \fi 564 | \else 565 | \addcontentsline{toc}{chapter}{% 566 | \protect\numberline{\thechapter.}#1}% 567 | \fi 568 | \else 569 | \addcontentsline{toc}{chapter}{#1} 570 | \fi 571 | \else 572 | \addcontentsline{toc}{chapter}{#1} 573 | \fi 574 | \chaptermark{#1} 575 | \addtocontents{lof}{\protect\addvspace{10pt}} 576 | \addtocontents{lot}{\protect\addvspace{10pt}} 577 | \if@twocolumn 578 | \@topnewpage[\@makechapterhead{#2}] 579 | \else 580 | \@makechapterhead{#2} 581 | \@afterheading 582 | \fi 583 | }{% 584 | \ifnum \c@secnumdepth >\m@ne 585 | \if@mainmatter 586 | \refstepcounter{chapter}% 587 | \typeout{\chaptername\space\thechapter.}% 588 | \if@thema 589 | \ifx\@shortauthor\@empty 590 | \addcontentsline{toc}{chapter}{% 591 | \protect\numberline{\thechapter.}#1}% 592 | \else 593 | \addcontentsline{toc}{chapter}{% 594 | \protect\numberline{\thechapter.}% 595 | \@shortauthor\hfill\mbox{}\vskip\normallineskip #1}% 596 | \fi 597 | \else 598 | \addcontentsline{toc}{chapter}{% 599 | \protect\numberline{\thechapter.}#1}% 600 | \fi 601 | \else 602 | \addcontentsline{toc}{chapter}{#1}% 603 | \fi 604 | \else 605 | \addcontentsline{toc}{chapter}{#1}% 606 | \fi 607 | \chaptermark{#1}% 608 | \@addchapterlistsgaps 609 | \if@twocolumn 610 | \@topnewpage[\@makechapterhead{#2}]% 611 | \else 612 | \@makechapterhead{#2}% 613 | \@afterheading 614 | \fi} 615 | \ifx\newfloat@replace@chapter\@gobbletwo \else 616 | \PackageWarningNoLine{newfloat}{% 617 | Unsupported document class, or\MessageBreak 618 | \noexpand\@chapter was already redefined by another package} 619 | \newfloat@Info{\string\@chapter\space=\space\meaning\@chapter} 620 | \fi 621 | \newcommand\newfloat@ForEachNew[2][newfloat@@list]{% 622 | \AtBeginDocument{% 623 | \ifcsname#1\endcsname 624 | \def\@elt##1{#2}% 625 | \newfloat@@list 626 | \let\@elt\relax 627 | \fi}}% 628 | \@onlypreamble\newfloat@ForEachNew 629 | %% \begin{macrocode} 630 | \newfloat@ForEachNew[float@exts]{% 631 | \@nameuse{@ifchapterlistsgap@#1}{% if switched on 632 | \let\float@do=\relax 633 | \edef\@tempa{% 634 | \noexpand\float@exts{\the\float@exts\float@do{\@nameuse{ext@#1}}}}% 635 | \@tempa}} 636 | \newfloat@ForEachNew[FP@floatBegin]{% 637 | \newcounter{FP@#1C}% 638 | \newenvironment{FP#1}{\FP@floatBegin{#1}}{\FP@floatEnd}} 639 | \providecommand*\ext@lstlisting{lol}% 640 | \newfloat@ForEachNew[@rotfloat]{% 641 | \newenvironment{sideways#1}{\@rotfloat{#1}}{\end@rotfloat}% 642 | \newenvironment{sideways#1*}{\@rotdblfloat{#1}}{\end@rotdblfloat}} 643 | \newcommand*\newfloat@For@SC[2]{% 644 | \def#1{b}% = \sidecaptionvpos{#2}{b} (v1.6) 645 | \newenvironment{SC#2}% 646 | {\SC@float[#1]{#2}}{\endSC@float}% 647 | \newenvironment{SC#2*}% 648 | {\SC@dblfloat[#1]{#2}}{\endSC@dblfloat}} 649 | \@onlypreamble\newfloat@For@SC 650 | \newfloat@ForEachNew[SC@float]{% 651 | \expandafter\newfloat@For@SC\csname SC@#1@vpos\endcsname{#1}} 652 | \newfloat@ForEachNew[wrapfloat]{% 653 | \newenvironment{wrap#1}{\wrapfloat{#1}}{\endwrapfloat}} 654 | \endinput 655 | %% 656 | %% End of file `newfloat.sty'. 657 | -------------------------------------------------------------------------------- /plos2009.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `PLoS.bst', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% merlin.mbs (with options: `annote,seq-no,nm-rvx,ed-rev,jnrlst,nmlm,x5,m5,dt-beg,yr-par,xmth,yrp-x,jxper,jttl-rm,vnum-x,pp-last,num-xser,jnm-x,btit-rm,bt-rm,pg-bk,add-pub,pre-pub,doi,in-col,pp,xedn,jabr,xand,eprint,url,url-blk,nfss,') 8 | %% ---------------------------------------- 9 | %% *** This works for PLoS (as of October. 2008) *** 10 | %% **** Updated Oct. 2008 by JZR 11 | %% 12 | %% Copyright 1994-2004 Patrick W Daly 13 | % =============================================================== 14 | % IMPORTANT NOTICE: 15 | % This bibliographic style (bst) file has been generated from one or 16 | % more master bibliographic style (mbs) files, listed above. 17 | % 18 | % This generated file can be redistributed and/or modified under the terms 19 | % of the LaTeX Project Public License Distributed from CTAN 20 | % archives in directory macros/latex/base/lppl.txt; either 21 | % version 1 of the License, or any later version. 22 | % =============================================================== 23 | % Name and version information of the main mbs file: 24 | % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)] 25 | % For use with BibTeX version 0.99a or later 26 | %------------------------------------------------------------------- 27 | % This bibliography style file is intended for texts in ENGLISH 28 | % This is a numerical citation style, and as such is standard LaTeX. 29 | % It requires no extra package to interface to the main text. 30 | % The form of the \bibitem entries is 31 | % \bibitem{key}... 32 | % Usage of \cite is as follows: 33 | % \cite{key} ==>> [#] 34 | % \cite[chap. 2]{key} ==>> [#, chap. 2] 35 | % where # is a number determined by the ordering in the reference list. 36 | % The order in the reference list is that by which the works were originally 37 | % cited in the text, or that in the database. 38 | %--------------------------------------------------------------------- 39 | 40 | ENTRY 41 | { address 42 | annote 43 | archive 44 | author 45 | booktitle 46 | chapter 47 | doi 48 | edition 49 | editor 50 | eid 51 | eprint 52 | howpublished 53 | institution 54 | journal 55 | key 56 | month 57 | note 58 | number 59 | organization 60 | pages 61 | publisher 62 | school 63 | series 64 | title 65 | type 66 | url 67 | volume 68 | year 69 | } 70 | {} 71 | { label } 72 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 73 | FUNCTION {init.state.consts} 74 | { #0 'before.all := 75 | #1 'mid.sentence := 76 | #2 'after.sentence := 77 | #3 'after.block := 78 | } 79 | STRINGS { s t} 80 | FUNCTION {output.nonnull} 81 | { 's := 82 | output.state mid.sentence = 83 | { ", " * write$ } 84 | { output.state after.block = 85 | { add.period$ write$ 86 | newline$ 87 | "\newblock " write$ 88 | } 89 | { output.state before.all = 90 | 'write$ 91 | { add.period$ " " * write$ } 92 | if$ 93 | } 94 | if$ 95 | mid.sentence 'output.state := 96 | } 97 | if$ 98 | s 99 | } 100 | FUNCTION {output} 101 | { duplicate$ empty$ 102 | 'pop$ 103 | 'output.nonnull 104 | if$ 105 | } 106 | FUNCTION {output.check} 107 | { 't := 108 | duplicate$ empty$ 109 | { pop$ "empty " t * " in " * cite$ * warning$ } 110 | 'output.nonnull 111 | if$ 112 | } 113 | FUNCTION {fin.entry} 114 | { add.period$ 115 | write$ 116 | newline$ 117 | annote missing$ 118 | { "\bibAnnoteFile{" cite$ * "}" * write$ newline$ } 119 | { "\bibAnnote{" cite$ * "}{" * annote * "}" * write$ newline$ 120 | } 121 | if$ 122 | } 123 | 124 | FUNCTION {new.block} 125 | { output.state before.all = 126 | 'skip$ 127 | { after.block 'output.state := } 128 | if$ 129 | } 130 | FUNCTION {new.sentence} 131 | { output.state after.block = 132 | 'skip$ 133 | { output.state before.all = 134 | 'skip$ 135 | { after.sentence 'output.state := } 136 | if$ 137 | } 138 | if$ 139 | } 140 | FUNCTION {add.blank} 141 | { " " * before.all 'output.state := 142 | } 143 | 144 | FUNCTION {date.block} 145 | { 146 | add.blank 147 | } 148 | 149 | FUNCTION {not} 150 | { { #0 } 151 | { #1 } 152 | if$ 153 | } 154 | FUNCTION {and} 155 | { 'skip$ 156 | { pop$ #0 } 157 | if$ 158 | } 159 | FUNCTION {or} 160 | { { pop$ #1 } 161 | 'skip$ 162 | if$ 163 | } 164 | STRINGS {z} 165 | FUNCTION {remove.dots} 166 | { 'z := 167 | "" 168 | { z empty$ not } 169 | { z #1 #1 substring$ 170 | z #2 global.max$ substring$ 'z := 171 | duplicate$ "." = 'pop$ 172 | { * } 173 | if$ 174 | } 175 | while$ 176 | } 177 | FUNCTION {new.block.checka} 178 | { empty$ 179 | 'skip$ 180 | 'new.block 181 | if$ 182 | } 183 | FUNCTION {new.block.checkb} 184 | { empty$ 185 | swap$ empty$ 186 | and 187 | 'skip$ 188 | 'new.block 189 | if$ 190 | } 191 | FUNCTION {new.sentence.checka} 192 | { empty$ 193 | 'skip$ 194 | 'new.sentence 195 | if$ 196 | } 197 | FUNCTION {new.sentence.checkb} 198 | { empty$ 199 | swap$ empty$ 200 | and 201 | 'skip$ 202 | 'new.sentence 203 | if$ 204 | } 205 | FUNCTION {field.or.null} 206 | { duplicate$ empty$ 207 | { pop$ "" } 208 | 'skip$ 209 | if$ 210 | } 211 | FUNCTION {emphasize} 212 | { duplicate$ empty$ 213 | { pop$ "" } 214 | { "\emph{" swap$ * "}" * } 215 | if$ 216 | } 217 | FUNCTION {tie.or.space.prefix} 218 | { duplicate$ text.length$ #3 < 219 | { "~" } 220 | { " " } 221 | if$ 222 | swap$ 223 | } 224 | 225 | FUNCTION {capitalize} 226 | { "u" change.case$ "t" change.case$ } 227 | 228 | FUNCTION {space.word} 229 | { " " swap$ * " " * } 230 | % Here are the language-specific definitions for explicit words. 231 | % Each function has a name bbl.xxx where xxx is the English word. 232 | % The language selected here is ENGLISH 233 | FUNCTION {bbl.and} 234 | { "and"} 235 | 236 | FUNCTION {bbl.etal} 237 | { "et~al." } 238 | 239 | FUNCTION {bbl.editors} 240 | { "editors" } 241 | 242 | FUNCTION {bbl.editor} 243 | { "editor" } 244 | 245 | FUNCTION {bbl.edby} 246 | { "edited by" } 247 | 248 | FUNCTION {bbl.edition} 249 | { "edition" } 250 | 251 | FUNCTION {bbl.volume} 252 | { "volume" } 253 | 254 | FUNCTION {bbl.of} 255 | { "of" } 256 | 257 | FUNCTION {bbl.number} 258 | { "number" } 259 | 260 | FUNCTION {bbl.nr} 261 | { "no." } 262 | 263 | FUNCTION {bbl.in} 264 | { "in" } 265 | 266 | FUNCTION {bbl.pages} 267 | { "pp." } 268 | 269 | FUNCTION {bbl.page} 270 | { "p." } 271 | 272 | FUNCTION {bbl.chapter} 273 | { "chapter" } 274 | 275 | FUNCTION {bbl.techrep} 276 | { "Technical Report" } 277 | 278 | FUNCTION {bbl.mthesis} 279 | { "Master's thesis" } 280 | 281 | FUNCTION {bbl.phdthesis} 282 | { "Ph.D. thesis" } 283 | 284 | MACRO {jan} {"January"} 285 | 286 | MACRO {feb} {"February"} 287 | 288 | MACRO {mar} {"March"} 289 | 290 | MACRO {apr} {"April"} 291 | 292 | MACRO {may} {"May"} 293 | 294 | MACRO {jun} {"June"} 295 | 296 | MACRO {jul} {"July"} 297 | 298 | MACRO {aug} {"August"} 299 | 300 | MACRO {sep} {"September"} 301 | 302 | MACRO {oct} {"October"} 303 | 304 | MACRO {nov} {"November"} 305 | 306 | MACRO {dec} {"December"} 307 | 308 | MACRO {acmcs} {"ACM Comput. Surv."} 309 | 310 | MACRO {acta} {"Acta Inf."} 311 | 312 | MACRO {cacm} {"Commun. ACM"} 313 | 314 | MACRO {ibmjrd} {"IBM J. Res. Dev."} 315 | 316 | MACRO {ibmsj} {"IBM Syst.~J."} 317 | 318 | MACRO {ieeese} {"IEEE Trans. Software Eng."} 319 | 320 | MACRO {ieeetc} {"IEEE Trans. Comput."} 321 | 322 | MACRO {ieeetcad} 323 | {"IEEE Trans. Comput. Aid. Des."} 324 | 325 | MACRO {ipl} {"Inf. Process. Lett."} 326 | 327 | MACRO {jacm} {"J.~ACM"} 328 | 329 | MACRO {jcss} {"J.~Comput. Syst. Sci."} 330 | 331 | MACRO {scp} {"Sci. Comput. Program."} 332 | 333 | MACRO {sicomp} {"SIAM J. Comput."} 334 | 335 | MACRO {tocs} {"ACM Trans. Comput. Syst."} 336 | 337 | MACRO {tods} {"ACM Trans. Database Syst."} 338 | 339 | MACRO {tog} {"ACM Trans. Graphic."} 340 | 341 | MACRO {toms} {"ACM Trans. Math. Software"} 342 | 343 | MACRO {toois} {"ACM Trans. Office Inf. Syst."} 344 | 345 | MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} 346 | 347 | MACRO {tcs} {"Theor. Comput. Sci."} 348 | 349 | FUNCTION {bibinfo.check} 350 | { swap$ 351 | duplicate$ missing$ 352 | { 353 | pop$ pop$ 354 | "" 355 | } 356 | { duplicate$ empty$ 357 | { 358 | swap$ pop$ 359 | } 360 | { swap$ 361 | pop$ 362 | } 363 | if$ 364 | } 365 | if$ 366 | } 367 | FUNCTION {bibinfo.warn} 368 | { swap$ 369 | duplicate$ missing$ 370 | { 371 | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ 372 | "" 373 | } 374 | { duplicate$ empty$ 375 | { 376 | swap$ "empty " swap$ * " in " * cite$ * warning$ 377 | } 378 | { swap$ 379 | pop$ 380 | } 381 | if$ 382 | } 383 | if$ 384 | } 385 | FUNCTION {format.eprint} 386 | { eprint duplicate$ empty$ 387 | 'skip$ 388 | { "\eprint" 389 | archive empty$ 390 | 'skip$ 391 | { "[" * archive * "]" * } 392 | if$ 393 | "{" * swap$ * "}" * 394 | } 395 | if$ 396 | } 397 | FUNCTION {format.url} 398 | { url empty$ 399 | { "" } 400 | { "\urlprefix\url{" url * "}" * } 401 | if$ 402 | } 403 | 404 | STRINGS { bibinfo} 405 | INTEGERS { nameptr namesleft numnames } 406 | 407 | FUNCTION {format.names} 408 | { 'bibinfo := 409 | duplicate$ empty$ 'skip$ { 410 | 's := 411 | "" 't := 412 | #1 'nameptr := 413 | s num.names$ 'numnames := 414 | numnames 'namesleft := 415 | { namesleft #0 > } 416 | { s nameptr 417 | "{vv~}{ll}{ f{}}{ jj}" 418 | format.name$ 419 | remove.dots 420 | bibinfo bibinfo.check 421 | 't := 422 | nameptr #1 > 423 | { 424 | nameptr #5 425 | #1 + = 426 | numnames #5 427 | > and 428 | { "others" 't := 429 | #1 'namesleft := } 430 | 'skip$ 431 | if$ 432 | namesleft #1 > 433 | { ", " * t * } 434 | { 435 | "," * 436 | s nameptr "{ll}" format.name$ duplicate$ "others" = 437 | { 't := } 438 | { pop$ } 439 | if$ 440 | t "others" = 441 | { 442 | " " * bbl.etal * 443 | } 444 | { " " * t * } 445 | if$ 446 | } 447 | if$ 448 | } 449 | 't 450 | if$ 451 | nameptr #1 + 'nameptr := 452 | namesleft #1 - 'namesleft := 453 | } 454 | while$ 455 | } if$ 456 | } 457 | FUNCTION {format.names.ed} 458 | { 459 | format.names 460 | } 461 | FUNCTION {format.authors} 462 | { author "author" format.names 463 | } 464 | FUNCTION {get.bbl.editor} 465 | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } 466 | 467 | FUNCTION {format.editors} 468 | { editor "editor" format.names duplicate$ empty$ 'skip$ 469 | { 470 | "," * 471 | " " * 472 | get.bbl.editor 473 | * 474 | } 475 | if$ 476 | } 477 | FUNCTION {format.book.pages} 478 | { pages "pages" bibinfo.check 479 | duplicate$ empty$ 'skip$ 480 | { " " * bbl.pages * } 481 | if$ 482 | } 483 | FUNCTION {format.doi} 484 | { doi "doi" bibinfo.check 485 | duplicate$ empty$ 'skip$ 486 | { 487 | new.block 488 | "\doi{" swap$ * "}" * 489 | } 490 | if$ 491 | } 492 | FUNCTION {format.note} 493 | { 494 | note empty$ 495 | { "" } 496 | { note #1 #1 substring$ 497 | duplicate$ "{" = 498 | 'skip$ 499 | { output.state mid.sentence = 500 | { "l" } 501 | { "u" } 502 | if$ 503 | change.case$ 504 | } 505 | if$ 506 | note #2 global.max$ substring$ * "note" bibinfo.check 507 | } 508 | if$ 509 | } 510 | 511 | FUNCTION {format.title} 512 | { title 513 | duplicate$ empty$ 'skip$ 514 | { "t" change.case$ } 515 | if$ 516 | "title" bibinfo.check 517 | } 518 | FUNCTION {output.bibitem} 519 | { newline$ 520 | "\bibitem{" write$ 521 | cite$ write$ 522 | "}" write$ 523 | newline$ 524 | "" 525 | before.all 'output.state := 526 | } 527 | 528 | FUNCTION {n.dashify} 529 | { 530 | 't := 531 | "" 532 | { t empty$ not } 533 | { t #1 #1 substring$ "-" = 534 | { t #1 #2 substring$ "-" = not 535 | %{ "--" * 536 | { "-" * 537 | t #2 global.max$ substring$ 't := 538 | } 539 | { { t #1 #1 substring$ "-" = } 540 | { "-" * 541 | t #2 global.max$ substring$ 't := 542 | } 543 | while$ 544 | } 545 | if$ 546 | } 547 | { t #1 #1 substring$ * 548 | t #2 global.max$ substring$ 't := 549 | } 550 | if$ 551 | } 552 | while$ 553 | } 554 | 555 | FUNCTION {word.in} 556 | { bbl.in capitalize 557 | ":" * 558 | " " * } 559 | 560 | FUNCTION {format.date} 561 | { 562 | "" 563 | duplicate$ empty$ 564 | year "year" bibinfo.check duplicate$ empty$ 565 | { swap$ 'skip$ 566 | { "there's a month but no year in " cite$ * warning$ } 567 | if$ 568 | * 569 | } 570 | { swap$ 'skip$ 571 | { 572 | swap$ 573 | " " * swap$ 574 | } 575 | if$ 576 | * 577 | } 578 | if$ 579 | duplicate$ empty$ 580 | 'skip$ 581 | { 582 | before.all 'output.state := 583 | " (" swap$ * ")" * 584 | } 585 | if$ 586 | } 587 | FUNCTION {format.btitle} 588 | { title "title" bibinfo.check 589 | duplicate$ empty$ 'skip$ 590 | { 591 | } 592 | if$ 593 | } 594 | FUNCTION {either.or.check} 595 | { empty$ 596 | 'pop$ 597 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 598 | if$ 599 | } 600 | FUNCTION {format.bvolume} 601 | { volume empty$ 602 | { "" } 603 | { bbl.volume volume tie.or.space.prefix 604 | "volume" bibinfo.check * * 605 | series "series" bibinfo.check 606 | duplicate$ empty$ 'pop$ 607 | { swap$ bbl.of space.word * swap$ 608 | emphasize * } 609 | if$ 610 | "volume and number" number either.or.check 611 | } 612 | if$ 613 | } 614 | FUNCTION {format.number.series} 615 | { volume empty$ 616 | { number empty$ 617 | { series field.or.null } 618 | { series empty$ 619 | { number "number" bibinfo.check } 620 | { output.state mid.sentence = 621 | { bbl.number } 622 | { bbl.number capitalize } 623 | if$ 624 | number tie.or.space.prefix "number" bibinfo.check * * 625 | bbl.in space.word * 626 | series "series" bibinfo.check * 627 | } 628 | if$ 629 | } 630 | if$ 631 | } 632 | { "" } 633 | if$ 634 | } 635 | 636 | FUNCTION {format.edition} 637 | { edition duplicate$ empty$ 'skip$ 638 | { 639 | output.state mid.sentence = 640 | { "l" } 641 | { "t" } 642 | if$ change.case$ 643 | "edition" bibinfo.check 644 | " " * bbl.edition * 645 | } 646 | if$ 647 | } 648 | INTEGERS { multiresult } 649 | FUNCTION {multi.page.check} 650 | { 't := 651 | #0 'multiresult := 652 | { multiresult not 653 | t empty$ not 654 | and 655 | } 656 | { t #1 #1 substring$ 657 | duplicate$ "-" = 658 | swap$ duplicate$ "," = 659 | swap$ "+" = 660 | or or 661 | { #1 'multiresult := } 662 | { t #2 global.max$ substring$ 't := } 663 | if$ 664 | } 665 | while$ 666 | multiresult 667 | } 668 | FUNCTION {format.pages} 669 | { pages duplicate$ empty$ 'skip$ 670 | { duplicate$ multi.page.check 671 | { 672 | bbl.pages swap$ 673 | n.dashify 674 | } 675 | { 676 | bbl.page swap$ 677 | } 678 | if$ 679 | tie.or.space.prefix 680 | "pages" bibinfo.check 681 | * * 682 | } 683 | if$ 684 | } 685 | FUNCTION {format.journal.pages} 686 | { pages duplicate$ empty$ 'pop$ 687 | { swap$ duplicate$ empty$ 688 | { pop$ pop$ format.pages } 689 | { 690 | ": " * 691 | swap$ 692 | n.dashify 693 | "pages" bibinfo.check 694 | * 695 | } 696 | if$ 697 | } 698 | if$ 699 | } 700 | FUNCTION {format.journal.eid} 701 | { eid "eid" bibinfo.check 702 | duplicate$ empty$ 'pop$ 703 | { swap$ duplicate$ empty$ 'skip$ 704 | { 705 | ": " * 706 | } 707 | if$ 708 | swap$ * 709 | } 710 | if$ 711 | } 712 | FUNCTION {format.vol.num.pages} 713 | { volume field.or.null 714 | duplicate$ empty$ 'skip$ 715 | { 716 | "volume" bibinfo.check 717 | } 718 | if$ 719 | } 720 | 721 | FUNCTION {format.chapter.pages} 722 | { chapter empty$ 723 | { "" } 724 | { type empty$ 725 | { bbl.chapter } 726 | { type "l" change.case$ 727 | "type" bibinfo.check 728 | } 729 | if$ 730 | chapter tie.or.space.prefix 731 | "chapter" bibinfo.check 732 | * * 733 | } 734 | if$ 735 | } 736 | 737 | FUNCTION {format.booktitle} 738 | { 739 | booktitle "booktitle" bibinfo.check 740 | } 741 | FUNCTION {format.in.ed.booktitle} 742 | { format.booktitle duplicate$ empty$ 'skip$ 743 | { 744 | editor "editor" format.names.ed duplicate$ empty$ 'pop$ 745 | { 746 | "," * 747 | " " * 748 | get.bbl.editor 749 | ", " * 750 | * swap$ 751 | * } 752 | if$ 753 | word.in swap$ * 754 | } 755 | if$ 756 | } 757 | FUNCTION {empty.misc.check} 758 | { author empty$ title empty$ howpublished empty$ 759 | month empty$ year empty$ note empty$ 760 | and and and and and 761 | { "all relevant fields are empty in " cite$ * warning$ } 762 | 'skip$ 763 | if$ 764 | } 765 | FUNCTION {format.thesis.type} 766 | { type duplicate$ empty$ 767 | 'pop$ 768 | { swap$ pop$ 769 | "t" change.case$ "type" bibinfo.check 770 | } 771 | if$ 772 | } 773 | FUNCTION {format.tr.number} 774 | { number "number" bibinfo.check 775 | type duplicate$ empty$ 776 | { pop$ bbl.techrep } 777 | 'skip$ 778 | if$ 779 | "type" bibinfo.check 780 | swap$ duplicate$ empty$ 781 | { pop$ "t" change.case$ } 782 | { tie.or.space.prefix * * } 783 | if$ 784 | } 785 | FUNCTION {format.article.crossref} 786 | { 787 | key duplicate$ empty$ 788 | { pop$ 789 | journal duplicate$ empty$ 790 | { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } 791 | { "journal" bibinfo.check emphasize word.in swap$ * } 792 | if$ 793 | } 794 | { word.in swap$ * " " *} 795 | if$ 796 | " \cite{" * crossref * "}" * 797 | } 798 | FUNCTION {format.crossref.editor} 799 | { editor #1 "{vv~}{ll}" format.name$ 800 | "editor" bibinfo.check 801 | editor num.names$ duplicate$ 802 | #2 > 803 | { pop$ 804 | "editor" bibinfo.check 805 | " " * bbl.etal 806 | * 807 | } 808 | { #2 < 809 | 'skip$ 810 | { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 811 | { 812 | "editor" bibinfo.check 813 | " " * bbl.etal 814 | * 815 | } 816 | { 817 | bbl.and space.word 818 | * editor #2 "{vv~}{ll}" format.name$ 819 | "editor" bibinfo.check 820 | * 821 | } 822 | if$ 823 | } 824 | if$ 825 | } 826 | if$ 827 | } 828 | FUNCTION {format.book.crossref} 829 | { volume duplicate$ empty$ 830 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 831 | pop$ word.in 832 | } 833 | { bbl.volume 834 | capitalize 835 | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * 836 | } 837 | if$ 838 | editor empty$ 839 | editor field.or.null author field.or.null = 840 | or 841 | { key empty$ 842 | { series empty$ 843 | { "need editor, key, or series for " cite$ * " to crossref " * 844 | crossref * warning$ 845 | "" * 846 | } 847 | { series emphasize * } 848 | if$ 849 | } 850 | { key * } 851 | if$ 852 | } 853 | { format.crossref.editor * } 854 | if$ 855 | " \cite{" * crossref * "}" * 856 | } 857 | FUNCTION {format.incoll.inproc.crossref} 858 | { 859 | editor empty$ 860 | editor field.or.null author field.or.null = 861 | or 862 | { key empty$ 863 | { format.booktitle duplicate$ empty$ 864 | { "need editor, key, or booktitle for " cite$ * " to crossref " * 865 | crossref * warning$ 866 | } 867 | { word.in swap$ * } 868 | if$ 869 | } 870 | { word.in key * " " *} 871 | if$ 872 | } 873 | { word.in format.crossref.editor * " " *} 874 | if$ 875 | " \cite{" * crossref * "}" * 876 | } 877 | FUNCTION {format.org.or.pub} 878 | { 't := 879 | "" 880 | address empty$ t empty$ and 881 | 'skip$ 882 | { 883 | address "address" bibinfo.check * 884 | t empty$ 885 | 'skip$ 886 | { address empty$ 887 | 'skip$ 888 | { ": " * } 889 | if$ 890 | t * 891 | } 892 | if$ 893 | } 894 | if$ 895 | } 896 | FUNCTION {format.publisher.address} 897 | { publisher "publisher" bibinfo.warn format.org.or.pub 898 | } 899 | 900 | FUNCTION {format.organization.address} 901 | { organization "organization" bibinfo.check format.org.or.pub 902 | } 903 | 904 | FUNCTION {article} 905 | { output.bibitem 906 | format.authors "author" output.check 907 | format.date "year" output.check 908 | date.block 909 | format.title "title" output.check 910 | new.block 911 | crossref missing$ 912 | { 913 | journal 914 | remove.dots 915 | "journal" bibinfo.check 916 | "journal" output.check 917 | add.blank 918 | format.vol.num.pages output 919 | } 920 | { format.article.crossref output.nonnull 921 | } 922 | if$ 923 | eid empty$ 924 | { format.journal.pages } 925 | { format.journal.eid } 926 | if$ 927 | % format.doi output 928 | % new.block 929 | % format.url output 930 | % new.block 931 | % format.note output 932 | % format.eprint output 933 | fin.entry 934 | } 935 | FUNCTION {book} 936 | { output.bibitem 937 | author empty$ 938 | { format.editors "author and editor" output.check 939 | } 940 | { format.authors output.nonnull 941 | crossref missing$ 942 | { "author and editor" editor either.or.check } 943 | 'skip$ 944 | if$ 945 | } 946 | if$ 947 | format.date "year" output.check 948 | date.block 949 | format.btitle "title" output.check 950 | crossref missing$ 951 | { format.bvolume output 952 | new.block 953 | format.number.series output 954 | new.sentence 955 | format.publisher.address output 956 | } 957 | { 958 | new.block 959 | format.book.crossref output.nonnull 960 | } 961 | if$ 962 | format.edition output 963 | format.book.pages output 964 | format.doi output 965 | new.block 966 | format.url output 967 | new.block 968 | format.note output 969 | format.eprint output 970 | fin.entry 971 | } 972 | FUNCTION {booklet} 973 | { output.bibitem 974 | format.authors output 975 | format.date output 976 | date.block 977 | format.title "title" output.check 978 | new.block 979 | howpublished "howpublished" bibinfo.check output 980 | address "address" bibinfo.check output 981 | format.book.pages output 982 | format.doi output 983 | new.block 984 | format.url output 985 | new.block 986 | format.note output 987 | format.eprint output 988 | fin.entry 989 | } 990 | 991 | FUNCTION {inbook} 992 | { output.bibitem 993 | author empty$ 994 | { format.editors "author and editor" output.check 995 | } 996 | { format.authors output.nonnull 997 | crossref missing$ 998 | { "author and editor" editor either.or.check } 999 | 'skip$ 1000 | if$ 1001 | } 1002 | if$ 1003 | format.date "year" output.check 1004 | date.block 1005 | format.btitle "title" output.check 1006 | crossref missing$ 1007 | { 1008 | format.publisher.address output 1009 | format.bvolume output 1010 | format.chapter.pages "chapter and pages" output.check 1011 | new.block 1012 | format.number.series output 1013 | new.sentence 1014 | } 1015 | { 1016 | format.chapter.pages "chapter and pages" output.check 1017 | new.block 1018 | format.book.crossref output.nonnull 1019 | } 1020 | if$ 1021 | format.edition output 1022 | format.pages "pages" output.check 1023 | format.doi output 1024 | new.block 1025 | format.url output 1026 | new.block 1027 | format.note output 1028 | format.eprint output 1029 | fin.entry 1030 | } 1031 | 1032 | FUNCTION {incollection} 1033 | { output.bibitem 1034 | format.authors "author" output.check 1035 | format.date "year" output.check 1036 | date.block 1037 | format.title "title" output.check 1038 | new.block 1039 | crossref missing$ 1040 | { format.in.ed.booktitle "booktitle" output.check 1041 | format.publisher.address output 1042 | format.bvolume output 1043 | format.number.series output 1044 | format.chapter.pages output 1045 | new.sentence 1046 | format.edition output 1047 | } 1048 | { format.incoll.inproc.crossref output.nonnull 1049 | format.chapter.pages output 1050 | } 1051 | if$ 1052 | format.pages "pages" output.check 1053 | format.doi output 1054 | new.block 1055 | format.url output 1056 | new.block 1057 | format.note output 1058 | format.eprint output 1059 | fin.entry 1060 | } 1061 | FUNCTION {inproceedings} 1062 | { output.bibitem 1063 | format.authors "author" output.check 1064 | format.date "year" output.check 1065 | date.block 1066 | format.title "title" output.check 1067 | new.block 1068 | crossref missing$ 1069 | { format.in.ed.booktitle "booktitle" output.check 1070 | new.sentence 1071 | publisher empty$ 1072 | { format.organization.address output } 1073 | { organization "organization" bibinfo.check output 1074 | format.publisher.address output 1075 | } 1076 | if$ 1077 | format.bvolume output 1078 | format.number.series output 1079 | } 1080 | { format.incoll.inproc.crossref output.nonnull 1081 | } 1082 | if$ 1083 | format.pages "pages" output.check 1084 | format.doi output 1085 | new.block 1086 | format.url output 1087 | new.block 1088 | format.note output 1089 | format.eprint output 1090 | fin.entry 1091 | } 1092 | FUNCTION {conference} { inproceedings } 1093 | FUNCTION {manual} 1094 | { output.bibitem 1095 | author empty$ 1096 | { organization "organization" bibinfo.check 1097 | duplicate$ empty$ 'pop$ 1098 | { output 1099 | address "address" bibinfo.check output 1100 | } 1101 | if$ 1102 | } 1103 | { format.authors output.nonnull } 1104 | if$ 1105 | format.date output 1106 | date.block 1107 | format.btitle "title" output.check 1108 | author empty$ 1109 | { organization empty$ 1110 | { 1111 | address new.block.checka 1112 | address "address" bibinfo.check output 1113 | } 1114 | 'skip$ 1115 | if$ 1116 | } 1117 | { 1118 | organization address new.block.checkb 1119 | organization "organization" bibinfo.check output 1120 | address "address" bibinfo.check output 1121 | } 1122 | if$ 1123 | format.edition output 1124 | format.doi output 1125 | new.block 1126 | format.url output 1127 | new.block 1128 | format.note output 1129 | format.eprint output 1130 | fin.entry 1131 | } 1132 | 1133 | FUNCTION {mastersthesis} 1134 | { output.bibitem 1135 | format.authors "author" output.check 1136 | format.date "year" output.check 1137 | date.block 1138 | format.btitle 1139 | "title" output.check 1140 | new.block 1141 | bbl.mthesis format.thesis.type output.nonnull 1142 | school "school" bibinfo.warn output 1143 | address "address" bibinfo.check output 1144 | format.doi output 1145 | new.block 1146 | format.url output 1147 | new.block 1148 | format.note output 1149 | format.eprint output 1150 | fin.entry 1151 | } 1152 | 1153 | FUNCTION {misc} 1154 | { output.bibitem 1155 | format.authors output 1156 | format.date output 1157 | title howpublished new.block.checkb 1158 | format.title output 1159 | howpublished new.block.checka 1160 | howpublished "howpublished" bibinfo.check output 1161 | format.doi output 1162 | new.block 1163 | format.url output 1164 | new.block 1165 | format.note output 1166 | format.eprint output 1167 | fin.entry 1168 | empty.misc.check 1169 | } 1170 | FUNCTION {phdthesis} 1171 | { output.bibitem 1172 | format.authors "author" output.check 1173 | format.date "year" output.check 1174 | date.block 1175 | format.btitle 1176 | "title" output.check 1177 | new.block 1178 | bbl.phdthesis format.thesis.type output.nonnull 1179 | school "school" bibinfo.warn output 1180 | address "address" bibinfo.check output 1181 | format.doi output 1182 | new.block 1183 | format.url output 1184 | new.block 1185 | format.note output 1186 | format.eprint output 1187 | fin.entry 1188 | } 1189 | 1190 | FUNCTION {proceedings} 1191 | { output.bibitem 1192 | editor empty$ 1193 | { organization "organization" bibinfo.check output 1194 | } 1195 | { format.editors output.nonnull } 1196 | if$ 1197 | format.date "year" output.check 1198 | date.block 1199 | format.btitle "title" output.check 1200 | format.bvolume output 1201 | format.number.series output 1202 | editor empty$ 1203 | { publisher empty$ 1204 | 'skip$ 1205 | { 1206 | new.sentence 1207 | format.publisher.address output 1208 | } 1209 | if$ 1210 | } 1211 | { publisher empty$ 1212 | { 1213 | new.sentence 1214 | format.organization.address output } 1215 | { 1216 | new.sentence 1217 | organization "organization" bibinfo.check output 1218 | format.publisher.address output 1219 | } 1220 | if$ 1221 | } 1222 | if$ 1223 | format.doi output 1224 | new.block 1225 | format.url output 1226 | new.block 1227 | format.note output 1228 | format.eprint output 1229 | fin.entry 1230 | } 1231 | 1232 | FUNCTION {techreport} 1233 | { output.bibitem 1234 | format.authors "author" output.check 1235 | format.date "year" output.check 1236 | date.block 1237 | format.title 1238 | "title" output.check 1239 | new.block 1240 | format.tr.number output.nonnull 1241 | institution "institution" bibinfo.warn output 1242 | address "address" bibinfo.check output 1243 | format.doi output 1244 | new.block 1245 | format.url output 1246 | new.block 1247 | format.note output 1248 | format.eprint output 1249 | fin.entry 1250 | } 1251 | 1252 | FUNCTION {unpublished} 1253 | { output.bibitem 1254 | format.authors "author" output.check 1255 | format.date output 1256 | date.block 1257 | format.title "title" output.check 1258 | format.doi output 1259 | new.block 1260 | format.url output 1261 | new.block 1262 | format.note "note" output.check 1263 | format.eprint output 1264 | fin.entry 1265 | } 1266 | 1267 | FUNCTION {default.type} { misc } 1268 | READ 1269 | STRINGS { longest.label } 1270 | INTEGERS { number.label longest.label.width } 1271 | FUNCTION {initialize.longest.label} 1272 | { "" 'longest.label := 1273 | #1 'number.label := 1274 | #0 'longest.label.width := 1275 | } 1276 | FUNCTION {longest.label.pass} 1277 | { number.label int.to.str$ 'label := 1278 | number.label #1 + 'number.label := 1279 | label width$ longest.label.width > 1280 | { label 'longest.label := 1281 | label width$ 'longest.label.width := 1282 | } 1283 | 'skip$ 1284 | if$ 1285 | } 1286 | EXECUTE {initialize.longest.label} 1287 | ITERATE {longest.label.pass} 1288 | FUNCTION {begin.bib} 1289 | { preamble$ empty$ 1290 | 'skip$ 1291 | { preamble$ write$ newline$ } 1292 | if$ 1293 | "\begin{thebibliography}{" longest.label * "}" * 1294 | write$ newline$ 1295 | "\providecommand{\url}[1]{\texttt{#1}}" 1296 | write$ newline$ 1297 | "\providecommand{\urlprefix}{URL }" 1298 | write$ newline$ 1299 | "\expandafter\ifx\csname urlstyle\endcsname\relax" 1300 | write$ newline$ 1301 | " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" 1302 | write$ newline$ 1303 | " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi" 1304 | write$ newline$ 1305 | "\providecommand{\bibAnnoteFile}[1]{%" 1306 | write$ newline$ 1307 | " \IfFileExists{#1}{\begin{quotation}\noindent\textsc{Key:} #1\\" 1308 | write$ newline$ 1309 | " \textsc{Annotation:}\ \input{#1}\end{quotation}}{}}" 1310 | write$ newline$ 1311 | "\providecommand{\bibAnnote}[2]{%" 1312 | write$ newline$ 1313 | " \begin{quotation}\noindent\textsc{Key:} #1\\" 1314 | write$ newline$ 1315 | " \textsc{Annotation:}\ #2\end{quotation}}" 1316 | write$ newline$ 1317 | "\providecommand{\eprint}[2][]{\url{#2}}" 1318 | write$ newline$ 1319 | } 1320 | EXECUTE {begin.bib} 1321 | EXECUTE {init.state.consts} 1322 | ITERATE {call.type$} 1323 | FUNCTION {end.bib} 1324 | { newline$ 1325 | "\end{thebibliography}" write$ newline$ 1326 | } 1327 | EXECUTE {end.bib} 1328 | %% End of customized bst file 1329 | %% 1330 | %% End of file `PLoS.bst'. 1331 | -------------------------------------------------------------------------------- /assembly-artifacts.tex: -------------------------------------------------------------------------------- 1 | % !TEX TS-program = pdflatex 2 | % !TEX encoding = UTF-8 Unicode 3 | \documentclass[10pt]{article} 4 | 5 | % @CTB: k-mer discussion again 6 | 7 | % amsmath package, useful for mathematical formulas 8 | \usepackage{amsmath} 9 | % amssymb package, useful for mathematical symbols 10 | \usepackage{amssymb} 11 | \usepackage[english]{babel} 12 | % graphicx package, useful for including eps and pdf graphics 13 | % include graphics with the command \includegraphics 14 | \usepackage{graphicx} 15 | 16 | % cite package, to clean up citations in the main text. Do not remove. 17 | \usepackage{cite} 18 | 19 | \usepackage{color} 20 | \usepackage{caption} 21 | \usepackage{subcaption} 22 | 23 | % @ACH don't know how to do this but putting this here 24 | % Use doublespacing - comment out for single spacing 25 | %\usepackage{setspace} \doublespacing 26 | 27 | % Text layout 28 | \topmargin 0.0cm \oddsidemargin 0.5cm \evensidemargin 0.5cm \textwidth 29 | 16cm \textheight 21cm 30 | 31 | % Bold the 'Figure #' in the caption and separate it with a period 32 | % Captions will be left justified 33 | %\usepackage[labelfont=bf,labelsep=period,justification=raggedright]{caption} 34 | 35 | % Use the PLoS provided bibtex style 36 | \bibliographystyle{plos2009} 37 | 38 | % Remove brackets from numbering in List of References 39 | \makeatletter 40 | \renewcommand{\@biblabel}[1]{\quad#1.} 41 | \makeatother 42 | 43 | % figure how an abbreviation for highly connected? 44 | %@ACH the most obvious is highly connected (HC) 45 | 46 | % Leave date blank 47 | \date{} 48 | 49 | \pagestyle{myheadings} 50 | %% ** EDIT HERE ** 51 | 52 | 53 | %% ** EDIT HERE ** 54 | %% PLEASE INCLUDE ALL MACROS BELOW 55 | 56 | %% END MACROS SECTION 57 | 58 | \begin{document} 59 | 60 | % Title must be 150 characters or less 61 | \begin{flushleft} 62 | {\Large \textbf{Illumina Sequencing Artifacts Revealed by Connectivity 63 | Analysis of Metagenomic Datasets} } 64 | % Insert Author names, affiliations and corresponding author email. 65 | \\ 66 | Adina Chuang Howe$^{1,2}$, 67 | Jason Pell$^{3}$, 68 | Rosangela Canino-Koning$^{3}$, 69 | Rachel Mackelprang$^{4}$, 70 | Susannah Tringe$^{4}$, 71 | Janet Jansson$^{4,5}$ , 72 | James M. Tiedje$^{1,2}$, and 73 | C. Titus Brown$^{1,3\ast}$ 74 | \\ 75 | \bf{1} Microbiology and Molecular Genetics, Michigan State University, East Lansing, MI, USA 76 | \\ 77 | \bf{2} Plant, Soil, and Microbial Sciences, Michigan State University, East Lansing, MI, USA 78 | \\ 79 | \bf{3} Computer Science and Engineering, Michigan State University, East Lansing, MI, USA 80 | \\ 81 | \bf{4} Department of Energy (DOE) Joint Genome Institute, Walnut Creek, CA, USA 82 | \\ 83 | \bf{5} Lawrence Berkeley National Laboratory, Genomics Division, Berkeley, CA, USA 84 | \\ 85 | $\ast$ E-mail: ctb@msu.edu 86 | \end{flushleft} 87 | 88 | % Please keep the abstract between 250 and 300 words 89 | \section*{Abstract} 90 | 91 | Sequencing errors and biases in metagenomic datasets affect 92 | coverage-based assemblies and are often ignored during analysis. 93 | Here, we analyze read connectivity in metagenomes and identify the 94 | presence of problematic and likely a-biological connectivity within 95 | metagenome assembly graphs. Specifically, we identify highly 96 | connected sequences which join a large proportion of reads within each 97 | real metagenome. These sequences show position-specific bias in 98 | shotgun reads, suggestive of sequencing artifacts, and are only 99 | minimally incorporated into contigs by assembly. The removal of these 100 | sequences prior to assembly results in similar assembly content for 101 | most metagenomes and enables the use of graph partitioning to 102 | decrease assembly memory and time requirements. 103 | 104 | \section*{Introduction} 105 | 106 | With the rapid decrease in the costs of sequencing, we can now achieve 107 | the sequencing depth necessary to study microbes from even the most 108 | complex environments \cite{Hess:2011p686,Qin:2010p189}. Deep 109 | metagenomic sequencing efforts in permafrost soil, human gut, cow 110 | rumen, and surface water have provided insights into the genetic and 111 | biochemical diversity of environmental microbial populations 112 | \cite{Hess:2011p686,Iverson:2012p1281,Qin:2010p189} and their involvement in responding to environmental changes 113 | \cite{Mackelprang:2011p1087}. These metagenomic studies have all 114 | leveraged \emph{de novo} metagenomic assembly of short reads for 115 | functional and phylogenetic analyses. \emph{De novo} assembly is an 116 | advantageous approach to sequence analysis as it reduces the dataset 117 | size by collapsing the more numerous short reads into fewer contigs 118 | and enables improved annotation-based approaches by providing longer 119 | sequences \cite{Miller:2010p226,Pop:2009p798}. Furthermore, it does 120 | not rely on the {\em a priori} availability of reference genomes to enable 121 | identification of gene content or operon structure 122 | \cite{Hess:2011p686,Iverson:2012p1281}. 123 | 124 | Although \emph{de novo} metagenomic assembly is a promising approach 125 | for metagenomic sequence analysis, it is complicated by the variable 126 | coverage of sequencing reads from mixed populations in the environment 127 | and their associated sequencing errors and biases 128 | \cite{Mende:2012p1262,Pignatelli:2011p742}. Several 129 | metagenome-specific assemblers have been developed to deal with 130 | variable coverage communities, including Meta-IDBA 131 | \cite{Peng:2011p898}, MetaVelvet \cite{Namiki:2012iq}, and SOAPdenovo \cite{Li:2010p234}. These 132 | assemblers rely on analysis of local sequencing coverage to help build 133 | assemblies and thus are sensitive to the effects of sequencing errors 134 | and biases on coverage estimations of the underlying dataset. The 135 | effects of sequencing errors on \emph{de novo} assembly has been 136 | demonstrated in simulated metagenomes 137 | \cite{Mavromatis:2006p894,Mende:2012p1262,Pignatelli:2011p742} and 138 | isolate genomes \cite{Morgan:2010p740,Chitsaz:2011kr}, but these datasets do not necessarily represent real metagenomic 139 | data. Specifically, these models exclude the presence of known 140 | non-biological sequencing biases which hinder assembly approaches 141 | \cite{GomezAlvarez:2009p1334,Keegan:2012p1336,Niu:2010p1333}. 142 | 143 | In this study, we examine metagenomic datasets for the presence of 144 | artificial sequencing biases that affect assembly graph structure, 145 | extending previous work to large and complex datasets produced from 146 | the Illumina platform. We characterize sequence connectivity in an 147 | assembly graph, identifying potential sequencing biases in regions 148 | where numerous reads are connected together. Within metagenomic 149 | datasets, we find that there exist highly connected sequences which 150 | partially originate from sequencing artifacts. Moreover, these 151 | sequences limit approaches to divide or partition large datasets for 152 | further analysis, and may introduce artifacts into assemblies. Here, 153 | we identify and characterize these highly connected sequences and 154 | examine the effects of removing these sequences on downstream 155 | assemblies. 156 | 157 | \section*{Results} 158 | 159 | \subsection*{Connectivity analysis of metagenome datasets} 160 | 161 | \subsubsection*{Presence of a single, highly connected lump in all datasets} 162 | We selected datasets from three medium to high diversity 163 | metagenomes from the human gut \cite{Qin:2010p189}, cow rumen 164 | \cite{Hess:2011p686}, and agricultural soil (SRX099904 and SRX099905) 165 | (Table~\ref{data-summary}). To 166 | evaluate the effects of sequencing coverage, we included two subsets 167 | of the 520 million read soil metagenome containing 50 and 100 million 168 | reads. We also included a previously published error-free simulated 169 | metagenome based on a mixture of 112 reference genomes 170 | \cite{Pignatelli:2011p742}. 171 | 172 | We evaluated read connectivity by partitioning reads into disconnected 173 | components with a de Bruijn graph representation \cite{Pell:2012cq}. This approach 174 | guarantees that reads in different partitions do not connect to each 175 | other and permits the separate assembly and analysis of each 176 | partition. For each metagenome, regardless of origin, we found a 177 | single dominant, highly connected set of sequencing reads which we 178 | henceforth refer to as the ``lump'' of the dataset (Table~\ref{data-summary}). This lump contained the largest subset of connected sequencing 179 | reads and varied in size among the datasets, ranging from 5\% of total 180 | reads in the simulated metagenome to 75\% of total reads in the human 181 | gut metagenome. For the soil datasets, as sequencing coverage (e.g., 182 | the fraction of reads mapped to an assembly) increased from 1.4 to 4.7 183 | to 5.6\%, the lump size increased more dramatically from 7 to 15 to 184 | 35\% of all reads, indicating increasingly larger connectivity between 185 | sequences with more sequencing. 186 | 187 | \subsubsection*{Characterizing connectivity in the dominant partition} 188 | 189 | % @CTB check scripts to see if this is an accurate characterization. 190 | % @CTB put scripts in scripts/!! 191 | %@ACH Scripts are ready documented in the snapshot - do you want more details in the methods? 192 | We characterized the connectivity of sequences 193 | within each lump by estimating the average local graph density from 194 | each k-mer (k=32 unless otherwise stated) in the assembly graph (see 195 | Methods). Here, local graph density is a measurement of total 196 | connected reads within a fixed radius. Sequences 197 | in the identified metagenomic lumps were characterized by very high 198 | local graph densities: between 22 to 50\% of the total nodes in 199 | metagenomic lump assembly graphs had average graph densities greater 200 | than 20 (Table~\ref{data-summary}). This indicates that these nodes were in very nonlinear portions of the assembly graph and had high connectivity. In comparison, 17\% of the total nodes in the 201 | simulated lump had an average local graph density greater than 20, and 202 | fewer than 2\% of the nodes in the entire simulated data (all partitions) set had an 203 | average graph density higher than 20. 204 | 205 | We next assessed the extent to which graph density varied by position 206 | along the sequencing reads. The degree of position-specific variation of 207 | graph densities was estimated by calculating the average local graph 208 | density within ten steps of every k-mer by position in each read. In 209 | all environmental metagenomic reads, we observed variation in graph 210 | density at the 3'-end region of reads (Fig.~\ref{density-pos}). In soil 211 | metagenomes, we observed the most dramatic variation with local graph 212 | density increasing in sequences located at the 3'-end of the reads. 213 | Notably, this trend was not present in the simulated dataset. 214 | 215 | Next, we performed an exhaustive traversal of the assembly graph and 216 | identified the specific sequences within dense regions of the assembly 217 | graph which consistently contributed to high connectivity. We 218 | observed that this subset of sequences was also found to exhibit 219 | position-specific variation within sequencing reads, with the 220 | exception of these sequences in the simulated dataset (Fig.~\ref{pos-spec}, solid 221 | lines). As with local density trends, position-specific trends in 222 | the location of these sequences also varied between metagenomes. As 223 | sequencing coverage increased among metagenomes, the amount of 3'-end 224 | variation appeared to decrease (e.g., the soils) or increase (e.g., 225 | rumen and human gut). 226 | 227 | \subsection*{Effects of removing highly connected sequences on assembly} 228 | 229 | \subsubsection*{Removal of highly connected sequences enables graph partitioning of metagenome} 230 | 231 | Since these highly connected sequences exhibited position-specific 232 | variation indicative of sequences of non-biological origin, we removed 233 | them and assessed the effect of their removal on assembly (see 234 | Methods). We found that by removing these k-mers, we could 235 | effectively break apart metagenomic lumps, and the resulting largest 236 | partition of connected reads in each metagenome was reduced to less 237 | than 7\% of the total reads in the lump. Partitioning also had the 238 | effect of significantly decreasing assembly time and memory usage 239 | \cite{Pell:2012cq}. 240 | 241 | \subsubsection*{Removing highly connected sequences resulted in minimal losses of reference genes} 242 | 243 | % @CTB probably need to indicate that since lump is separated from rest 244 | % we can assemble it separately w/o fear. 245 | We explored the extent 246 | to which the identified highly connected 247 | sequences impacted assembly by first evaluating the effects of the 248 | removal of these sequences from the simulated lump. The assembly of the reads in the original, 249 | unfiltered simulated lump and that of the reads remaining after 250 | removing highly connected sequences (the filtered assembly) were 251 | compared for three assemblers: Velvet \cite{Zerbino:2008p665}, Meta-IDBA \cite{Peng:2011p898}, and SOAPdenovo \cite{Li:2010p234}. 252 | Based on the total assembly length of contigs greater than 300 bp, 253 | filtered assemblies of the simulated metagenome resulted in a loss of 254 | between 4 - 16\% of total assembly length (Table~\ref{assembly-stats}). In general, the 255 | filtered assemblies contained fewer total contigs than unfiltered 256 | assemblies, while the maximum contig size increased in the Velvet 257 | assembly but decreased in the Meta-IDBA and SOAPdenovo assemblies. 258 | Direct comparisons of the unfiltered and filtered simulated metagenome assemblies found 259 | that the filtered assemblies comprised on average 89\% of the 260 | unfiltered assemblies, and the unfiltered assemblies contained nearly 261 | all (97\%) of the filtered assembled sequences. Despite the removal 262 | of over 3\% of the total unique 32-mers in the simulated metagenome, 263 | the resulting filtered assemblies lost only 3-15\% of annotated original reference genes (Table~\ref{assembly-compare}). 264 | % discss variable assembly due to low coverage. 265 | 266 | We next evaluated the effects of removing highly connected sequences in 267 | real datasets. Similar to the simulated assemblies, the 268 | removal of highly connected sequences for all metagenomes and 269 | assemblers resulted in a decrease of total number of contigs and assembly 270 | length (Table~\ref{assembly-stats}). In general, filtered assemblies were largely 271 | contained within unfiltered assemblies and comprised 51-87\% of the 272 | unfiltered assembly. The observed changes in metagenomic assemblies 273 | were difficult to evaluate as no reference genomes exist, 274 | and a decrease in assembly length may actually be beneficial if it 275 | eliminates contigs that incorporate sequencing artifacts. 276 | To aid in this evaluation, we used the previously published set of 277 | rumen draft genomes from \emph{de novo} assembly efforts of high 278 | abundance sequences in the rumen metagenome \cite{Hess:2011p686}. 279 | Overall, we found that removal of highly connected sequences from the 280 | rumen dataset resulted in 9-13\% loss of sequences present in 281 | draft reference genomes (Table~\ref{assembly-compare}). 282 | 283 | \subsubsection*{Unfiltered assemblies contained only a small fraction of highly connected sequences} 284 | 285 | To further study the effects of highly connected sequences, we 286 | examined their incorporation into unfiltered assemblies. Except in 287 | the human gut sample, fewer than 2\% of highly connected sequences 288 | were incorporated by any assembler (Table~\ref{assembly-stoptags}). Each assembled 289 | contig was divided into percentile bins and examined for the 290 | presence of the previously identified highly connected sequences. We 291 | found that contigs, especially in assemblies from Velvet and 292 | Meta-IDBA, incorporated a larger fraction of these sequences at their 293 | ends relative to other positions (Fig~\ref{stoptag-contig}). The SOAPdenovo 294 | assembler incorporated fewer of the highly connected sequences into 295 | its assembled contigs; in the simulated data set, none of these sequences 296 | were assembled, and in the small soil data set only 41 were assembled. For 297 | the human gut metagenome assemblies, millions of the highly connected 298 | sequences were incorporated into assembled contigs, comprising nearly 299 | 4\% of all assembled sequences on Velvet contig ends (Fig~\ref{stoptag-contig}). 300 | 301 | \subsubsection*{Identifying origins of highly connected sequences in known reference databases} 302 | 303 | For the simulated metagenome, we could identify the source of highly 304 | connected k-mers using available reference genomes. Reference genes 305 | with multiple perfect alignments to highly connected k-mers present in 306 | the dataset a minimum of 50 times were identified (Table~\ref{sim-stoptags}). Many of 307 | these sequences were from well-conserved housekeeping genes involved 308 | in protein synthesis, cell transport, and signaling. To determine 309 | possible biological sources of highly connected sequences within real 310 | metagenomes, we compared the sequences shared between the soil, rumen, 311 | and human gut metagenomes (a total of 241 million 32-mers). Among these 7,586 shared sequences, we identified the closest reference 312 | protein from the NCBI-nr database requiring complete sequence 313 | identity. Only 1,018 sequences (13\%) matched existing reference 314 | proteins, and many of the annotated sequences matched to 315 | genes conserved across multiple genomes. The most abundant 316 | proteins conserved in greater than 3 genomes are shown in (Table~\ref{meta-stoptags}), and 317 | largely encode for genes involved in protein biosynthesis, DNA 318 | metabolism, and biochemical cofactors. 319 | 320 | One potential cause of artificial high connectivity within metagenomes 321 | is the presence of high abundance subsequences. Thus, we identified the 322 | subset of highly connected k-mers which were also present with an 323 | abundance of greater than 50 within each metagenome and their location 324 | in sequencing reads (Fig~\ref{pos-spec}, dotted lines). These high abundance 325 | k-mers comprised a very small proportion of the identified highly 326 | connected sequences, less than 1\% in the soils, 1.5\% in the rumen, 327 | and 6.4\% in the human gut metagenomes, but the position-specific 328 | variation of these sequences was very similar to the variation in the 329 | larger set of highly connected k-mers. 330 | 331 | We attempted to identify patterns within the sequences causing 332 | position specific variation by examining the abundance distribution of 333 | 5-mers within the highly abundant/highly connected 32-mers. There 334 | were significantly fewer 5-mers in the simulated sequences compared to 335 | those in metagenomes: 336 total 5-mers in the simulated data and from 336 | 425,572 to 221,085,228 total 5-mers in the small soil and human gut 337 | datasets, respectively. In the simulated dataset, the top ten most 338 | abundant unique k-mers made up 75\% of the total 5-mers; in contrast, 339 | in the metagenomes, k-mers were more evenly distributed: the top ten 340 | most abundant 5-mers comprised less than 10\% of the total 5-mers. 341 | The cumulative abundance distribution of the ranked 5-mers shown in 342 | Fig.~\ref{five-mer} shows this even distribution in all of the real metagenomes. 343 | This suggests that there is no single, easily-identifiable set of 344 | sequences at the root of the highly connected component observed in 345 | real metagenomes. 346 | 347 | \section*{Discussion} 348 | 349 | \subsection*{Sequencing artifacts are present in real metagenomes} 350 | 351 | Through assessing the connectivity of reads in several metagenomes, we 352 | identified a disproportionately large subset of reads 353 | connected together within an assembly graph, which we refer to as 354 | the ``lump.'' 355 | The total number of reads in 356 | metagenomic lumps (7-75\% of reads) was significantly larger than that 357 | of simulated dataset (5\% of reads) (Table~\ref{data-summary}). In the simulated data, 358 | this component consists 359 | of reads connected by 360 | sequences conserved between multiple genomes 361 | (Table~\ref{sim-stoptags}). The larger size of this component 362 | within the soil, rumen, and human gut metagenomes 363 | suggests that anomalous, non-biological connectivity may be present 364 | within these lumps. Moreover, in the soil metagenomes, we 365 | observed that for a 5\% increase in sequencing coverage of the assembled 366 | contigs, the amount of connectivity nearly doubled. 367 | While sequencing coverage of assembled contigs 368 | increased slightly from 4.7 to 5.6\% in the medium and large soil 369 | metagenomes, the number of reads contained in the lump grew 370 | significantly from 15 million to 182 million. Given the very high 371 | diversity and very low coverage of these soil samples, the magnitude of the 372 | observed increases in connectivity cannot be due simply to increased 373 | coverage. This suggests the presence of non-biological features 374 | that falsely connect reads. 375 | 376 | The superlinear increase in connectivity exhibited in these data sets 377 | indicates that a form of preferential attachment is occurring in the 378 | graphs \cite{Barabasi:1999p1083}. This graph-theoretic phenomenon 379 | describes the results of a process where highly connected nodes in a 380 | graph preferentially acquire new edges -- colloquially known as ``the 381 | rich get richer.'' In assembly, any systematic bias towards producing 382 | specific subsequences from shotgun sequencing would lead to a tendency 383 | to connect otherwise unrelated graph components; such a bias could be 384 | biological (e.g. repeat present in multiple genomes or other 385 | highly conserved DNA sequences), or non-biological (e.g., inclusion 386 | of sequencing primers in reads or even a low-frequency trend towards 387 | producing specific subsequences \cite{Hansen:2010if,Minoche:2011fl,Dohm:2008ky}). 388 | 389 | % @CTB talk about general delumping coolness; general approaches to finding 390 | % and characterizing graph connectivity. 391 | 392 | We believe a significant component of the high connectivity that we 393 | see is of non-biological origin. Shotgun sequencing is a random 394 | process and consequently any position-specific variation within 395 | sequencing reads is unexpected and probably originates from bias in 396 | sample preparation or the sequencing process \cite{GomezAlvarez:2009p1334, Haas:2011jg, Keegan:2012p1336}. 397 | % @CTB I have an additional ref too -- can't find it tho :( 398 | For the 399 | metagenomes studied here, we used two approaches to examine 400 | characteristics of connectivity correlated to specific positions 401 | within sequencing reads. First, we measured the connectivity of 402 | sequences at specific positions within reads by calculating local 403 | graph density. Next, we identified the specific k-mers which were 404 | consistently present in highly dense regions of the assembly graph and 405 | evaluated their location within sequencing reads. When these 406 | approaches were applied to the simulated dataset, we observed no 407 | position-specific trends when assessing either local graph density 408 | (Fig~\ref{density-pos}) or highly connected k-mers (Fig~\ref{pos-spec}) as is 409 | consistent with the lack of sequencing errors and variation in this 410 | dataset. In all real metagenomes, however, we identified 411 | position-specific trends in reads for measurements of both local graph density 412 | and the location of highly connected sequences, clearly indicating the 413 | presence of sequencing artifacts. Although present in all 414 | metagenomes, the direction of the variation varied between soil, 415 | rumen, and human gut datasets, especially for the position-specific 416 | presence of identified highly connected sequences. It is likely that 417 | there is a larger presence of indirectly preferentially attached reads 418 | which are connected to high coverage sequences of biological origins 419 | in higher coverage datasets, such as the rumen and human gut. This 420 | preferential attachment of such reads would result in increasing the 421 | number of total reads and consequently the decrease the total fraction 422 | of highly connected k-mers (Fig~\ref{pos-spec}, y-axis). This trend is observed 423 | in the decreasing fractions of highly connected sequences at the 3' 424 | end of reads as sequencing coverage increased in the small, medium, to 425 | large soil metagenomes and in the soil, rumen, to human gut 426 | metagenomes (Fig~\ref{pos-spec}). 427 | % @CTB is this last bit bullshit or not? Speculate on ligation efficiency 428 | % etc. :) Also discuss different trimming. 429 | 430 | \subsection*{Highly connected sequences are of unknown non-biological origin} 431 | 432 | We attempted to identify biological characteristics of highly 433 | connected sequences. Among the highly connected sequences in the 434 | simulated dataset and those shared by all metagenomes, we identified 435 | only a small fraction (13\% in simulated and less than 7\% in 436 | metagenomes) which matched reference genes associated with core 437 | biological functions (Table~\ref{sim-stoptags} and 438 | ~\ref{meta-stoptags}). This suggests that the remaining sequences are 439 | either not present in known reference genes (i.e., repetitive or 440 | conserved non-coding regions) or originate from non-biological 441 | sources. This supports the removal of these sequences for typical 442 | assembly and annotation pipelines, where assembly is often followed by 443 | the identification of protein coding regions. 444 | 445 | Speculating that many of the highly connected sequences originated 446 | from high abundance reads, we examined the most abundant subsequences. 447 | We found that these subsequences (k-mers present more than 50x in the data set) displayed 448 | similar trends for position-specific variation compared to their 449 | respective sets of highly connected subsequences (Fig~\ref{pos-spec}), 450 | indicating that they contribute significantly to position-specific 451 | variation. We attempted to identify signatures in these abundant, 452 | highly connected sequences from the simulated and metagenomic datasets by 453 | looking at shorter k-mer profiles. 454 | In the simulated dataset, we found that the total number of unique 455 | 5-mers was significantly lower than in metagenomes and that the 456 | most abundant of these 5-mers comprised the large majority of the 457 | total. This result is consistent with the presence of conserved 458 | biological motifs in the simulated dataset which would result in a 459 | small number of highly abundant sequences; it would also be consistent 460 | with the inclusion of sequencing primers in the data, were this a real 461 | data set. 462 | 463 | In contrast, within real metagenomic data, we found that the 5-mers 464 | are evenly distributed and exhibit no specific sequence properties 465 | (Fig~\ref{five-mer}), making them difficult to identify and evaluate. 466 | Most importantly, we were unable to identify any characteristics that 467 | would explain their origin. In addition, a G-C content analysis of 468 | the highly connective k-mers did not reveal any systematic differences 469 | between the highly connected k-mers and the background k-mer 470 | distribution. 471 | 472 | When we reviewed the literature on random and systematic sequencing 473 | errors in Illumina sequencing, we found many different types of 474 | sequencing errors: PCR amplification errors prior to and during 475 | cluster generation; random sequencing errors e.g. from miscalls of 476 | bases; sequencing errors triggered by specific sequence motifs 477 | \cite{Meacham:2011}; adaptor contamination; and post-adaptor read 478 | through. Of these errors, only random sequencing errors and adaptor 479 | contamination and readthrough would be biased towards the 3' end of 480 | the read. However, random sequencing error does not contribute to 481 | aberrant de Bruijn graph connectivity \cite{Pell:2012cq}, while 482 | adaptor contamination and readthrough would yield a sharply biased 483 | 5-mer distribution. The observed artifactual sequences thus do not match 484 | any known set of random or systematic errors in Illumina sequencing. 485 | 486 | Our current working hypothesis is that a low rate of false connections 487 | are created by a low-frequency tendency towards producing certain 488 | k-mers in the Illumina base calling software, as signal intensities 489 | decline. We cannot verify this without access to the Illumina 490 | software or source code. 491 | 492 | \subsection*{Highly connected sequences are difficult to assemble} 493 | 494 | Not all of the observed connectivity within real metagenomes is 495 | artificial, and our approach cannot differentiate between sequencing 496 | artifacts and real biological connectivity. Therefore, removing 497 | highly connected sequences could remove real biological signal in 498 | addition to sequencing artifacts. However, we suspected that 499 | assemblers would be unable to generate contigs from highly connected 500 | graph regions, and so even the real sequences would be 501 | underrepresented in the assembly. 502 | 503 | Indeed, very few highly connected sequences with abundances greater 504 | than 50 were incorporated into contigs (Table~\ref{assembly-stoptags}). Moreover, those 505 | which were assembled were often disproportionately placed at the ends 506 | of contigs (Fig~\ref{stoptag-contig}), demonstrating that they terminated contig 507 | assembly. Although this trend was observed for all three assemblers, 508 | it was more prevalent in the Velvet and Meta-IDBA assemblers, 509 | highlighting differences in assembler heuristics. 510 | 511 | One initial concern upon discovering this false connectivity was that 512 | these artifacts might nucleate false assemblies, e.g. as seen with the cow 513 | rumen \cite{Hess:2011p686}. While we only examined their effects on 514 | contig assembly and ignored scaffolding issues, misassembly is an 515 | especially significant concern for environmental metagenomics, where 516 | experimental validation of assemblies is virtually impossible. 517 | However, our observation that k-mers from highly connected graph 518 | regions are generally not present in contigs suggests that these 519 | particular artifacts do not create false assemblies at a high rate. 520 | 521 | \subsection*{Filtered assemblies retained most reference genes} 522 | 523 | The advantages of removing highly connected sequences must be balanced 524 | against consequences to resulting assemblies. We compared several 525 | metagenome assemblies before and after the removal of these sequences. 526 | In comparing the simulated dataset's assemblies, the removal of highly 527 | connected sequences resulted in very little loss of annotated 528 | reference genes (less than 1\% total) and some loss of assembled contigs 529 | ($\sim$ 15\% of the final assembly). For the rumen metagenome, we 530 | performed a partial evaluation of the assemblies using available draft 531 | reference genomes. Similar to the simulated assemblies, we observed 532 | only a small loss (less than 3\% total) of rumen reference genomes assembled 533 | (Table~\ref{assembly-compare}). In general, for all metagenomes, we observed $\sim$ 25\% 534 | loss in assembly after removing highly connected sequences, much more 535 | than observed in assemblies of reference genes and genomes in the 536 | simulated and rumen datasets. Some of this loss could be beneficial, 537 | resulting from removal of sequencing artifacts. In addition, trimming 538 | or removing reads from already low-coverage data sets could result in 539 | the loss of contigs due to the length cutoff we use; as observed 540 | above, most of these highly connected k-mers fall at the ends of 541 | contigs, and removing them could shorten the contigs enough to lose 542 | them from our assembly. It is also possible, of course, that our 543 | approach removes sequences which can accurately be assembled, but we 544 | cannot evaluate this in the absence of reference genomes. 545 | 546 | \subsection*{Filtered reads can be assembled more efficiently} 547 | 548 | Our original motivation for analyzing connectivity was to assess the 549 | practicality of partitioning metagenomes for later assembly, which can 550 | dramatically reduce the memory requirements for assembly 551 | \cite{Pell:2012cq}. Not only did removal of highly connected sequences 552 | eliminate problematic sequences, but it resulted in the dissolution 553 | of the largest component and allowed us to partition the metagenomes. 554 | 555 | We compared the combined assembly of the partitioned sets of filtered 556 | reads to the original lump dataset, for several assemblers. For the 557 | partitioned reads, we were able to assemble subsets of reads in 558 | parallel, resulting in significantly reduced time and memory 559 | requirements for assembly (Table~\ref{assembly-stats}). In the case of the largest soil 560 | metagenome (containing over 500 million reads), we could not complete 561 | the Meta-IDBA assembly of the unfiltered reads in even 100 GB of 562 | memory, but after removing highly connected sequences and 563 | partitioning, the assembly could be completed in less than 2 GB of 564 | memory. Using partitioned sets of reads for all metagenomes, we were 565 | also able to efficiently complete multiple k-mer length assemblies 566 | (demonstrated with Velvet) and subsequently merge resulting assembled 567 | contigs. For unfiltered datasets, this was either impossible (due to 568 | memory limitations) or impractical (due to excessive processing time). 569 | 570 | 571 | \section*{Conclusion} 572 | 573 | In this study, we characterize the connectivity of sequences in 574 | several metagenomes to detect and characterize a set of likely 575 | sequencing artifacts. These artifacts are surprisingly abundant, 576 | comprising 5-13\% of the total unique sequence in real data sets. 577 | Moreover, they have a significant impact on the overall graph 578 | connectivity of the data sets, leading to components containing as 579 | many as 75\% of the reads in the human gut data set. 580 | 581 | Despite the prevalence and impact of these sequences, removal of the 582 | highly connected k-mers at the heart of these components leads to 583 | assemblies that are significantly but not catastrophically smaller 584 | than the original assemblies. The original unfiltered assemblies 585 | contain the majority of the filtered assemblies, while the filtered 586 | assemblies generally contain 70-94\% of the unfiltered assemblies. 587 | The variability in these statistics between the different assemblers 588 | (Table~\ref{assembly-stats}) demonstrates that the assemblers have at least as large an 589 | effect on the content of the assemblies as our filtering procedure. 590 | 591 | We cannot reach strong conclusions about the impact of these highly 592 | connected sequences on the correctness of the assembled contigs. In 593 | particular, in the absence of complex metagenomes that have been 594 | characterized by approaches other than short-read shotgun approaches, 595 | we have no very high quality positive control. However, we present 596 | evidence that these highly connected sequences primarily affect the 597 | ends of contigs and thus are unlikely to cause incorrect contig 598 | assembly with high frequency. 599 | 600 | Our original motivation in exploring metagenome connectivity was to 601 | enable partitioning, an approach that leads to substantially greater 602 | scalability of the assembly procedure. In this respect, we were successful. 603 | By applying partitioning to filtered metagenome data, we were able to 604 | reduce the maximum memory requirements of assembly (including the 605 | filtering stage) to well below 48 GB of RAM in all cases. This 606 | enables the use of commodity ``cloud'' computing for all of our 607 | samples \cite{Angiuoli:2011hd}. The decreased computational 608 | requirements for assembly also enabled ready evaluation of different 609 | assemblers and assembly parameters; as metagenome datasets grow 610 | increasingly larger, this ability to efficiently analyze datasets and 611 | evaluate multiple assemblies will be increasingly important. 612 | 613 | More generally, our results demonstrate that metagenome assembly is 614 | still at an early stage of technology development, particularly for 615 | low-coverage data sets. Different assemblers and different filtering 616 | techniques yield substantially different assembly statistics on these 617 | data sets. Moreover, there are likely to be additional sources of 618 | sequencing artifacts lurking within large sequencing data sets, 619 | suggesting that more and better computational filtering and validation 620 | approaches need to be developed as environmental metagenomics moves 621 | forward. Evaluating the assembly graph connectivity created by reads 622 | will be a useful approach in the future. 623 | 624 | \section*{Methods} 625 | 626 | \subsection*{Metagenomic datasets} 627 | All datasets, with the exception of the agricultural soil metagenome, 628 | originate from previously published datasets. Rumen-associated 629 | sequences (Illumina) were randomly selected from the rumen metagenome (read length 36 - 125 bp) 630 | available at ftp://ftp.jgi-psf.org/pub/rnd2/Cow\_Rumen 631 | \cite{Hess:2011p686}. Human-gut associated sequences (Illumina) of 632 | samples MH0001 through MH0010 were obtained from 633 | \\*ftp://public.genomics.org.cn/BGI/gutmeta/ Raw\_Reads 634 | \cite{Qin:2010p189} (read length ~44 bp). The simulated high complexity, high coverage 635 | dataset was previously published \cite{Pignatelli:2011p742}. Soil metagenomes (read lengths 76-113 bp) are in the SRA (SRX099904 and SRX099905). All 636 | reads used in this study, with the exception of those from the simulated 637 | metagenome, were quality-trimmed for Illumina's read segment quality 638 | control indicator, where a quality score of 2 indicates that all 639 | subsequent regions of the sequence should not be used. After 640 | quality-trimming, only reads with lengths greater than 30 bp were 641 | retained. All quality trimmed datasets, including the previously 642 | unpublished agricultural soil metagenome, are available on a public 643 | Amazon EC2 snapshot (snap-ab88dfdb). The sequencing coverage of each 644 | metagenome was estimated as the fraction of reads which could be 645 | aligned to assembled contigs with lengths greater than 500 bp. For 646 | the coverage estimates, an assembly of each metagenome was performed 647 | using Velvet (v1.1.02) with the following parameters: K=33, exp 648 | cov=auto, cov cutoff=0, no scaffolding. Reads were aligned to 649 | assembled contigs with Bowtie (v0.12.7), allowing for a maximum of two 650 | mismatches. 651 | 652 | \subsection*{de Bruijn graph analysis and partitioning software} 653 | 654 | We used the probabilistic de Bruijn graph representation previously described by \cite{Pell:2012cq} to store and partition the metagenome assembly 655 | graphs. The khmer and screed software packages are required for the analysis, 656 | and the versions used for this publication are available at {\sf https://github.com/ged-lab/khmer/tree/2012-assembly-artifacts} and {\sf https://github.com/ged-lab/screed/tree/2012-assembly-artifacts}. 657 | 658 | For metagenomes in this study, we used 4 x 48e9 bit bloom 659 | filters (requiring 24 GB RAM) to store the assembly graphs. The data processing 660 | pipeline used for this analysis is available for public use on the Amazon Web Services public EBS snapshot snap-ab88dfdb: data-in-paper/lumps and 661 | method-examples/0.partitioning-into-lump. 662 | 663 | %\subsection*{Local graph density and identifying highly connected k-mers} 664 | 665 | The local graph density was calculated as the number of 666 | k-mers within a distance of N nodes divided by N. In this 667 | study, N was equal to 10. For the largest metagenomes, the human gut 668 | and large soil datasets, local graph density was calculated on a 669 | randomly chosen subset of reads because of computational limitations. 670 | 671 | To identify specific highly connected sequences within the lump 672 | assembly graphs, graph traversal to a distance of 40 nodes was 673 | attempted from marked waypoints. If more than 200 k-mers were found 674 | within this traversal were identified (i.e. a graph density $> 5$), all 675 | k-mers within this traversal were marked. If the same k-mers were consistently identified 676 | in other graph traversals, up to five times, the k-mer was flagged as 677 | a highly connected sequence. Aligning these k-mers to original 678 | sequencing reads, we identified the position-specific location of 679 | these k-mers. Data and examples of scripts used for this analysis are 680 | available on the Amazon EC2 public snapshot: 681 | data-in-paper/density-bias, data-in-paper/hc-kmer-bias, 682 | method-examples/1.density-analysis, 683 | method-examples/2.identifying-hc-kmers, and 684 | method-examples/3.hc-kmer-analysis. 685 | 686 | We identified the sources of highly connected k-mers from the 687 | simulated metagenome by aligning them against reference genes 688 | originating from the 112 source genomes using Bowtie (v0.12.7) 689 | requiring exact matches. Highly connected k-mers shared between all 690 | the metagenomes were also aligned against the NCBI non-redundant 691 | genome database (ftp://ftp.ncbi.nih.gov/blast/db, March, 1, 2011) 692 | using blastn \cite{Altschul:1990p1335}, requiring an exact match over 693 | the entire k-mer. 694 | 695 | We also identified the subset of highly connected 32-mers which were 696 | present greater than 50 times within lumps. Data used for this 697 | analysis are available on the Amazon EC2 public snapshot: 698 | data-in-paper/lumps/HC-kmers/HA-HC-kmers and 699 | method-examples/4.abundant-hc-kmers. These high abundance, highly 700 | connected sequences were aligned to sequencing reads to demonstrate 701 | position specific variation as described above. We evaluated the 702 | existence of short k-mer (k=5) motifs within high abundance, highly 703 | connected k-mers which did not have an exact match to the NCBI 704 | non-redundant database. Each identified 32-mer was broken up into 705 | shorter 5-mers, and the frequency of each unique 5-mer was calculated. 706 | Next, each unique 5-mer was ranked based on its abundance, from high 707 | to low, and the cumulative percentage of total 5-mers is shown in the 708 | resulting rank-abundance plot (Fig~\ref{five-mer}). 709 | 710 | \subsection*{\emph{De novo} metagenomic assembly} 711 | 712 | The lump within each dataset was assembled and referred to as the 713 | ``unfiltered assembly''. Additionally, highly connected sequences 714 | identified as described above were were trimmed from sequencing reads 715 | and the remaining reads partitioned and assembled, resulting in the 716 | ``filtered assembly''. \emph{De novo} metagenomic assembly of reads 717 | was completed with Velvet (v1.1.02) with the following parameters: 718 | velveth -short -shortPaired (if applicable to the dataset) and velvetg 719 | -exp\_cov auto -cov\_cutoff 0 -scaffolding no \cite{Zerbino:2008p665}. 720 | For the small and medium soil, rumen, and simulated datasets, Velvet 721 | assemblies were performed at K=25-49, resulting contigs were 722 | dereplicated to remove contigs with 99\% similarity using CD-HIT (v 723 | 4.5.6, \cite{Li:2001p1337}), and final contigs were merged with 724 | Minimus (Amos v3.1.0, \cite{Sommer:2007p1253}). For the largest soil 725 | and human gut metagenomes, assemblies were performed at only K=33 due 726 | to the size of the datasets and memory limitations. Additional 727 | assemblies were performed with Meta-IDBA (v0.18) \cite{Peng:2011p898} 728 | : --mink 25 --maxk 50 --minCount 0 and with SOAPdenovo: -K 31 -p 8 729 | max\_rd\_len=200 asm\_flags=1 reverse\_seq=0. After removal of highly 730 | connected k-mers in metagenomic lumps, each filtered lump was 731 | partitioned into separate disconnected subgraphs. Multiple subgraphs 732 | were grouped together such that assembly could be performed in 733 | parallel on groups of sequences. Identical assembly parameters and 734 | methods as described above were used for these assemblies. Unfiltered 735 | and filtered assemblies were compared using the total number of 736 | contigs, total assembly length, and maximum contig size. Additional, 737 | the coverage of each assembly was calculated through estimating the 738 | average base pair coverage of the BLAST alignment of each assembly to 739 | one another (E-value less than 10$^{-5}$) or, in the case of the 740 | simulated and rumen assemblies, to reference genomes. The simulated 741 | and rumen reference genomes were previously published in 742 | \cite{Hess:2011p686} and \cite{Pignatelli:2011p742}, respectively. 743 | Resulting assemblies are available on the Amazon EC2 public snapshot: 744 | /data-in-paper/assembly*. 745 | 746 | We examined incorporation and the location of the identified high 747 | abundant, highly connecting k-mers within assembled contigs. 748 | Incorporation of these sequences was evaluated by dividing assembled 749 | contigs into words of 32 bp length and identifying exact matches 750 | between sequences and contig fragments. The location of these k-mers 751 | within assembled unfiltered contigs was examined by dividing each 752 | contig into 100 equally-sized regions. The fraction of highly 753 | connecting k-mers which aligned exactly to each region was calculated 754 | for each metagenome. Data and examples of scripts used for this 755 | analysis are available on the Amazon EC2 public snapshot: 756 | method-examples/5.hc-kmer-contigs/. 757 | 758 | \section*{Acknowledgements} 759 | 760 | We thank Nick Loman and Lex Nederbragt for their helpful comments on 761 | the paper. 762 | 763 | \bibliography{artifacts-bib} 764 | 765 | 766 | \pagebreak 767 | \section*{Tables} 768 | 769 | \begin{table}[h] 770 | \centering 771 | \caption{The original size and proportion of highly connective 32-mers in the largest subset of partitioned reads (``lump'') in several medium to high complexity metagenomes. Read coverage was estimated with the number of aligned sequencing reads to Velvet-assembled contigs (K=33). The dominant lump, or largest component of each metagenome assembly graph, was found to contain highly connecting (HC) k-mers responsible for high local graph density. High density nodes refer to nodes with graph density greater than 20.} 772 | \begin{tabular}{l c c c c c c } 773 | & Sm Soil & Med Soil & Large Soil & Rumen & Human Gut & Sim \\ 774 | \hline 775 | Total Reads (millions) & 50.0 & 100.0 & 520.3 & 50.0 & 350.0 & 9.2 \\ 776 | Mapped to assembly (percent) & 1.4 & 4.7 & 5.6 & 10.3 & 3.5 & 14.8 \\ 777 | Reads in Lump (millions) & 3.0 & 15.0 & 182.2 & 10.3 & 263 & 0.5 \\ 778 | Lump Fraction (\%) & 7\% & 15\% & 35\% & 21\% & 75\% & 5\%\\ 779 | HC 32-mers (millions) & 6.4 & 33.3 & 230.4 & 25.4 & 136.6 & 0.4\\ 780 | Total 32-mers (million) & 84.9 & 326.5 & 2,198.1 & 201.5 & 860.6 & 11.6\\ 781 | Fraction of HC 32-mers (\%) & 8\% & 10\% & 10\% & 13\% & 16\% & 3\% \\ 782 | High Density Nodes (\%) & 50\% & 37\% & 40\% & 22\% & 28\% & 17\% \\ 783 | \hline 784 | \end{tabular} 785 | \label{data-summary} 786 | \end{table} 787 | 788 | \pagebreak 789 | \begin{table}[h] 790 | \caption{Total number of contigs, assembly length, and maximum contig size was estimated for metagenomic datasets with multiple assemblers, as well as memory and time requirements of unfiltered read assembly (UF). Filtered reads (F) were processed in 24 GB of memory, and after filtering required less than 2 GB of memory to assemble. Velvet assemblies of the unfiltered human gut and large soil datasets (marked as *) could only be completed with K=33 due to computational limitations. The Meta-IDBA assembly of the large soil metagenome could not be completed in less than 100 GB.} 791 | \begin{tabular}{l l l l} 792 | \hline 793 | &UF Assembly &F Assembly &UF Requirements \\ 794 | & (contigs / length / max size) & (contigs / length / max size) & Memory (GB)/Time (h)\\ 795 | \hline 796 | \emph{Velvet}\\ 797 | Small Soil &25,470 / 16,269,879 / 118,753 &17,636 / 10,578,908 / 13,246 &5 / 4\\ 798 | Medium Soil &113,613 / 81,660,678 / 57,856 &79,654 / 54,424,264 / 23,663 &18 / 21\\ 799 | Large Soil &554,825 / 306,899,884 / 41,217 &290,018 / 159,960,062 / 41,423 &33 / 12*\\ 800 | Rumen &92,044 / 74,813,072 / 182,003 &72,705 / 49,518,627 / 34,683 &11 / 14\\ 801 | Human Gut &543,331 / 234,686,983 / 85,596 &203,299 / 181,934,800 / 145,740 &76 / 8*\\ 802 | Simulated &11,204 / 6,506,248 / 5,151 &9,859 / 5,463,067 / 6,605 &\textless1 / \textless1\\ 803 | \end{tabular} 804 | \medskip 805 | \begin{tabular}{l l l l} 806 | \emph{MetaIDBA} \\ 807 | Small Soil &15,739 / 9,133,564 / 37,738 &12,513 / 7,012,036 / 17,048 &\textless1 / \textless 1 \\ 808 | Medium Soil &76,269 / 45,844,975 / 37,738 &52,978 / 30,040,031 / 18,882 &2 / 2\\ 809 | Large Soil &395,122 / 228,857,098 / 37,738 &N/A &\textgreater116 / incomplete\\ 810 | Rumen &60,330 / 47,984,619 / 54,407 &48,940 / 33,276,502 / 22,083 &12 / 3\\ 811 | Human Gut &173,432 / 211,067,996 / 106,503 &132,614 / 142,139,101 / 85,539 &58 / 15\\ 812 | Simulated &8,707 / 4,698,575 / 5,113 &7,726 / 4,078,947 / 3,845 &\textless1 / \textless1\\ 813 | \end{tabular} 814 | \medskip 815 | \begin{tabular}{l l l l} 816 | \emph{SOAPdenovo} \\ 817 | Small Soil &14,275 / 7,100,052 / 37,720 &12,801 / 6,343,110 / 13,246 &3 / \textless1\\ 818 | Medium Soil &66,640 / 33,321,411 / 28,695 &56,023 / 27,880,293 / 15,721 &10 / \textless1\\ 819 | Large Soil &412,059 / 215,614,765 / 32,514 &334,319 / 171,718,154 / 41,423 &48 / 11\\ 820 | Rumen &62,896 / 40,792,029 / 22,875 &55,975 / 34,540,861 / 19,044 &5 / \textless 1\\ 821 | Human Gut &190,963 / 171,502,574 / 57,803 &161,795 / 139,686,630 / 56,034 &35 / 5\\ 822 | Simulated &6,322 / 2,940,509 / 3,786 &6,029 / 2,821,631 / 3,764 &\textless1 / \textless1\\ 823 | \end{tabular} 824 | \label{assembly-stats} 825 | \end{table} 826 | 827 | \pagebreak 828 | \begin{table}[h] 829 | \caption{Comparison of unfiltered (UF) and filtered (F) assemblies of various metagenome lumps using Velvet, SOAPdenovo, and Meta-IDBA assemblers. Assemblies were aligned to each other, and coverage was estimated (columns 1-2). Simulated and rumen assemblies were aligned to available reference genomes (RG) (columns 3-4).} 830 | Velvet Assembler \\ 831 | \begin{tabular}{l c c c c} 832 | \hline 833 | & Cov. of UF by F & Cov. of F by UF & Cov. of RG by UF & Cov. of RG by F \\ 834 | \hline 835 | Simulated &85.4\% &99.4\% &5.4\% &4.6\%\\ 836 | Small Soil &74.7\% &98.8\% &- &-\\ 837 | Medium Soil &75.6\% &98.4\% &- &-\\ 838 | Large Soil &50.9\% &86.6\% &- &-\\ 839 | Rumen &75.9\% &98.8\% &17.5\% &14.8\%\\ 840 | Human Gut &80.0\% &89.1\% &- &-\\ 841 | \end{tabular} 842 | \medskip 843 | Meta-IDBA Assembler \\ 844 | \begin{tabular}{l c c c c} 845 | \hline 846 | & Cov. of UF by F & Cov. of F by UF & Cov. of RG by UF & Cov. of RF by F \\ 847 | \hline 848 | Simulated &87.4\% &94.4\% &4.7\% &4.1\%\\ 849 | Small Soil &75.7\% &94.2\% &- &-\\ 850 | Medium Soil &67.7\% &94.8\% &- &-\\ 851 | Large Soil &N/A &N/A &- &-\\ 852 | Rumen &70.8\% &95.0\% &17.5\% &14.8\%\\ 853 | Human Gut &74.4\% &99.4\% &- &-\\ 854 | \end{tabular} 855 | \medskip 856 | SOAPdenovo Assembler \\ 857 | \begin{tabular}{l c c c c} 858 | \hline 859 | & Cov. of UF by F & Cov. of F by UF & Cov. of RG by UF & Cov. of RF by F \\ 860 | \hline 861 | Simulated &94.0\% &97.0\% &3.0\% &2.9\%\\ 862 | Small Soil &86.8\% &96.1\% &- &-\\ 863 | Medium Soil &82.4\% &96.0\% &- &-\\ 864 | Large Soil &78.9\% &94.5\% &- &-\\ 865 | Rumen &85.2\% &97.8\% &14.9\% &13.6\%\\ 866 | Human Gut &85.4\% &99.3\% &- &-\\ 867 | \end{tabular} 868 | \label{assembly-compare} 869 | \end{table} 870 | 871 | \pagebreak 872 | \begin{table}[h] 873 | \caption{Total number of abundant (greater than 50x) highly connective sequences incorporated into unfiltered assemblies} 874 | \begin{tabular}{l c c c} 875 | & Velvet & SOAPdenovo & MetaIDBA \\ 876 | \hline 877 | Small Soil & 0 (0.0\%) & 41 (0.0\%) & 8,717 (0.1\%) \\ 878 | Medium Soil & 32,328 (0.1\%) & 852 (0.0\%) & 23,881 (0.1\%) \\ 879 | Large Soil & 643,071 (0.3\%) & 279,519 (0.1\%) & N/A \\ 880 | Rumen & 45,721 (0.2\%) & 14,858 (0.1\%) & 33,046 (0.1\%) \\ 881 | Human Gut & 4,661,447 (3.4\%) & 1,749,347 (1.3\%) & 5,528,054 (4.0\%) \\ 882 | Simulated & 5,118 (1.4\%) & 0 (0.0\%) & 5,480 (1.5\%) \\ 883 | \hline 884 | \end{tabular} 885 | \label{assembly-stoptags} 886 | \end{table} 887 | 888 | \pagebreak 889 | \begin{table}[h] 890 | \caption{Annotations (against 112 reference genomes) of highly-connecting (HC) sequences identified in the simulated metagenome.} 891 | \begin{tabular}{l c} 892 | \hline 893 | & Number of HC sequences with annotation\\ 894 | \hline 895 | ABC transporter-like protein &306\\ 896 | Methyl-accepting chemotaxis sensory transducer &210\\ 897 | ABC transporter &173\\ 898 | Elongation factor Tu &94\\ 899 | Chemotaxis sensory transducer &51\\ 900 | ABC transporter ATP-binding protein &44\\ 901 | Diguanylate cyclase/phosphodiesterase &36\\ 902 | ATPase &36\\ 903 | S-adenosyl-L-homocysteine hydrolase &36\\ 904 | Adenosylhomocysteine And downstream NAD binding &36\\ 905 | Ketol-acid reductoisomerase &34\\ 906 | S-adenosylmethionine synthetase &34\\ 907 | Elongation factor G &34\\ 908 | ABC transporter ATPase &33\\ 909 | \end{tabular} 910 | \label{sim-stoptags} 911 | \end{table} 912 | 913 | \pagebreak 914 | 915 | \begin{table} 916 | \caption{Annotations (against NCBI-nr database) of highly-connecting (HC) sequences identified in thee three soil, rumen, and human gut metagenomes.} 917 | \begin{tabular}{l c} 918 | \hline 919 | & Number of HC sequences with annotation \\ 920 | \hline 921 | Translation elongation factor/GTP-binding protein LepA &11\\ 922 | S-adenosylmethionine synthetase &8\\ 923 | Aspartyl-tRNA synthetase &8\\ 924 | Malate dehydrogenase &7\\ 925 | V-type H(+)-translocating pyrophosphatase &6\\ 926 | Acyl-CoA synthetase &6\\ 927 | NAD synthetase &5\\ 928 | Ribonucleotide reductase of class II &4\\ 929 | Ribityllumazine synthase &4\\ 930 | Heavy metal translocating P-type ATPase, copA &3\\ 931 | GyrB &3\\ 932 | Glutamine amidotransferase chain of NAD synthetase &3\\ 933 | ChaC family protein &3\\ 934 | \end{tabular} 935 | \label{meta-stoptags} 936 | \end{table} 937 | 938 | \pagebreak 939 | 940 | \pagebreak 941 | 942 | \section*{Figure Legends} 943 | 944 | \begin{figure}[h] 945 | %\center 946 | %{\includegraphics[width=5in]{./figure1-density.pdf}} 947 | \caption{The extent to which average local graph density varies by read position is shown for the lump of various datasets.} 948 | \label{density-pos} 949 | \end{figure} 950 | 951 | \begin{figure}[h] 952 | \center 953 | \begin{subfigure}{.5\textwidth} 954 | %\centering 955 | %\includegraphics[width=\textwidth]{./position_read_stoptags_sim.pdf} 956 | \end{subfigure} 957 | \begin{subfigure}{.5\textwidth} 958 | %\centering 959 | %\includegraphics[width=\textwidth]{./position_read_stoptags_soils.pdf} 960 | \end{subfigure} 961 | \begin{subfigure}{.5\textwidth} 962 | %\centering 963 | %\includegraphics[width=\textwidth]{./position_read_stoptags_rumen_human_gut.pdf} 964 | \end{subfigure} 965 | \caption{The extent to which highly connecting k-mers (solid lines) and the subset of highly abundant (greater than 50) k-mers (dashed lines) are present at specific positions within sequencing reads for various metagenomes.} 966 | \label{pos-spec} 967 | \end{figure} 968 | 969 | \begin{figure} 970 | %\center{\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{./figure3-contigs.pdf}} 971 | \caption{When incorporated into an assembly, abundant (greater than 50 times), highly connecting sequences (k-mers) were disproportionately present at the ends of contigs. The total fraction of highly connecting k-mers which are incorporated into each contig binned region.} 972 | \label{stoptag-contig} 973 | \end{figure} 974 | 975 | %\begin{figure} 976 | %\center{\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{./figure4-contigs.pdf}} 977 | %\caption{When incorporated into an assembly, abundant (greater than 50 times), highly connecting sequences (k-mers) were disproportionately present at the ends of contigs. We show the total fraction of all k-mers which are identified as high abundance/high connectivity sequences and incorporated into each contig.} 978 | %\end{figure} 979 | 980 | \begin{figure} 981 | %\center{\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{./figure5-5mers.pdf}} 982 | \caption{Rank abundance plot of 5-mers present in abundant, highly connected sequences in various datasets.} 983 | \label{five-mer} 984 | \end{figure} 985 | \end{document} 986 | --------------------------------------------------------------------------------