%% %% This is file `ulqda.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% ulqda.dtx (with options: `package') %% %% This is a generated file. %% %% Copyright (C) 2009 by Ivan Griffin %% %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either %% version 1.2 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.2 or later is part of all distributions of %% LaTeX version 1999/12/01 or later. %% \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{ulqda} [2009/06/11 v1.1 Qualitative Data Analysis package] \RequirePackage{multicol} \RequirePackage{tikz} %% dot2texi.sty in CTAN doesn't support the cache option yet %% The SVN version does. \RequirePackage{dot2texi} \usetikzlibrary{backgrounds,shapes,arrows,positioning} \definecolor[named]{UlQda@lightblue}{rgb}{0.80,0.85,1} \RequirePackage{soul} \sethlcolor{UlQda@lightblue} \newif\ifUlQda@debug \UlQda@debugfalse \newif\ifUlQda@cache \UlQda@cachefalse \newif\ifUlQda@cachepresent \UlQda@cachepresentfalse \newif\ifUlQda@shellescape \UlQda@shellescapetrue \newif\ifUlQda@MiKTeX \UlQda@MiKTeXfalse \newif\ifUlQda@active \UlQda@activefalse \newif\ifUlQda@counts \UlQda@countsfalse \DeclareOption{active}{\UlQda@activetrue} \DeclareOption{debug}{\UlQda@debugtrue} \DeclareOption{cache}{\UlQda@cachetrue} \DeclareOption{nocache}{\UlQda@cachefalse} \DeclareOption{shell}{\UlQda@shellescapetrue} \DeclareOption{noshell}{\UlQda@shellescapefalse} \DeclareOption{MiKTeX}{\global\UlQda@MiKTeXtrue} \DeclareOption{counts}{\global\UlQda@countstrue} \DeclareOption*{% \PackageWarning{ulqda}{Unknown option `\CurrentOption'}% } \ExecuteOptions{shell} \ProcessOptions\relax \ifUlQda@counts \def\UlQda@counts{--number } \else \def\UlQda@counts{ } \fi %% test if shell escape really works \ifUlQda@shellescape \def\tmpfile{/tmp/shellEscapeTest-\the\year\the\month\the\day-\the\time} \immediate\write18{\ifUlQda@MiKTeX rem >"\tmpfile" \else touch \tmpfile \fi} \IfFileExists{\tmpfile}{ \UlQda@shellescapetrue \immediate\write18{\ifUlQda@MiKTeX del "\tmpfile" \else rm -f \tmpfile \fi} }{\UlQda@shellescapefalse} \fi \ifUlQda@shellescape \ifUlQda@debug \PackageInfo{ulqda}{TeX Shell escape enabled.} \fi \else \PackageWarningNoLine{ulqda} {TeX Shell escape not enabled.\MessageBreak% Manually process the CSV output with ulqda.pl} \fi \newcommand{\ulqdaHighlight}[2]{% \hl{\protect\ul{#2}}% \marginpar% {\raggedright\hbadness=10000\tiny\it% \hl{#1} \par}% %\par% } \newcommand{\ulQda}{\textsf{ul\kern -.075em\lower .3ex\hbox {\protect\emph{q}}da}} \ifUlQda@active \AtBeginDocument{% \typeout{ulqda: Loaded - 2009/06/11 v1.1 Qualitative Data Analysis package} \ifUlQda@cache \IfFileExists{\jobname.csv} % { \ifUlQda@debug \typeout{ulqda: QDA cache file \jobname.csv found} \fi \UlQda@cachepresenttrue } { \ifUlQda@debug \typeout{ulqda: QDA cache file \jobname.csv not found} \fi \UlQda@cachepresentfalse } \else \ifUlQda@debug \typeout{ulqda: caching disabled} \fi \UlQda@cachepresentfalse \fi % Code macro \ifUlQda@cachepresent \newcommand{\ulqdaCode}[2]{\ulqdaHighlight{#1}{#2}} \else \ifUlQda@debug \typeout{ulqda: Creating QDA cache file \jobname.csv} % \fi \newwrite\ulqdaCodeFile % \immediate\openout\ulqdaCodeFile=\jobname.csv % \immediate\write\ulqdaCodeFile{Page Number, Section, Code, Text} % \def\UlQda@ListIt#1[#2,{% \ifUlQda@debug % \typeout{ulqda: Coding "#2" as "#1" on page \thepage, section \thesection} \fi % \immediate\write\ulqdaCodeFile{\thepage, \thesection, #2, "#1"} \index{#2} % \@ifnextchar]% Look ahead one token. {\eatthesquarebracket}% End of list. {\UlQda@ListIt{#1}[}% Process rest of list. } \def\eatthesquarebracket]{} % Gobble the square bracket. % % Coding macro \newcommand{\ulqdaCode}[2]{\ulqdaHighlight{#1}{#2}\UlQda@ListIt{#2}[#1,]} % \fi } % end of \AtBeginDocument \newcommand{\UlQda@FirstOfTwo}[1]{ \ifx#1\UlQda@MyUndefinedMacro ?\typeout{ulqda: undefined reference, please re-run} \else \expandafter\@firstoftwo#1 \fi} \newcommand{\UlQda@RefToSectNum}[1]{ \expandafter \ifx\csname r@#1\endcsname\relax ?\typeout{ulqda: undefined reference, please re-run} \else \expandafter\UlQda@FirstOfTwo\csname r@#1\endcsname \fi} \def\UlQda@filter{} \newcommand{\ulqdaSetSectFilter}[1]{ \ifUlQda@shellescape \immediate\write18{\ifUlQda@MiKTeX del \else rm -f -- \fi \jobname_net.dot} \immediate\write18{\ifUlQda@MiKTeX del \else rm -f -- \fi \jobname_flat.dot} \immediate\write18{\ifUlQda@MiKTeX del \else rm -f -- \fi \jobname_table.tex} \fi \def\UlQda@filter{--filter \UlQda@RefToSectNum{#1}} } \newcommand{\ulqdaClearSectFilter}{\def\UlQda@filter{}} \newcommand{\ulqdaGraph}[2]{\expandafter\csname UlQda@Graph#1\endcsname{#2}} \newcommand\UlQda@Graphflat[1]{\UlQda@GraphFlat{#1}} \newcommand\UlQda@Graphnet[1]{\UlQda@GraphNet{#1}} \newcommand{\UlQda@GraphVizFileName}{} \newsavebox{\UlQda@GraphSaveBox} \newcommand{\UlQda@GraphNet}[1]{% \renewcommand{\UlQda@GraphVizFileName}{\jobname_net.dot}% \ifUlQda@cachepresent \ifUlQda@shellescape \ifUlQda@debug \typeout{ulqda: Converting .csv to hierarchical GraphViz dot file} \fi \immediate\write18{ulqda.pl --graphnet \UlQda@filter \UlQda@counts -- \jobname.csv \jobname_net.dot} \fi \fi \UlQda@DoGraph{#1}% } \newcommand{\UlQda@GraphFlat}[1]{% \renewcommand{\UlQda@GraphVizFileName}{\jobname_flat.dot}% \ifUlQda@cachepresent \ifUlQda@shellescape \ifUlQda@debug \typeout{ulqda: Converting .csv to flat GraphViz dot file} \fi \immediate\write18{ulqda.pl --graphflat \UlQda@filter \UlQda@counts -- \jobname.csv \jobname_flat.dot} \fi \fi \UlQda@DoGraph{#1}% } \newcommand{\UlQda@DoGraph}[1]{ \IfFileExists{\UlQda@GraphVizFileName}{ \ifUlQda@shellescape \begin{lrbox}{\UlQda@GraphSaveBox} \stepcounter{dtt@fignum} \setkeys{dtt}{#1} \immediate\write18{cp "\UlQda@GraphVizFileName" "\dtt@figname.dot"} \dottotexgraphicsinclude \end{lrbox} \framebox{\usebox{\UlQda@GraphSaveBox}} \par \else \typeout{ulqda: shell escape not enabled} \typeout{ulqda: unable to process \UlQda@GraphVizFileName} \fi } } \newcommand{\ulqdaTable}{ \IfFileExists{\jobname_table.tex}{ \input{\jobname_table.tex} }{ \ifUlQda@cachepresent \ifUlQda@shellescape \ifUlQda@debug \typeout{ulqda: Converting .csv to TeX table} \fi \immediate\write18{ulqda.pl --list \UlQda@filter \UlQda@counts -- \jobname.csv \jobname_table.tex} \fi \fi \IfFileExists{\jobname_table.tex}{ \input{\jobname_table.tex} } } } \newcommand{\ulqdaCloud}{ \IfFileExists{\jobname_cloud.tex}{ \input{\jobname_cloud.tex} }{ \ifUlQda@cachepresent \ifUlQda@shellescape \ifUlQda@debug \typeout{ulqda: Converting .csv to TeX cloud} \fi \immediate\write18{ulqda.pl --cloud \UlQda@filter \UlQda@counts -- \jobname.csv \jobname_cloud.tex} \fi \fi \IfFileExists{\jobname_cloud.tex}{ \input{\jobname_cloud.tex} } } } \else % UlQda@activefalse \newcommand{\ulqdaTable}{} \newcommand{\ulqdaCloud}{} \newcommand{\ulqdaGraph}[2]{} \newcommand{\ulqdaCode}[2]{#2} \newcommand{\ulqdaSetSectFilter}[1]{} \newcommand{\ulqdaClearSectFilter}{} \fi \endinput %% %% End of file `ulqda.sty'.