From def37d062156f0173eb3c24d480768489927c840 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 20 Sep 2011 23:13:59 +0000 Subject: new tikz+lualatex package pgfmolbio (20sep11) git-svn-id: svn://tug.org/texlive/trunk@24040 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/lualatex/pgfmolbio/README | 19 + .../doc/lualatex/pgfmolbio/SampleScf.scf | Bin 0 -> 135018 bytes .../doc/lualatex/pgfmolbio/pgfmolbio.pdf | Bin 0 -> 386065 bytes .../source/lualatex/pgfmolbio/pgfmolbio.dtx | 1557 ++++++++++++++++++++ .../source/lualatex/pgfmolbio/pgfmolbio.ins | 94 ++ .../lualatex/pgfmolbio/pgfmolbio.chromatogram.lua | 462 ++++++ .../lualatex/pgfmolbio/pgfmolbio.chromatogram.tex | 185 +++ .../tex/lualatex/pgfmolbio/pgfmolbio.sty | 50 + 8 files changed, 2367 insertions(+) create mode 100644 Master/texmf-dist/doc/lualatex/pgfmolbio/README create mode 100644 Master/texmf-dist/doc/lualatex/pgfmolbio/SampleScf.scf create mode 100644 Master/texmf-dist/doc/lualatex/pgfmolbio/pgfmolbio.pdf create mode 100644 Master/texmf-dist/source/lualatex/pgfmolbio/pgfmolbio.dtx create mode 100644 Master/texmf-dist/source/lualatex/pgfmolbio/pgfmolbio.ins create mode 100644 Master/texmf-dist/tex/lualatex/pgfmolbio/pgfmolbio.chromatogram.lua create mode 100644 Master/texmf-dist/tex/lualatex/pgfmolbio/pgfmolbio.chromatogram.tex create mode 100644 Master/texmf-dist/tex/lualatex/pgfmolbio/pgfmolbio.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/lualatex/pgfmolbio/README b/Master/texmf-dist/doc/lualatex/pgfmolbio/README new file mode 100644 index 00000000000..c2f28947af5 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/pgfmolbio/README @@ -0,0 +1,19 @@ +The pgfmolbio package +------------------------------------------------------------------------------ +This package is released under the LaTeX Project Public License v1.3c or later +(see http://www.latex-project.org/lppl.txt). + + +The experimental package pgfmolbio draws graphs typically found in +molecular biology texts. Currently, the package contains one module, +which creates DNA sequencing chromatograms from files in standard +chromatogram format (scf). + +The package requires pgf/TikZ (http://tug.ctan.org/pkg/pgf) +and LuaTeX (http://www.luatex.org). + +Installation: Run pgfmolbio.ins through LaTeX and follow the instructions. + +-- +Wolfgang Skala +September 20th, 2011 diff --git a/Master/texmf-dist/doc/lualatex/pgfmolbio/SampleScf.scf b/Master/texmf-dist/doc/lualatex/pgfmolbio/SampleScf.scf new file mode 100644 index 00000000000..89dde13d67f Binary files /dev/null and b/Master/texmf-dist/doc/lualatex/pgfmolbio/SampleScf.scf differ diff --git a/Master/texmf-dist/doc/lualatex/pgfmolbio/pgfmolbio.pdf b/Master/texmf-dist/doc/lualatex/pgfmolbio/pgfmolbio.pdf new file mode 100644 index 00000000000..749c9ec9341 Binary files /dev/null and b/Master/texmf-dist/doc/lualatex/pgfmolbio/pgfmolbio.pdf differ diff --git a/Master/texmf-dist/source/lualatex/pgfmolbio/pgfmolbio.dtx b/Master/texmf-dist/source/lualatex/pgfmolbio/pgfmolbio.dtx new file mode 100644 index 00000000000..ef1a7e930d6 --- /dev/null +++ b/Master/texmf-dist/source/lualatex/pgfmolbio/pgfmolbio.dtx @@ -0,0 +1,1557 @@ +% \iffalse meta-comment +% +% Copyright (C) 2011 by Wolfgang Skala +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% \fi +% +% \iffalse +%\ProvidesPackage{pgfmolbio}[2011/09/20 v0.1 Molecular biology graphs with TikZ] +%\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%\ProvidesFile{pgfmolbio.chromatogram.tex}[2011/09/20 v0.1 SCF Chromatograms] +%module("pgfmolbio.chromatogram", package.seeall) +% +%<*driver> +\documentclass[captions=tableheading,cleardoublepage=empty,titlepage=false]{scrreprt} + \setkomafont{title}{\rmfamily\bfseries} + \addtokomafont{sectioning}{\rmfamily} + +\usepackage[english]{babel} + \frenchspacing +\usepackage[hdivide={2cm,*,5cm}]{geometry} +\usepackage{fontspec} +\usepackage[dvipsnames]{xcolor} +\usepackage{array,booktabs} + +\usepackage{ydoc-doc,ydoc-code,ydoc-desc,ydoc-expl} + \AlsoImplementation + \hypersetup{% + colorlinks=false,% + bookmarksnumbered,% + bookmarksopen,% + bookmarksopenlevel=1,% + breaklinks,% + pdfborder=0 0 0,% + pdfhighlight=/N,% + } + \AtBeginDocument{% + \lstMakeShortInline[style=latex-expl,basicstyle=\ttfamily]|% + \lstMakeShortInline[style=lua-doc,basicstyle=\ttfamily,frame=none]§% + } + \makeatletter + \def\DescribeOption#1#2{% + \gdef\OptDefault{\textcolor{black!50}{Default:}~\texttt{#2}}% + \DescribeMacros + \let\DescribeMacros\y@egroup + \optionalon + \def\after@Macro@args{\y@egroup\PrintOptions\endgroup}% + \hbox\y@bgroup + \texttt{\textcolor{opt}{#1}~=}% + \ydoc@macrocatcodes + \macroargsstyle + \read@Macro@arg% + } + \def\PrintOptions{% + \par\vspace\beforedescskip + \begingroup + \sbox\@tempboxa{\descframe{\usebox{\descbox}}}% + \Needspace*{\dimexpr\ht\@tempboxa+2\baselineskip\relax}% + \par\noindent + \ifdim\wd\@tempboxa>\dimexpr\linewidth-2\descindent\relax + \makebox[\linewidth][c]{\usebox\@tempboxa}% + \else + \hspace*{\descindent}% + \usebox\@tempboxa + \fi + \endgroup + \par\medskip\makebox{\kern10pt\OptDefault} + \vspace\afterdescskip + \par\noindent + } + \def\PrintExample{% + \begingroup + \BoxExample + \@tempdima\textwidth + \advance\@tempdima-\wd\examplecodebox\relax + \advance\@tempdima-\wd\exampleresultbox\relax + \advance\@tempdima-1cm\relax + \ifdim\@tempdima>0pt + \@tempdimb\wd\exampleresultbox + \advance\@tempdimb2\fboxsep + \advance\@tempdimb2\fboxrule + \par\bigskip\noindent% + \centerline{% + \parbox[c]{\@tempdimb}{\fbox{\usebox\exampleresultbox}} + \hskip1cm + \parbox[c]{\wd\examplecodebox}{\usebox\examplecodebox} + }% + \par\bigskip + \else + \par\bigskip\noindent% + \vbox{% + \centerline{\fbox{\usebox\exampleresultbox}}% + \vspace{\bigskipamount}% + \centerline{\usebox\examplecodebox}% + }% + \par\bigskip + \fi + \endgroup + } + \makeatother + \def\ometa#1{{\optional\meta{#1}}} + \lstdefinestyle{exampleextract}{gobble=2} + \def\ydoclistingssettings{\lstset{style=latex-expl}} + \definecolor{opt}{named}{OliveGreen} + +\lstdefinestyle{latex-expl}{ + language=[AlLaTeX]TeX, + columns=fullflexible, + tabsize=2, + numbers=left, + numberstyle=\sffamily\tiny\color{gray}, + numbersep=5pt, + firstnumber=auto, + prebreak={}, + basicstyle=\ttfamily\small, + texcsstyle=*\color{MidnightBlue}, + texcsstyle=*[2]\color{ProcessBlue}, + keywordstyle=\color{RedOrange}, + emphstyle=\color{opt}, + commentstyle=\itshape\color{black!50}, + morekeywords={tikzpicture}, + moretexcs=[1]{ + @empty,@ifundefined,definecolor,directlua,draw, + pgfkeys,pgfkeysdef,pgfqkeys,ProcessOptions,RequireLuaModule, + useasboundingbox,usetikzlibrary + }, + moretexcs=[2]{ + @pmb@chr@getkey,@pmb@chr@keydef,@pmb@chr@stylekeydef,pmb@chr@tikzpicturefalse,pmb@chr@tikzpicturetrue, + @pmb@getkey,@tempa,ifpmb@chr@showbasenumbers,ifpmb@chr@tikzpicture, + ifpmb@loadmodule@chromatogram,pgfmolbioset,pmb@loadmodule@chromatogramtrue,pmbchromatogram + }, + emph={ + A,base,bases,baseline,C,canvas,coordinate, + distance,drawn,format,function,G,height, + label,labels,length,line,number,numbers,per, + probability,probabilities,range,sample,samples,show, + skip,string,style,T,text,tick,ticks,trace,traces,unit,x,y + } +} + +\lstdefinestyle{latex-doc}{ + style=latex-expl, + numbers=none, + breaklines, + frame=single, + frameround=tttt, + rulecolor=\color{black!50} +} + +\lstdefinestyle{lua-doc}{ + language=lua, + columns=fullflexible, + tabsize=2, + basicstyle=\ttfamily\small\color{ForestGreen}, + keywordstyle=\color{MidnightBlue}, + keywordstyle=[2]\color{ProcessBlue}, + stringstyle=\color{Red}, + identifierstyle=\color{Black}, + emphstyle=\color{Violet}, + showstringspaces=false, + numbers=none, + breaklines, + frame=single, + frameround=tttt, + rulecolor=\color{black!50}, + belowskip=\bigskipamount +} + +\lstdefinelanguage{lua}{ + morekeywords={and,break,do,else,elseif,end,false,for,function,if,in,local, + nil,not,or,repeat,return,then,true,until,while}, + morekeywords=[2]{arg,assert,collectgarbage,dofile,error,_G,format,getfenv, + getmetatable,ipairs,load,loadfile,loadstring,next,pairs,pcall,print, + rawequal,rawget,rawset,select,setfenv,setmetatable,tonumber,tostring, + type,unpack,_VERSION,xpcall}, + morekeywords=[2]{coroutine.create,coroutine.resume,coroutine.running, + coroutine.status,coroutine.wrap,coroutine.yield}, + morekeywords=[2]{module,require,package.cpath,package.load,package.loaded, + package.loaders,package.loadlib,package.path,package.preload, + package.seeall}, + morekeywords=[2]{string.byte,string.char,string.dump,string.find, + string.format,string.gmatch,string,gsub,string.len,string.lower, + string.match,string.rep,string.reverse,string.sub,string.upper}, + morekeywords=[2]{table.concat,table.insert,table.maxn,table.remove, + table.sort}, + morekeywords=[2]{math.abs,math.acos,math.asin,math.atan,math.atan2, + math.ceil,math.cos,math.cosh,math.deg,math.exp,math.floor,math.fmod, + math.frexp,math.huge,math.ldexp,math.log,math.log10,math.max,math.min, + math.modf,math.pi,math.pow,math.rad,math.random,math.randomseed,math.sin, + math.sinh,math.sqrt,math.tan,math.tanh}, + morekeywords=[2]{io.close,io.flush,io.input,io.lines,io.open,io.output, + io.popen,io.read,io.tmpfile,io.type,io.write,file:close,file:flush, + file:lines,file:read,file:seek,file:setvbuf,file:write}, + morekeywords=[2]{os.clock,os.date,os.difftime,os.execute,os.exit,os.getenv, + os.remove,os.rename,os.setlocale,os.time,os.tmpname}, + morekeywords=[2]{tex.error,tex.sprint}, + emph={baseToSampleIndex,evaluateScfFile,findBasesInStr, + getMinMaxProbability,getRange,printTikzChromatogram, + readInt,readScfFile,setParameters,stdProbStyle}, + sensitive=true, + alsoletter={.:0123456789}, + morecomment=[l]{--}, + morecomment=[s]{--[[}{]]--}, + morestring=[b]{"}, + morestring=[d]{'} +} + +\lstset{style=latex-expl} + +\def\TikZ{Ti\textit{k}Z} + +\usepackage{caption} + \captionsetup{format=plain,indention=1em,labelsep=colon,font={footnotesize,sf},labelfont={bf},skip=0pt} + \makeatletter\@addtoreset{example}{chapter}\makeatother + \renewcommand\theexample{\arabic{chapter}.\arabic{example}} + +\usepackage[chromatogram]{pgfmolbio} +\usetikzlibrary{decorations.pathreplacing} + +\pdfpageattr{/Group <>} + + +\begin{document} + \DocInput{pgfmolbio.dtx} +\end{document} +% +% \fi +% +% +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% \GetFileInfo{pgfmolbio.sty} +% +% \CheckSum{175} +% +% \pagenumbering{roman} +% \title{The \texttt{pgfmolbio} package --\texorpdfstring{\\}{}Molecular Biology Graphs with \TikZ\texorpdfstring{\footnote{This document describes version \fileversion, dated \filedate.}}{}} +% \author{\texorpdfstring{Wolfgang Skala\thanks{Division of Structural Biology, Department of Molecular Biology, University of Salzburg, Austria; \texttt{Wolfgang.Skala@stud.sbg.ac.at}}}{Wolfgang Skala}} +% \date{\filedate} +% \maketitle +% +% \begin{abstract} +% The experimental package \pkg{pgfmolbio} draws graphs typically found in molecular biology texts. Currently, the package contains one module, which creates DNA sequencing chromatograms from files in standard chromatogram format (\file{scf}). Since \file{scf} files are binary, \pkg{pgfmolbio} relies on the Lua\TeX\ engine for converting information from these files into \TikZ\ drawing commands. +% \end{abstract} +% +% \tableofcontents +% +% +% \chapter{Introduction} +% \pagenumbering{arabic} +% +% +% \section{About \texorpdfstring{\pkg{pgfmolbio}}{pgfmolbio}} +% +% Over the decades, \TeX\ has gained popularity across a large number of disciplines. Although originally designed as a mere typesetting system, packages such as \pkg{pgf}\footnote{Tantau, T. (2010). The \TikZ\ and \textsc{pgf} packages. \url{http://ctan.org/tex-archive/graphics/pgf/}.} and \pkg{pstricks}\footnote{van Zandt, T., Niepraschk, R., and Voß, H. (2007). PSTricks: PostScript macros for Generic \TeX. \url{http://ctan.org/tex-archive/graphics/pstricks}.} have strongly extended its \textit{drawing} abilities. Thus, one can create complicated charts that perfectly integrate with the text. +% +% Texts on molecular biology include a range of special graphs, e.\,g. multiple sequence alignments, membrane protein topologies, DNA sequencing chromatograms, plasmid maps, protein domain diagrams and others. The \pkg{texshade}\footnote{Beitz, E. (2000). \TeX shade: shading and labeling multiple sequence alignments using \LaTeXe. \textit{Bioinformatics}~\textbf{16}(2), 135--139.\\\url{http://ctan.org/tex-archive/macros/latex/contrib/texshade}.} and \pkg{textopo}\footnote{Beitz, E. (2000). \TeX topo: shaded membrane protein topology plots in \LaTeXe. \textit{Bioinformatics} \textbf{16}(11), 1050--1051.\\\url{http://ctan.org/tex-archive/macros/latex/contrib/textopo}.} packages cover alignments and topologies, respectively, but packages dedicated to the remaining graphs are absent. Admittedly, one may create those images with various external programs and then include them in the \TeX\ document. Nevertheless, purists (like the author of this document) might prefer a \TeX-based approach. +% +% The \pkg{pgfmolbio} package aims at becoming such a purist solution. In its first development release, \pkg{pgfmolbio} is able to read DNA sequencing files in standard chromatogram format (\file{.scf}) and draw the corresponding chromatogram using routines from \pkg{pgf}'s \TikZ\ frontend. In order to convert the data from the \file{scf} input file to an image, \pkg{pgfmolbio} relies on the Lua scripting language implemented in Lua\TeX. Consequently, the package will not work with traditional engines like pdf\TeX. +% +% Since this is a development release, \pkg{pgfmolbio} presumably includes a number of bugs, and its commands and features are likely to change in future versions. Moreover, the current version is far from complete, but since time is scarce, I am unable to predict when (and if) additional functions become available. Nevertheless, I would greatly appreciate any comments or suggestions. +% +% +% \section{Getting Started} +% +% Before you consider using \pkg{pgfmolbio}, please make sure that both your Lua\TeX\ (at least 0.70.1) and \pkg{pgf} (at least 2.10) installations are up-to-date. Once your \TeX\ system meets these requirements, just load \pkg{pgfmolbio} as usual, i.\,e. by +% +% \DescribeMacro\usepackage[]{pgfmolbio} +% +% The package is divided into \textit{modules}, each of which produces a certain type of graph. Currently, only one \ometa{module} is available: \opt*{chromatogram} allows you to draw DNA sequencing chromatograms as obtained by the Sanger sequencing method. Thus, the only sensible way of including the package is currently |\usepackage[chromatogram]{pgfmolbio}|. +% +% \DescribeMacro\pgfmolbioset[]{} +% The \meta{key-value list} in the mandatory argument of this command allows you to fine-tune the graphs produced by each {\optional\meta{module}} of \pkg{pgfmolbio}. The possible keys are described in the sections on the respective modules. +% +% +% +% +% \chapter{The \texorpdfstring{\opt{chromatogram}}{chromatogram} module} +% +% +% \section{Overview} +% +% The \opt{chromatogram} module draws DNA sequencing chromatograms stored in standard chromatogram format (\file{scf}), which was developed by Simon Dear and Rodger Staden\footnote{Dear, S. and Staden, R. (1992). A standard file format for data from DNA sequencing instruments. \textit{DNA Seq.} \textbf{3}(2), 107--110.}. The documentation for the Staden package\footnote{\url{http://staden.sourceforge.net/}} describes the current version of the \file{scf} format in detail. As far as they are crucial to understanding the Lua code, we will discuss some details of this file format in the documented source code (section~\ref{sec:DocLuaScf}). Note that \pkg{pgfmolbio} only supports \file{scf} version 3.00. +% +% +% \section{Drawing Chromatograms} +% +% \DescribeMacro\pmbchromatogram[]{} +% The \opt{chromatogram} module defines a single command, which reads a chromatogram from an \meta{scf file} and draws it with routines from \TikZ\ (Example~\ref{exa:tikzpicture}). The options, which are set in the \ometa{key-value list}, configure the appearance of the chromatogram. The following sections will elaborate on the available keys. +% \begin{exampletable} +% \caption{} +% \label{exa:tikzpicture} +% \begin{examplecode} +% \begin{tikzpicture} % optional +% \pmbchromatogram{SampleScf.scf} +% \end{tikzpicture} % optional +% \end{examplecode} +% \end{exampletable} +% +% Although you will often put |\pmbchromatogram| into a |tikzpicture| environment, you may actually use the macro on its own. \pkg{pgfmolbio} checks whether the command is surrounded by a |tikzpicture| and adds this environment if necessary. +% +% +% \section{Displaying Parts of the Chromatogram} +% \label{sec:DisplayingParts} +% +% \DescribeOption{sample range}{1 to 500 step 1}' to '[' step ']\relax +% |sample range| selects the part of the chromatogram which \pkg{pgfmolbio} should display. The value for this key consists of two or three parts, separated by the keywords |to| and |step|. The package will draw the chromatogram data between the \meta{lower} and \meta{upper} boundary. There are two ways of specifying these limits: +% \begin{enumerate} +% \item If you enter a number, \pkg{pgfmolbio} includes the data from the \meta{lower} to the \meta{upper} sample point (Example~\ref{exa:LimitsSamplePoints}). A \textit{sample point} represents one measurement of the fluorescence signal along the time axis, where the first sample point has index 1. One peak comprises about 20 sample points. +% \begin{exampletable} +% \caption{} +% \label{exa:LimitsSamplePoints} +% \begin{examplecode} +% \pmbchromatogram[sample range=200 to 600]{SampleScf.scf} +% \end{examplecode} +% \end{exampletable} +% \item If you enter the keyword |base| followed by an optional space and a number, the chromatogram starts or stops at the peak corresponding to the respective base. The first detected base peak has index 1. Compare Examples~\ref{exa:LimitsSamplePoints} and~\ref{exa:LimitsBases} to see the difference. +% \end{enumerate} +% The optional third part of the value for |sample range| orders the package to draw every \ometa{interval}th sample point. If your document contains large chromatograms or a great number of them, drawing fewer sample points increases typesetting time at the cost of image quality (Example~\ref{exa:SampleStep}). Nevertheless, the key may be especially useful while optimizing the layout of complex chromatograms. +% +% \begin{exampletable}[p] +% \caption{} +% \label{exa:LimitsBases} +% \begin{examplecode} +% \pmbchromatogram[% +% sample range=base 50 to base60 +% ]{SampleScf.scf} +% \end{examplecode} +% \end{exampletable} +% +% \begin{exampletable}[p] +% \caption{} +% \label{exa:SampleStep} +% \pgfmolbioset[chromatogram]{canvas height=1cm} +% \begin{examplecode} +% \pmbchromatogram[% +% sample range=base 20 to base 50 step 1 +% ]{SampleScf.scf} +% \end{examplecode} +% \begin{examplecode} +% \pmbchromatogram[% +% sample range=base 20 to base 50 step 2 +% ]{SampleScf.scf} +% \end{examplecode} +% \begin{examplecode} +% \pmbchromatogram[% +% sample range=base 20 to base 50 step 4 +% ]{SampleScf.scf} +% \end{examplecode} +% \end{exampletable} +% +% +% \section{General Layout} +% +% \DescribeOption{x unit}{0.2mm} +% \DescribeOption{y unit}{0.01mm} +% These keys set the horizontal distance between two consecutive sample points and the vertical distance between two fluorescence intensity values, respectively. Example~\ref{exa:xyunit} illustrates how you can enlarge a chromatogram twofold by doubling these values. +% \begin{exampletable} +% \caption{} +% \label{exa:xyunit} +% \begin{examplecode} +% \pmbchromatogram[% +% sample range=base 50 to base 60, +% x unit=0.4mm, +% y unit=0.02mm +% ]{SampleScf.scf} +% \end{examplecode} +% \end{exampletable} + +% \DescribeOption{samples per line}{500} +% \DescribeOption{baseline skip}{3cm} +% A new chromatogram ``line'' starts after \meta{number} sample points, and the baselines of adjacent lines (i.\,e., the $y$-value of fluorescence signals with zero intensity) are separated by \meta{dimension}. In Example~\ref{exa:SamplesPerLine}, you see two lines, each of which contains 250 of the 500 sample points drawn. Furthermore, the baselines are 3.5~cm apart. +% \begin{exampletable} +% \caption{} +% \label{exa:SamplesPerLine} +% \begin{examplecode} +% \begin{tikzpicture}% +% [decoration=brace] +% \pmbchromatogram[% +% sample range=401 to 900, +% samples per line=250, +% baseline skip=3.5cm +% ]{SampleScf.scf} +% \draw[decorate] +% (-0.1cm, -3.5cm) -- (-0.1cm, 0cm) +% node[pos=0.5, rotate=90, above=5pt] +% {baseline skip}; +% \end{tikzpicture} +% \end{examplecode} +% \end{exampletable} +% +% \DescribeOption{canvas style}{draw=none, fill=none}