diff --git a/paper/.latexmkrc b/paper/.latexmkrc new file mode 100644 index 0000000..ddcb138 --- /dev/null +++ b/paper/.latexmkrc @@ -0,0 +1,6 @@ + +sub build_header { + system("ruby ./prep.rb") +} + +build_header() diff --git a/paper/bib.tex b/paper/bib.tex new file mode 100644 index 0000000..8e1819a --- /dev/null +++ b/paper/bib.tex @@ -0,0 +1,4 @@ +% **************GENERATED FILE, DO NOT EDIT************** + +\bibliographystyle{juliacon} +\bibliography{ref.bib} diff --git a/paper/header.tex b/paper/header.tex new file mode 100644 index 0000000..a1cf917 --- /dev/null +++ b/paper/header.tex @@ -0,0 +1,16 @@ +% **************GENERATED FILE, DO NOT EDIT************** + +\title{Enhancing Deterministic Voice Control with Safe LLM Interaction} + +\author[1]{Samuel Omlin} +\affil[1]{Swiss National Supercomputing Centre (CSCS), ETH Zurich, Lugano, Switzerland} + +\keywords{deterministic voice control, large language models, speech interfaces, programmable voice assistants, human-AI interaction, desktop automation} + +\hypersetup{ +pdftitle = {Enhancing Deterministic Voice Control with Safe LLM Interaction}, +pdfsubject = {JuliaCon 2025 Proceedings}, +pdfauthor = {Samuel Omlin}, +pdfkeywords = {deterministic voice control, large language models, speech interfaces, programmable voice assistants, human-AI interaction, desktop automation}, +} + diff --git a/paper/jlcode.sty b/paper/jlcode.sty new file mode 100644 index 0000000..7688c01 --- /dev/null +++ b/paper/jlcode.sty @@ -0,0 +1,420 @@ +%% +%% Julia definition (c) 2018 by wg030 +%% +%% +%% +% keywords, literals and built-ins from: +% https://github.com/isagalaev/highlight.js/blob/master/src/languages/julia.js +% colors from: +% https://docs.julialang.org/en/stable/assets/highlightjs/default.css +% https://docs.julialang.org/en/stable/assets/documenter.css +% special unicode characters from: +% https://docs.julialang.org/en/stable/manual/unicode-input/ + + + + + +% defining the jlcode package +\def\fileversion{2.1} +\def\filedate{2018/03/06} + +\typeout{-- Package: `jlcode' \fileversion\space <\filedate> --} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{jlcode}[\filedate\space\fileversion] + + + + + +% loading required packages +\RequirePackage{listings} +\RequirePackage{xcolor} % for coloring +\RequirePackage{textcomp} % for upright single quotes +\RequirePackage{amssymb} % for the ϰ symbol +\RequirePackage{eurosym} % for the € symbol +\PassOptionsToPackage{T1}{fontenc} +\RequirePackage{fontenc} % for the « and » symbols +\RequirePackage{calc} % for the creation of the code box + + + + + +% julia language definition +\lstdefinelanguage{julia} +{% +% +% julia's keywords: +% +morekeywords=[1] +{% +in,isa,where,baremodule,begin,break,catch,ccall,const,continue,do,else,elseif,% +end,export,finally,for,function,global,if,import,importall,let,local,macro,% +module,quote,return,try,using,while,struct,mutable,primitive,% +% legacy, to be deprecated in the next release +type,immutable,abstract,bitstype,typealias% +},% +% +% julia's literals: +% +morekeywords=[2] +{% +true,false,ARGS,C_NULL,DevNull,ENDIAN_BOM,ENV,I,Inf,Inf16,Inf32,Inf64,% +InsertionSort,JULIA_HOME,LOAD_PATH,MergeSort,NaN,NaN16,NaN32,NaN64,% +PROGRAM_FILE,QuickSort,RoundDown,RoundFromZero,RoundNearest,% +RoundNearestTiesAway,RoundNearestTiesUp,RoundToZero,RoundUp,STDERR,STDIN,% +STDOUT,VERSION,catalan,e,eu,eulergamma,golden,im,nothing,pi,γ,π,φ% +},% +% +% julia's built-ins: +% +morekeywords=[3] +{% +ANY,AbstractArray,AbstractChannel,AbstractFloat,AbstractMatrix,AbstractRNG,% +AbstractSerializer,AbstractSet,AbstractSparseArray,AbstractSparseMatrix,% +AbstractSparseVector,AbstractString,AbstractUnitRange,AbstractVecOrMat,% +AbstractVector,Any,ArgumentError,Array,AssertionError,Associative,% +Base64DecodePipe,Base64EncodePipe,Bidiagonal,BigFloat,BigInt,BitArray,% +BitMatrix,BitVector,Bool,BoundsError,BufferStream,CachingPool,% +CapturedException,CartesianIndex,CartesianRange,Cchar,Cdouble,Cfloat,Channel,% +Char,Cint,Cintmax_t,Clong,Clonglong,ClusterManager,Cmd,CodeInfo,Colon,Complex,% +Complex128,Complex32,Complex64,CompositeException,Condition,ConjArray,% +ConjMatrix,ConjVector,Cptrdiff_t,Cshort,Csize_t,Cssize_t,Cstring,Cuchar,Cuint,% +Cuintmax_t,Culong,Culonglong,Cushort,Cwchar_t,Cwstring,DataType,Date,% +DateFormat,DateTime,DenseArray,DenseMatrix,DenseVecOrMat,DenseVector,Diagonal,% +Dict,DimensionMismatch,Dims,DirectIndexString,Display,DivideError,DomainError,% +EOFError,EachLine,Enum,Enumerate,ErrorException,Exception,ExponentialBackOff,% +Expr,Factorization,FileMonitor,Float16,Float32,Float64,Function,Future,% +GlobalRef,GotoNode,HTML,Hermitian,IO,IOBuffer,IOContext,IOStream,IPAddr,IPv4,% +IPv6,IndexCartesian,IndexLinear,IndexStyle,InexactError,InitError,Int,Int128,% +Int16,Int32,Int64,Int8,IntSet,Integer,InterruptException,InvalidStateException,% +Irrational,KeyError,LabelNode,LinSpace,LineNumberNode,LoadError,% +LowerTriangular,MIME,Matrix,MersenneTwister,Method,MethodError,MethodTable,% +Module,NTuple,NewvarNode,NullException,Nullable,Number,ObjectIdDict,% +OrdinalRange,OutOfMemoryError,OverflowError,Pair,ParseError,PartialQuickSort,% +PermutedDimsArray,Pipe,PollingFileWatcher,ProcessExitedException,Ptr,QuoteNode,% +RandomDevice,Range,RangeIndex,Rational,RawFD,ReadOnlyMemoryError,Real,% +ReentrantLock,Ref,Regex,RegexMatch,RemoteChannel,RemoteException,RevString,% +RoundingMode,RowVector,SSAValue,SegmentationFault,SerializationState,Set,% +SharedArray,SharedMatrix,SharedVector,Signed,SimpleVector,Slot,SlotNumber,% +SparseMatrixCSC,SparseVector,StackFrame,StackOverflowError,StackTrace,% +StepRange,StepRangeLen,StridedArray,StridedMatrix,StridedVecOrMat,% +StridedVector,String,SubArray,SubString,SymTridiagonal,Symbol,Symmetric,% +SystemError,TCPSocket,Task,Text,TextDisplay,Timer,Tridiagonal,Tuple,Type,% +TypeError,TypeMapEntry,TypeMapLevel,TypeName,TypeVar,TypedSlot,UDPSocket,UInt,% +UInt128,UInt16,UInt32,UInt64,UInt8,UndefRefError,UndefVarError,UnicodeError,% +UniformScaling,Union,UnionAll,UnitRange,Unsigned,UpperTriangular,Val,Vararg,% +VecElement,VecOrMat,Vector,VersionNumber,Void,WeakKeyDict,WeakRef,WorkerConfig,% +WorkerPool% +},% +% +% +sensitive=true,% +% +alsoother={$},%$ +% +morecomment=[l]{\#},% +morecomment=[n]{\#=}{=\#},% +% +morestring=[b]{"},% +morestring=[m]{'},% +morestring=[s]{"""}{"""},% +morestring=[s]{r"}{"},% +morestring=[s]{b"}{"},% +morestring=[s]{v"}{"},% +morestring=[s]{raw"}{"},% +morestring=[s]{L"}{"},% +% +}[keywords,comments,strings] + + +% defining the colors for +\definecolor{jlbase}{rgb}{.28,.28,.28} % julia's base color +\definecolor{jlkeyword}{rgb}{0.4, 0.0, 0.3} % julia's keywords +\definecolor{jlliteral}{HTML}{78A960} % julia's literals +\definecolor{jlbuiltin}{HTML}{397300} % julia's built-ins +\definecolor{jlcomment}{HTML}{888888} % julia's comments +\definecolor{jlstring}{HTML}{880000} % julia's strings +\definecolor{jlbackground}{HTML}{F5F5F5} % the background of the code block +\definecolor{jlrule}{HTML}{DDDDDD} % the rule of the code block + + +% defining the ucc and the ucclit command +% for literating special unicode characters +\newcommand{\ucc}[1]{% +\ifnum\lst@mode=\lst@Pmode\relax% +{\color{jlbase}#1}% +\else% +#1% +\fi% +} + +\newcommand{\ucclit}[1]{% +\ifnum\lst@mode=\lst@Pmode\relax% +{\color{jlliteral}#1}% +\else% +#1% +\fi% +} + + +% defining a new opliterate key +\def\lst@OpLiteratekey#1\@nil@{\let\lst@ifxopliterate\lst@if + \def\lst@opliterate{#1}} +\lst@Key{opliterate}{}{\@ifstar{\lst@true \lst@OpLiteratekey} + {\lst@false\lst@OpLiteratekey}#1\@nil@} +\lst@AddToHook{SelectCharTable} + {\ifx\lst@opliterate\@empty\else + \expandafter\lst@OpLiterate\lst@opliterate{}\relax\z@ + \fi} +\def\lst@OpLiterate#1#2#3{% + \ifx\relax#2\@empty\else + \lst@CArgX #1\relax\lst@CDef + {} + {\let\lst@next\@empty + \lst@ifxopliterate + \lst@ifmode \let\lst@next\lst@CArgEmpty \fi + \fi + \ifx\lst@next\@empty + \ifx\lst@OutputBox\@gobble\else + \lst@XPrintToken \let\lst@scanmode\lst@scan@m + \lst@token{#2}\lst@length#3\relax + \lst@XPrintToken + \fi + \let\lst@next\lst@CArgEmptyGobble + \fi + \lst@next}% + \@empty + \expandafter\lst@OpLiterate + \fi} + + +% defining the \addlitjlbase and \addlitjlstring commands, +% which help a user to fix some of the known manageable issues +\def\addToLiterate#1{% +\protected@edef\lst@literate{% +\unexpanded\expandafter{\lst@literate}\unexpanded{#1}}} +\lst@Key{expandliterate}{}{\addToLiterate{#1}} +\newcommand{\addlitjlbase}[3]{% +\lstset{expandliterate={#1}{{{\color{jlbase}#2}}}{#3}}} +\newcommand{\addlitjlstring}[3]{% +\lstset{expandliterate={#1}{{{\color{jlstring}#2}}}{#3}}} + + + + + +% defining the styles for +\lstset{keywordstyle={[1]\color{jlkeyword}\bfseries}} % julia's keywords +\lstset{keywordstyle={[2]\color{jlliteral}}} % julia's literals +\lstset{keywordstyle={[3]\color{jlbuiltin}}} % julia's built-ins +\lstset{commentstyle={\color{jlcomment}}} % julia's comments +\lstset{stringstyle={\color{jlstring}}} % julia's strings +\lstset{identifierstyle={\color{jlbase}}} % julia's identifiers + + +\lstset{opliterate=* +% +% julia's operators +% +{\\}{{{\color{jlbase}\lstum@backslash}}}{1} {\{}{{{\color{jlbase}\{}}}{1} +{\}}{{{\color{jlbase}\}}}}{1} {!}{{{\color{jlbase}!}}}{1} +{\%}{{{\color{jlbase}\%}}}{1} {&}{{{\color{jlbase}\&}}}{1} +{(}{{{\color{jlbase}(}}}{1} {)}{{{\color{jlbase})}}}{1} +{*}{{{\color{jlbase}*}}}{1} {+}{{{\color{jlbase}+}}}{1} +{,}{{{\color{jlbase},}}}{1} {-}{{{\color{jlbase}-}}}{1} +{.}{{{\color{jlbase}.}}}{1} {/}{{{\color{jlbase}/}}}{1} +{:}{{{\color{jlbase}:}}}{1} {;}{{{\color{jlbase};}}}{1} +{<}{{{\color{jlbase}<}}}{1} {=}{{{\color{jlbase}=}}}{1} +{>}{{{\color{jlbase}>}}}{1} {?}{{{\color{jlbase}?}}}{1} +{[}{{{\color{jlbase}[}}}{1} {]}{{{\color{jlbase}]}}}{1} +{^}{{{\color{jlbase}\^{}}}}{1} {|}{{{\color{jlbase}|}}}{1} +{~}{{{\color{jlbase}\textasciitilde{}}}}{1} +% +% julia's numbers +% +{.0}{{{\color{jlstring}.0}}}{2} {.1}{{{\color{jlstring}.1}}}{2} +{.2}{{{\color{jlstring}.2}}}{2} {.3}{{{\color{jlstring}.3}}}{2} +{.4}{{{\color{jlstring}.4}}}{2} {.5}{{{\color{jlstring}.5}}}{2} +{.6}{{{\color{jlstring}.6}}}{2} {.7}{{{\color{jlstring}.7}}}{2} +{.8}{{{\color{jlstring}.8}}}{2} {.9}{{{\color{jlstring}.9}}}{2} +% +{e+0}{{{\color{jlstring}e+0}}}{3} {e+1}{{{\color{jlstring}e+1}}}{3} +{e+2}{{{\color{jlstring}e+2}}}{3} {e+3}{{{\color{jlstring}e+3}}}{3} +{e+4}{{{\color{jlstring}e+4}}}{3} {e+5}{{{\color{jlstring}e+5}}}{3} +{e+6}{{{\color{jlstring}e+6}}}{3} {e+7}{{{\color{jlstring}e+7}}}{3} +{e+8}{{{\color{jlstring}e+8}}}{3} {e+9}{{{\color{jlstring}e+9}}}{3} +% +{0E+}{{{\color{jlstring}0E+}}}{3} {1E+}{{{\color{jlstring}1E+}}}{3} +{2E+}{{{\color{jlstring}2E+}}}{3} {3E+}{{{\color{jlstring}3E+}}}{3} +{4E+}{{{\color{jlstring}4E+}}}{3} {5E+}{{{\color{jlstring}5E+}}}{3} +{6E+}{{{\color{jlstring}6E+}}}{3} {7E+}{{{\color{jlstring}7E+}}}{3} +{8E+}{{{\color{jlstring}8E+}}}{3} {9E+}{{{\color{jlstring}9E+}}}{3} +% +{e-0}{{{\color{jlstring}e-0}}}{3} {e-1}{{{\color{jlstring}e-1}}}{3} +{e-2}{{{\color{jlstring}e-2}}}{3} {e-3}{{{\color{jlstring}e-3}}}{3} +{e-4}{{{\color{jlstring}e-4}}}{3} {e-5}{{{\color{jlstring}e-5}}}{3} +{e-6}{{{\color{jlstring}e-6}}}{3} {e-7}{{{\color{jlstring}e-7}}}{3} +{e-8}{{{\color{jlstring}e-8}}}{3} {e-9}{{{\color{jlstring}e-9}}}{3} +% +{0E-}{{{\color{jlstring}0E-}}}{3} {1E-}{{{\color{jlstring}1E-}}}{3} +{2E-}{{{\color{jlstring}2E-}}}{3} {3E-}{{{\color{jlstring}3E-}}}{3} +{4E-}{{{\color{jlstring}4E-}}}{3} {5E-}{{{\color{jlstring}5E-}}}{3} +{6E-}{{{\color{jlstring}6E-}}}{3} {7E-}{{{\color{jlstring}7E-}}}{3} +{8E-}{{{\color{jlstring}8E-}}}{3} {9E-}{{{\color{jlstring}9E-}}}{3} +} + + +% special unicode characters +%\lstset{inputencoding=utf8} +%\DeclareUnicodeCharacter{0391}{A} +\lstset{extendedchars=true} +\lstset{literate= +% +% characters that appear in latin languages +% +{á}{{\'a}}{1} {é}{{\'e}}{1} {í}{{\'i}}{1} {ó}{{\'o}}{1} {ú}{{\'u}}{1} +{Á}{{\'A}}{1} {É}{{\'E}}{1} {Í}{{\'I}}{1} {Ó}{{\'O}}{1} {Ú}{{\'U}}{1} +{à}{{\`a}}{1} {è}{{\`e}}{1} {ì}{{\`i}}{1} {ò}{{\`o}}{1} {ù}{{\`u}}{1} +{À}{{\`A}}{1} {È}{{\'E}}{1} {Ì}{{\`I}}{1} {Ò}{{\`O}}{1} {Ù}{{\`U}}{1} +{ä}{{\"a}}{1} {ë}{{\"e}}{1} {ï}{{\"i}}{1} {ö}{{\"o}}{1} {ü}{{\"u}}{1} +{Ä}{{\"A}}{1} {Ë}{{\"E}}{1} {Ï}{{\"I}}{1} {Ö}{{\"O}}{1} {Ü}{{\"U}}{1} +{â}{{\^a}}{1} {ê}{{\^e}}{1} {î}{{\^i}}{1} {ô}{{\^o}}{1} {û}{{\^u}}{1} +{Â}{{\^A}}{1} {Ê}{{\^E}}{1} {Î}{{\^I}}{1} {Ô}{{\^O}}{1} {Û}{{\^U}}{1} +{œ}{{\oe}}{1} {Œ}{{\OE}}{1} {æ}{{\ae}}{1} {Æ}{{\AE}}{1} {ß}{{\ss}}{1} +{ű}{{\H{u}}}{1} {Ű}{{\H{U}}}{1} {ő}{{\H{o}}}{1} {Ő}{{\H{O}}}{1} +{ç}{{\c c}}{1} {Ç}{{\c C}}{1} {ø}{{\o}}{1} {å}{{\r a}}{1} {Å}{{\r A}}{1} +{€}{{\euro}}{1} {£}{{\pounds}}{1} {«}{{\guillemotleft}}{1} +{»}{{\guillemotright}}{1} {ñ}{{\~n}}{1} {Ñ}{{\~N}}1 {¿}{{?`}}{1} +% +% greek capital letters +% +{Α}{{\ucc{A}}}{1} {Β}{{\ucc{B}}}{1} {Γ}{{\ucc{$\Gamma$}}}{1} +{Δ}{{\ucc{$\Delta$}}}{1} {Ε}{{\ucc{E}}}{1} {Ζ}{{\ucc{Z}}}{1} +{Η}{{\ucc{H}}}{1} {Θ}{{\ucc{$\Theta$}}}{1} {Ι}{{\ucc{I}}}{1} +{Κ}{{\ucc{K}}}{1} {Λ}{{\ucc{$\Lambda$}}}{1} {Μ}{{\ucc{M}}}{1} +{Ν}{{\ucc{N}}}{1} {Ξ}{{\ucc{$\Xi$}}}{1} {Ο}{{\ucc{O}}}{1} +{Π}{{\ucc{$\Pi$}}}{1} {Ρ}{{\ucc{P}}}{1} {Σ}{{\ucc{$\Sigma$}}}{1} +{Τ}{{\ucc{T}}}{1} {Υ}{{\ucc{$\Upsilon$}}}{1} {Φ}{{\ucc{$\Phi$}}}{1} +{Χ}{{\ucc{X}}}{1} {Ψ}{{\ucc{$\Psi$}}}{1} {Ω}{{\ucc{$\Omega$}}}{1} +% +% mircro sign + latin small letter open e +% +{µ}{{\ucc{$\mu$}}}{1} {ɛ}{{\ucc{$\varepsilon$}}}{1} +% +% greek small letters +% +{α}{{\ucc{$\alpha$}}}{1} {β}{{\ucc{$\beta$}}}{1} {γ}{{\ucclit{$\gamma$}}}{1} +{δ}{{\ucc{$\delta$}}}{1} {ε}{{\ucc{$\varepsilon$}}}{1} +{ϵ}{{\ucc{$\epsilon$}}}{1} {ζ}{{\ucc{$\zeta$}}}{1} {η}{{\ucc{$\eta$}}}{1} +{θ}{{\ucc{$\theta$}}}{1} {ϑ}{{\ucc{$\vartheta$}}}{1} {ι}{{\ucc{$\iota$}}}{1} +{κ}{{\ucc{$\kappa$}}}{1} {ϰ}{{\ucc{$\varkappa$}}}{1} {λ}{{\ucc{$\lambda$}}}{1} +{μ}{{\ucc{$\mu$}}}{1} {ν}{{\ucc{$\nu$}}}{1} {ξ}{{\ucc{$\xi$}}}{1} +{ο}{{\ucc{o}}}{1} {π}{{\ucclit{$\pi$}}}{1} {ϖ}{{\ucc{$\varpi$}}}{1} +{ρ}{{\ucc{$\rho$}}}{1} {ϱ}{{\ucc{$\varrho$}}}{1} {σ}{{\ucc{$\sigma$}}}{1} +{ς}{{\ucc{$\varsigma$}}}{1} {τ}{{\ucc{$\tau$}}}{1} {υ}{{\ucc{$\upsilon$}}}{1} +{φ}{{\ucclit{$\phi$}}}{1} {ϕ}{{\ucc{$\varphi$}}}{1} {χ}{{\ucc{$\chi$}}}{1} +{ψ}{{\ucc{$\psi$}}}{1} {ω}{{\ucc{$\omega$}}}{1} +% +% superscripts +% +{⁽}{{\ucc{${\scriptstyle {}^{(}}$}}}{1} {⁾}{{\ucc{${\scriptstyle {}^{)}}$}}}{1} +{⁺}{{\ucc{${\scriptstyle {}^{+}}$}}}{1} {⁻}{{\ucc{${\scriptstyle {}^{-}}$}}}{1} +{⁰}{{\ucc{${\scriptstyle {}^{0}}$}}}{1} {¹}{{\ucc{${\scriptstyle {}^{1}}$}}}{1} +{²}{{\ucc{${\scriptstyle {}^{2}}$}}}{1} {³}{{\ucc{${\scriptstyle {}^{3}}$}}}{1} +{⁴}{{\ucc{${\scriptstyle {}^{4}}$}}}{1} {⁵}{{\ucc{${\scriptstyle {}^{5}}$}}}{1} +{⁶}{{\ucc{${\scriptstyle {}^{6}}$}}}{1} {⁷}{{\ucc{${\scriptstyle {}^{7}}$}}}{1} +{⁸}{{\ucc{${\scriptstyle {}^{8}}$}}}{1} {⁹}{{\ucc{${\scriptstyle {}^{9}}$}}}{1} +{⁼}{{\ucc{${\scriptstyle {}^{=}}$}}}{1} {ᴬ}{{\ucc{${\scriptstyle {}^{A}}$}}}{1} +{ᴮ}{{\ucc{${\scriptstyle {}^{B}}$}}}{1} {ᴰ}{{\ucc{${\scriptstyle {}^{D}}$}}}{1} +{ᴱ}{{\ucc{${\scriptstyle {}^{E}}$}}}{1} {ᴳ}{{\ucc{${\scriptstyle {}^{G}}$}}}{1} +{ᴴ}{{\ucc{${\scriptstyle {}^{H}}$}}}{1} {ᴵ}{{\ucc{${\scriptstyle {}^{I}}$}}}{1} +{ᴶ}{{\ucc{${\scriptstyle {}^{J}}$}}}{1} {ᴷ}{{\ucc{${\scriptstyle {}^{K}}$}}}{1} +{ᴸ}{{\ucc{${\scriptstyle {}^{L}}$}}}{1} {ᴹ}{{\ucc{${\scriptstyle {}^{M}}$}}}{1} +{ᴺ}{{\ucc{${\scriptstyle {}^{N}}$}}}{1} {ᴼ}{{\ucc{${\scriptstyle {}^{O}}$}}}{1} +{ᴾ}{{\ucc{${\scriptstyle {}^{P}}$}}}{1} {ᴿ}{{\ucc{${\scriptstyle {}^{R}}$}}}{1} +{ᵀ}{{\ucc{${\scriptstyle {}^{T}}$}}}{1} {ᵁ}{{\ucc{${\scriptstyle {}^{U}}$}}}{1} +{ⱽ}{{\ucc{${\scriptstyle {}^{V}}$}}}{1} {ᵂ}{{\ucc{${\scriptstyle {}^{W}}$}}}{1} +{ᵃ}{{\ucc{${\scriptstyle {}^{a}}$}}}{1} {ᵇ}{{\ucc{${\scriptstyle {}^{b}}$}}}{1} +{ᶜ}{{\ucc{${\scriptstyle {}^{c}}$}}}{1} {ᵈ}{{\ucc{${\scriptstyle {}^{d}}$}}}{1} +{ᵉ}{{\ucc{${\scriptstyle {}^{e}}$}}}{1} {ᶠ}{{\ucc{${\scriptstyle {}^{f}}$}}}{1} +{ᵍ}{{\ucc{${\scriptstyle {}^{g}}$}}}{1} {ʰ}{{\ucc{${\scriptstyle {}^{h}}$}}}{1} +{ⁱ}{{\ucc{${\scriptstyle {}^{i}}$}}}{1} {ʲ}{{\ucc{${\scriptstyle {}^{j}}$}}}{1} +{ᵏ}{{\ucc{${\scriptstyle {}^{k}}$}}}{1} {ˡ}{{\ucc{${\scriptstyle {}^{l}}$}}}{1} +{ᵐ}{{\ucc{${\scriptstyle {}^{m}}$}}}{1} {ⁿ}{{\ucc{${\scriptstyle {}^{n}}$}}}{1} +{ᵒ}{{\ucc{${\scriptstyle {}^{o}}$}}}{1} {ᵖ}{{\ucc{${\scriptstyle {}^{p}}$}}}{1} +{ʳ}{{\ucc{${\scriptstyle {}^{r}}$}}}{1} {ˢ}{{\ucc{${\scriptstyle {}^{s}}$}}}{1} +{ᵗ}{{\ucc{${\scriptstyle {}^{t}}$}}}{1} {ᵘ}{{\ucc{${\scriptstyle {}^{u}}$}}}{1} +{ᵛ}{{\ucc{${\scriptstyle {}^{v}}$}}}{1} {ʷ}{{\ucc{${\scriptstyle {}^{w}}$}}}{1} +{ˣ}{{\ucc{${\scriptstyle {}^{x}}$}}}{1} {ʸ}{{\ucc{${\scriptstyle {}^{y}}$}}}{1} +{ᶻ}{{\ucc{${\scriptstyle {}^{z}}$}}}{1} +{ᵅ}{{\ucc{${\scriptstyle {}^{\alpha}}$}}}{1} +{ᵝ}{{\ucc{${\scriptstyle {}^{\beta}}$}}}{1} +{ᵞ}{{\ucc{${\scriptstyle {}^{\gamma}}$}}}{1} +{ᵟ}{{\ucc{${\scriptstyle {}^{\delta}}$}}}{1} +{ᵋ}{{\ucc{${\scriptstyle {}^{\varepsilon}}$}}}{1} +{ᶿ}{{\ucc{${\scriptstyle {}^{\theta}}$}}}{1} +{ᶥ}{{\ucc{${\scriptstyle {}^{\iota}}$}}}{1} +{ᶲ}{{\ucc{${\scriptstyle {}^{\phi}}$}}}{1} +{ᵡ}{{\ucc{${\scriptstyle {}^{\chi}}$}}}{1} +{ᵠ}{{\ucc{${\scriptstyle {}^{\psi}}$}}}{1} +% +% subscripts +% +{₍}{{\ucc{${\scriptstyle {}_{(}}$}}}{1} {₎}{{\ucc{${\scriptstyle {}_{)}}$}}}{1} +{₊}{{\ucc{${\scriptstyle {}_{+}}$}}}{1} {₋}{{\ucc{${\scriptstyle {}_{-}}$}}}{1} +{₀}{{\ucc{${\scriptstyle {}_{0}}$}}}{1} {₁}{{\ucc{${\scriptstyle {}_{1}}$}}}{1} +{₂}{{\ucc{${\scriptstyle {}_{2}}$}}}{1} {₃}{{\ucc{${\scriptstyle {}_{3}}$}}}{1} +{₄}{{\ucc{${\scriptstyle {}_{4}}$}}}{1} {₅}{{\ucc{${\scriptstyle {}_{5}}$}}}{1} +{₆}{{\ucc{${\scriptstyle {}_{6}}$}}}{1} {₇}{{\ucc{${\scriptstyle {}_{7}}$}}}{1} +{₈}{{\ucc{${\scriptstyle {}_{8}}$}}}{1} {₉}{{\ucc{${\scriptstyle {}_{9}}$}}}{1} +{₌}{{\ucc{${\scriptstyle {}_{=}}$}}}{1} {ₐ}{{\ucc{${\scriptstyle {}_{a}}$}}}{1} +{ₑ}{{\ucc{${\scriptstyle {}_{e}}$}}}{1} {ₕ}{{\ucc{${\scriptstyle {}_{h}}$}}}{1} +{ᵢ}{{\ucc{${\scriptstyle {}_{i}}$}}}{1} {ⱼ}{{\ucc{${\scriptstyle {}_{j}}$}}}{1} +{ₖ}{{\ucc{${\scriptstyle {}_{k}}$}}}{1} {ₗ}{{\ucc{${\scriptstyle {}_{l}}$}}}{1} +{ₘ}{{\ucc{${\scriptstyle {}_{m}}$}}}{1} {ₙ}{{\ucc{${\scriptstyle {}_{n}}$}}}{1} +{ₒ}{{\ucc{${\scriptstyle {}_{o}}$}}}{1} {ₚ}{{\ucc{${\scriptstyle {}_{p}}$}}}{1} +{ᵣ}{{\ucc{${\scriptstyle {}_{r}}$}}}{1} {ₛ}{{\ucc{${\scriptstyle {}_{s}}$}}}{1} +{ₜ}{{\ucc{${\scriptstyle {}_{t}}$}}}{1} {ᵤ}{{\ucc{${\scriptstyle {}_{u}}$}}}{1} +{ᵥ}{{\ucc{${\scriptstyle {}_{v}}$}}}{1} {ₓ}{{\ucc{${\scriptstyle {}_{x}}$}}}{1} +{ᵦ}{{\ucc{${\scriptstyle {}_{\beta}}$}}}{1} +{ᵧ}{{\ucc{${\scriptstyle {}_{\gamma}}$}}}{1} +{ᵨ}{{\ucc{${\scriptstyle {}_{\rho}}$}}}{1} +{ᵪ}{{\ucc{${\scriptstyle {}_{\chi}}$}}}{1} +{ᵩ}{{\ucc{${\scriptstyle {}_{\psi}}$}}}{1} +% +} + + + + + +% basic font +\makeatletter +\def\lstbasicfont{% + \color{jlstring}% + \ttfamily% + \lst@ifdisplaystyle\scriptsize\fi% +} +\makeatother + +% general style of the code block +\lstset{basicstyle={\lstbasicfont}} +\lstset{showstringspaces=false} +\lstset{upquote=true} +\lstset{tabsize=4} +\lstset{aboveskip={1.5\baselineskip},belowskip={1.5\baselineskip}} + +% creating the code box +\lstset{backgroundcolor=\color{jlbackground}, rulecolor=\color{jlrule}} +\lstset{frame=single, frameround=tttt} +\lstset{columns=fixed} +\newlength{\bfem} +\settowidth{\bfem}{\lstbasicfont{m}} +\newlength{\xmrgn} +\setlength{\xmrgn}{(\textwidth - 80\bfem)*\real{0.5}} +\lstset{basewidth=\bfem} + +% activating the julia style +\lstset{language=julia} diff --git a/paper/journal_dat.tex b/paper/journal_dat.tex new file mode 100644 index 0000000..a6bc097 --- /dev/null +++ b/paper/journal_dat.tex @@ -0,0 +1,6 @@ +% **************GENERATED FILE, DO NOT EDIT************** + +\def\@journalName{Proceedings of JuliaCon} +\def\@volume{1} +\def\@issue{1} +\def\@year{2025} diff --git a/paper/juliacon.bst b/paper/juliacon.bst new file mode 100644 index 0000000..a50ee1f --- /dev/null +++ b/paper/juliacon.bst @@ -0,0 +1,1188 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + eprint + eprinttype + eprintclass + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + doi + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "" write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprinttype empty$ + { eprintclass empty$ + { eprint } + { eprint " [" * eprintclass * "]" * } + if$ + } + { eprinttype "arxiv" = + { eprintclass empty$ + { eprinttype ":" * "\href{http://arxiv.org/abs/" * eprint * "}{" * eprint * "}" * } + { eprinttype ":" * "\href{http://arxiv.org/abs/" * eprint * "}{" * eprint * " [" * eprintclass * "]" * "}" * } + if$ + } + { eprintclass empty$ + { eprinttype ":" * eprint * } + { eprinttype ":" * eprint * " [" * eprintclass * "]" *} + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +% based on +% https://tex.stackexchange.com/a/127819/245 +FUNCTION {output.doi} +{ + doi empty$ + { skip$ } + { "\href{http://dx.doi.org/" doi * "}{doi:" * doi * "}" * output } + if$ +} + + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + output.doi + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + output.doi + new.block + format.eprint output + new.block + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +% Keep bibliography entries in citation order so numeric identifiers follow +% first occurrence in the main text. + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/paper/juliacon.cls b/paper/juliacon.cls new file mode 100644 index 0000000..9ef2d59 --- /dev/null +++ b/paper/juliacon.cls @@ -0,0 +1,949 @@ +%% juliacon.cls - version 1.0 + +%% Inspired by the template from the International Journal of Computer Applications (IJCA) + +\usepackage[scaled=0.92]{helvet} +\def\fileversion{v1.0} +\def\filedate{2019 04 07} +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{juliacon} +\RequirePackage{latexsym} +\RequirePackage{url} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} + +\newif\ifmanuscript +\@twosidetrue\@mparswitchtrue +% +\newdimen\trimheight +\newdimen\trimwidth +\newdimen\typeheight +\newdimen\typewidth +\newdimen\normaltextheight +\newdimen\blindfoliodrop +\newbox\tempbox +%% + +\input{journal_dat} + +% +\frenchspacing % oh lala bravo quelle belle idée +\DeclareOption{manuscript}{\manuscripttrue} +\DeclareOption{letterpaper} + {\setlength\paperheight {11.69in}% + \setlength\paperwidth {8.27in}% + \def\special@paper{8.5in,11in} + \special{papersize=8.5in,11in}} + +\DeclareOption{openbib}{% + \AtEndOfPackage{% + \renewcommand\@openbib@code{% + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + }% + \renewcommand\newblock{\par}}% +} +% +\ExecuteOptions{letterpaper} +\ProcessOptions +% +\newcommand\refname{References} +\newcommand{\ignoretwo}[2]{} +\newcommand{\yearTwoDigits}{\expandafter\ignoretwo\the\year} +\def\@setref#1#2#3{% + \ifx#1\relax + \number 0\relax + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{Reference `#3' on page \thepage \space undefined}% + \else + \expandafter#2#1\null + \fi} +% +% +\lineskip 1pt \normallineskip 1pt +\ifmanuscript +\def\baselinestretch{2} +\else +\def\baselinestretch{1} +\fi +\def\@ixpt{9} +\renewcommand\normalsize{% + \@setfontsize\normalsize\@ixpt{10pt} + \abovedisplayskip 6pt plus2pt minus1pt\belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 6pt plus0pt minus 3pt + \belowdisplayshortskip 6pt plus0pt minus3pt\let\@listi\@listI} + +\newcommand\small{% + \@setfontsize\small\@ixpt{11pt}% + \abovedisplayskip 5pt plus 2pt minus 1pt\belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 5pt plus0pt minus2pt\belowdisplayshortskip 5pt plus0pt + minus 2pt + \def\@listi{\leftmargin\leftmargini \topsep 5pt plus 2pt minus 1pt\parsep 0pt + plus .7pt + \itemsep 1.6pt plus .8pt}} +\newcommand\footnotesize{% +% \@setfontsize\footnotesize\@viiipt{10pt} + \@setsize\footnotesize{10pt}\viiipt\@viiipt + \abovedisplayskip 4pt plus 1pt minus 0pt\belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 4pt plus 0pt minus 1pt\belowdisplayshortskip 4pt plus + 0pt minus 1pt + \def\@listi{\leftmargin\leftmargini \topsep 4pt plus 1pt minus + 0pt\parsep 0pt plus .5pt + \itemsep 1pt plus .7pt}} + +\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} +\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt} +\newcommand\large{\@setfontsize\large\@xiipt{14}} +\newcommand\Large{\@setfontsize\Large\@xivpt{18}} +\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{20}} +\newcommand\huge{\@setfontsize\huge\@xxpt{25}} +\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}} +% +\normalsize +% +\newdimen\tempdimen +% +\setlength\trimheight{11in} +\setlength\trimwidth{8.5in} +% +\typeheight52.5pc +\typewidth42pc +\textheight52.5pc +\textwidth42pc +\advance\textheight-3pt +\newdimen\normaltextheight +\setlength\normaltextheight{\textheight} +\oddsidemargin4.5pc +\evensidemargin4.5pc +\topmargin20pt %.25in +\headheight 6pt% +\headsep 29.2pt% +\topskip6pt% +\footskip 100pt +% +\marginparwidth 0.5in +\marginparsep .125in +\columnsep24pt +\columnseprule 0pt +% +\def\titlefont{\huge\selectfont\centering\mathversion{bold}} +\def\authorfont{\fontfamily{phv}\fontsize{10}{12}\selectfont\rightskip0pt plus1fill} %\mathversion{sfnormal} +\def\rhfont{\fontfamily{phv}\fontsize{9}{10}\selectfont\mathversion{sfnormal}} + +\def\sectionfont{\fontfamily{ptm}\fontsize{9}{12}\capsshape\selectfont\raggedright} %\mathversion{rmnormal} +\def\subsectionfont{\fontfamily{ptm}\fontsize{9}{12}\selectfont} %\mathversion{rmnormal} +\def\figcaptionfont{\fontsize{8}{10}\selectfont\mathversion{normal}}% +\def\subcaptionfont{\fontsize{8}{10}\selectfont\mathversion{normal}}% +\def\subcaption#1{{\centering\subcaptionfont#1\par}} +% +\def\tablefont{\fontsize{8}{10}\selectfont}% +\def\tablecaptionfont{\fontsize{9}{11}\selectfont\centering}% +\def\tablenumfont{\fontsize{9}{11}\selectfont}% +\def\tabnotefont{\fontsize{7}{9}\selectfont} +% +\def\encodingdefault{OT1}% +\fontencoding{OT1}% +% +\DeclareFontShape{OMS}{cmsy}{m}{n}{<-> cmsy10 }{} +\DeclareFontShape{OMS}{cmsy}{b}{n}{<-> cmbsy10 }{} +\def\cal{\mathcal} +% +\def\boldmath{\mathversion{bold}} +\def\bm#1{\mathchoice + {\mbox{\boldmath$\displaystyle#1$}}% + {\mbox{\boldmath$#1$}}% + {\mbox{\boldmath$\scriptstyle#1$}}% + {\mbox{\boldmath$\scriptscriptstyle#1$}}} +% +\footnotesep 7pt +\skip\footins 15pt plus 4pt minus 3pt +\floatsep 12pt plus 2pt minus 2pt +\textfloatsep \floatsep +\intextsep 1pc plus 1pc +\dblfloatsep 12pt plus 2pt minus 2pt +\dbltextfloatsep 20pt plus 2pt minus 4pt +\@fptop 0pt plus 1fil \@fpsep 1pc plus 2fil \@fpbot 0pt plus 1fil +\@dblfptop 0pt plus 1fil \@dblfpsep 8pt plus 2fil \@dblfpbot 0pt plus 1fil +\marginparpush 6pt +\parskip 0pt \parindent 0pt \partopsep 0pt % plus .1pt FBU +\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 +\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty +-\@lowpenalty +% +\def\part{\@ucheadtrue + \@startsection{part}{9}{\z@}{-10pt plus -4pt minus + -2pt}{4pt}{\reset@font\normalsize\rmfamily}} +\def\section{\@ucheadtrue + \@startsection{section}{1}{\z@}{-10pt plus -4pt minus + -2pt}{6pt}{\reset@font\fontsize{10}{12}\raggedright\rmfamily\bfseries}} +\def\subsection{\@ucheadfalse + \@startsection{subsection}{2}{\z@}{-8pt plus -2pt minus + -1pt}{6pt}{\reset@font\fontsize{10}{12}\raggedright\rmfamily\bfseries}} +\def\subsubsection{\@ucheadfalse + \@startsection{subsubsection}{3}{\parindent}{6pt plus +1pt}{-5pt}{\reset@font\fontsize{9}{10}\itshape}} +\def\paragraph{\@ucheadfalse + \@startsection{paragraph}{3}{\parindent}{6pt plus +1pt}{-5pt}{\reset@font\fontsize{10}{12}\itshape}} +%% +\renewcommand{\@seccntformat}[1]{\textup{\csname the#1\endcsname}} +\gdef\@period{.} +\def\@trivlist{\@topsepadd\topsep +\if@noskipsec \gdef\@period{}\leavevmode\gdef\@period{.}\fi + \ifvmode \advance\@topsepadd\partopsep \else \unskip\par\fi + \if@inlabel \@noparitemtrue \@noparlisttrue + \else \@noparlistfalse \@topsep\@topsepadd \fi + \advance\@topsep \parskip + \leftskip\z@\rightskip\@rightskip \parfillskip\@flushglue + \@setpar{\if@newlist\else{\@@par}\fi} \global\@newlisttrue +\@outerparskip\parskip} +% +\def\@startsection#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \ifnum#2=2 + \vskip-2pt + \fi + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} +% +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \if@uchead% + \protected@edef\@svsec{\@seccntformat{#1}.\quad\relax}% + \else% + \protected@edef\@svsec{\@seccntformat{#1}\quad\relax}% + \fi% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8 \@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec \if@uchead\Makeuppercase{#8}\else#8\fi}% + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} + +\def\@xsect#1{\@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else \global\@nobreakfalse \global\@noskipsectrue + \everypar{\if@noskipsec \global\@noskipsecfalse + \clubpenalty\@M \hskip -\parindent + \begingroup \@svsechd\@period \endgroup \unskip + \hskip -#1 + \else \clubpenalty \@clubpenalty + \everypar{}\fi}\fi\ignorespaces} +\newif\if@uchead\@ucheadfalse +% +\setcounter{secnumdepth}{3} +\newcounter{secnumbookdepth} +\setcounter{secnumbookdepth}{3} +\newfont{\apbf}{cmbx9} +\def\appendix{\par + \setcounter{section}{0} + \setcounter{subsection}{0} + \section*{APPENDIX}\vskip10pt + \def\thesection{\Alph{section}} + \def\theHsection{\Alph{section}}} +% +\labelsep 4pt +\settowidth{\leftmargini}{(9)} \addtolength\leftmargini\labelsep +\settowidth{\leftmarginii}{(b)} \addtolength\leftmarginii\labelsep +\leftmarginiii \leftmarginii +\leftmarginiv \leftmarginii +\leftmarginv \leftmarginii +\leftmarginvi \leftmarginii +\leftmargin\leftmargini +\labelwidth\leftmargini\advance\labelwidth-\labelsep +\def\@listI{\leftmargin\leftmargini \parsep 0pt plus 1pt\topsep 6pt plus 2pt +minus 2pt\itemsep 2pt plus 1pt minus .5pt} +\let\@listi\@listI +\@listi +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep + \topsep 0pt plus 1pt + \parsep 0pt plus .5pt + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep + \topsep 0pt plus 1pt + \parsep 0pt plus .5pt + \itemsep \parsep} +\def\@listiv{\leftmargin\leftmarginiv + \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} +\def\@listv{\leftmargin\leftmarginv + \labelwidth\leftmarginv\advance\labelwidth-\labelsep} +\def\@listvi{\leftmargin\leftmarginvi + \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} +% +\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list + {\csname label\@enumctr\endcsname}{\usecounter + {\@enumctr}\def\makelabel##1{##1\hss}}\fi} +\def\longenum{\ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list + {\csname label\@enumctr\endcsname}{\usecounter + {\@enumctr}\labelwidth\z@}\fi} +\let\endlongenum\endlist +\def\labelenumi{{\rm (}\arabic{enumi}\/{\rm )}} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{{\rm (}\alph{enumii}\rm{)}} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{\roman{enumiii}.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi{\rm (}\theenumii{\rm )}} +\def\labelenumiv{\Alph{enumiv}.} +\def\theenumiv{\Alph{enumiv}} +\renewcommand\theenumiv{\@Alph\c@enumiv} +\def\p@enumiv{\p@enumiii\theenumiii} + +\def\p@enumiv{\p@enumiii\theenumiii} + +\renewcommand\p@enumii{\theenumi} +\renewcommand\p@enumiii{\theenumi(\theenumii)} +\renewcommand\p@enumiv{\p@enumiii\theenumiii} + +\def\itemize{\list{---\hskip -\labelsep}{\settowidth + {\leftmargin}{---}\labelwidth\leftmargin + \addtolength{\labelwidth}{-\labelsep}}} +\let\enditemize\endlist +\def\longitem{\list{---}{\labelwidth\z@ + \leftmargin\z@ \itemindent\parindent \advance\itemindent\labelsep}} +\let\endlongitem\endlist +\def\verse{\let\\=\@centercr + \list{}{\leftmargin 2pc + \itemindent -1.5em\listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]} +\let\endverse\endlist +\def\quotation{\list{}{\leftmargin 2pc \listparindent .5em + \itemindent\listparindent + \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]} +\let\endquotation=\endlist +\def\quote{\list{}{\leftmargin 2pc \rightmargin\leftmargin}\item[]} +\let\endquote=\endlist + +% +\newenvironment{unnumlist}{% + \list{}{% + \listparindent\parindent + \itemindent-1em + \leftmargin1em + \parsep0pt + \itemsep2pt + \partopsep0pt} + \def\makelable##1{##1}% +}{\endlist}% +% +\def\description{\list{}{\listparindent\parindent\labelwidth\z@ + \leftmargin\z@ \itemindent\parindent\advance\itemindent\labelsep + \def\makelabel##1{\it ##1}}} +\let\enddescription\endlist +% +\def\describe#1{\list{}{\listparindent\parindent\settowidth{\labelwidth}{#1}\leftmargin + \labelwidth\addtolength\leftmargin\labelsep\def\makelabel##1{##1\hfil}}} +\let\enddescribe\endlist +% +\def\program{\ifx\@currsize\normalsize\small \else \rm \fi\tabbing} +\let\endprogram\endtabbing +% +\newtheorem{theorem}{Theorem} +\newtheorem{strategy}{Strategy} +\newtheorem{property}{Property} +\newtheorem{proposition}{Proposition} +\newtheorem{lemma}[theorem]{Lemma} +\newtheorem{exam}{Example} +\newenvironment{example}{% +\italicenvfalse +\begin{exam}}{\end{exam}\italicenvtrue} +% +\newtheorem{defi}[theorem]{Definition} +\newenvironment{definition}{% +\italicenvfalse +\begin{defi}}{\end{defi}\italicenvtrue} +% +\def\@begintheorem#1#2{\trivlist \item[\hskip 10pt\hskip + \labelsep{\sc{#1}\hskip 5pt\relax #2.}] \itshape} +% +\def\@opargbegintheorem#1#2#3{\trivlist + \item[\hskip 10pt \hskip +\labelsep{\sc{#1}\savebox\@tempboxa{\sc{#3}}\ifdim + \wd\@tempboxa>\z@ \hskip 5pt\relax \sc{#2} \box\@tempboxa\fi.}] +\itshape} +% +\newif\if@qeded\global\@qededfalse +\def\proof{\global\@qededfalse\@ifnextchar[{\@xproof}{\@proof}} +\def\endproof{\if@qeded\else\qed\fi\endtrivlist} +\def\qed{\unskip\kern 10pt{\unitlength1pt\linethickness{.4pt}\framebox(5,5){}} +\global\@qededtrue} +\def\@proof{\trivlist \item[\hskip 10pt\hskip + \labelsep{\sc Proof.}]\ignorespaces} +\def\@xproof[#1]{\trivlist \item[\hskip 10pt\hskip + \labelsep{\sc Proof #1.}]\ignorespaces} +% +\def\newdef#1#2{\expandafter\@ifdefinable\csname #1\endcsname +{\@definecounter{#1}\expandafter\xdef\csname +the#1\endcsname{\@thmcounter{#1}}\global + \@namedef{#1}{\@defthm{#1}{#2}}\global + \@namedef{end#1}{\@endtheorem}}} +\def\@defthm#1#2{\refstepcounter + {#1}\@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}} +\def\@xdefthm#1#2{\@begindef{#2}{\csname the#1\endcsname}\ignorespaces} +\def\@ydefthm#1#2[#3]{\trivlist \item[\hskip 10pt\hskip + \labelsep{\it #2\savebox\@tempboxa{#3}\ifdim + \wd\@tempboxa>\z@ \ \box\@tempboxa\fi.}]\ignorespaces} +\def\@begindef#1#2{\trivlist \item[\hskip 10pt\hskip + \labelsep{\it #1\ \rm #2.}]} +% +\def\theequation{\arabic{equation}} +% +\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \else \newpage \fi \thispagestyle{empty}\c@page\z@} +\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi} +% +\arraycolsep 2.5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt +\tabbingsep \labelsep +% +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt \fboxrule = .4pt +% +\newcounter{part} +\newcounter{section} +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] +% +\def\thepart{\Roman{part}} +\def\thesection {\arabic{section}} +\def\thesubsection {\thesection.\arabic{subsection}} +\def\thesubsubsection {\itshape\thesubsection.\arabic{subsubsection}} +\def\theparagraph {\thesubsubsection.\arabic{paragraph}} + +\def\@pnumwidth{1.55em} +\def\@tocrmarg {2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{3} + +\def\tableofcontents{\section*{Contents\@mkboth{CONTENTS}{CONTENTS}} + \@starttoc{toc}} +\def\l@part#1#2{\addpenalty{\@secpenalty} + \addvspace{2.25em plus 1pt} \begingroup + \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip +-\@pnumwidth + {\large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par + \nobreak \endgroup} +\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt} +\@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par + \endgroup} +\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} +\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} +\def\listoffigures{\section*{List of Figures\@mkboth + {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}} +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\def\listoftables{\section*{List of Tables\@mkboth + {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}} +\let\l@table\l@figure +% +\newif\if@restonecol +\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi +\columnseprule \z@ +\columnsep 35pt\twocolumn[\section*{Index}] + \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@ + \parskip\z@ plus .3pt\relax\let\item\@idxitem} +\def\@idxitem{\par\hangindent 40pt} +\def\subitem{\par\hangindent 40pt \hspace*{20pt}} +\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}} +\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi} +\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax} +% +\def\footnoterule{\kern-3\p@ + \hrule \@height 0.2\p@ \@width 47\p@ + \kern 2.6\p@ +} + +\long\def\@makefntext#1{\parindent 1em\noindent + $^{\@thefnmark}$#1} +% +\setcounter{topnumber}{3} +\def\topfraction{.99} +\setcounter{bottomnumber}{1} +\def\bottomfraction{.5} +\setcounter{totalnumber}{3} +\def\textfraction{.01} +\def\floatpagefraction{.85} +\setcounter{dbltopnumber}{2} +\def\dbltopfraction{.95} +\def\dblfloatpagefraction{.96} +% +\long\def\@makecaption#1#2{\vskip 1pc \setbox\@tempboxa\hbox{#1.\hskip +1em\relax #2} + \ifdim \wd\@tempboxa >\hsize #1. #2\par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi} + +\def\nocaption{\refstepcounter\@captype \par + \vskip 1pc \hbox to\hsize{\hfil \footnotesize Figure \thefigure + \hfil}} +% +\newcounter{figure} +\def\thefigure{\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{Fig.\ \thefigure}% +\def\figure{\let\normalsize\footnotesize\normalsize\@float{figure}} +\let\endfigure\end@float +\@namedef{figure*}{\@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} +% +\newcounter{table} +\def\thetable{\@arabic\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\newlength\belowcaptionskip +\setlength\belowcaptionskip{1\p@} +% +\def\FigName{figure}% +\long\def\@caption#1[#2]#3{\par\begingroup + \@parboxrestore + \normalsize \bf \centering + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} +% +% +\newbox\tbbox +\long\def\@makecaption#1#2{% + \ifx\FigName\@captype + \vskip 7.3pt + \setbox\@tempboxa\hbox{\figcaptionfont{#1}.\hskip7.3pt\relax #2\par}% + \ifdim \wd\@tempboxa >\hsize + \figcaptionfont{#1}.\hskip7.3pt\relax #2\par + \else + \centerline{\box\@tempboxa}% + \fi + \else% + \setbox\tbbox=\vbox{\hsize\tempdimen{\tablenumfont #1}\ {\tablecaptionfont #2\par}}% + \setbox\@tempboxa\hbox{\hsize\tempdimen{\tablenumfont #1}\ {\tablecaptionfont #2\par}\vphantom{jgq}}% + \ifdim \wd\@tempboxa >\tempdimen + \centerline{\box\tbbox}% + \else + \centerline{\box\@tempboxa}% + \fi + \vskip\belowcaptionskip + \fi} +% +\def\fnum@table{Table~\thetable.\ } +\def\table{\let\normalsize\footnotesize \normalsize\@float{table}} +\let\endtable\end@float +\@namedef{table*}{\@dblfloat{table}} +\@namedef{endtable*}{\end@dblfloat} +\def\ijcatable#1{\@narrowfig #1\relax + \let\caption\@atcap \let\nocaption\@atnocap + \def\@tmpnf{}\@ifnextchar[{\@xntab}{\@ntab}} +\def\endijcatable{\hbox to \textwidth{\hfil +\vbox{\hsize \@narrowfig +\box\@nfcapbox +{\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}} +\vskip -1pt +\box\@nfigbox\vskip -1pt +{\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}}}\hfil} +\end@float} +\def\@xntab[#1]{\def\@tmpnf{[#1]}\@ntab} +\def\@ntab{\expandafter\table\@tmpnf + \setbox\@nfigbox\vbox\bgroup + \hsize \@narrowfig \@parboxrestore} +\def\@atmakecap #1#2{\setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2} + \ifdim \wd\@tempboxa >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi} +\def\@atcap{\par\egroup\refstepcounter\@captype + \@dblarg{\@atcapx\@captype}} +\long\def\@atcapx#1[#2]#3{\setbox\@nfcapbox\vbox {\hsize \wd\@nfigbox + \@parboxrestore + \@atmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}\par}} +\def\@atnocap{\egroup \refstepcounter\@captype + \setbox\@nfcapbox\vbox {\hsize \wd\@nfigbox + \hbox to\hsize{\hfil \footnotesize Table \thetable\hfil}}} +% +\newdimen\tabledim +% +\long\def\tbl#1#2{% + \setbox\tempbox\hbox{\tablefont #2}% + \tabledim\hsize\advance\tabledim by -\wd\tempbox + \tempdimen\wd\tempbox + \global\divide\tabledim\tw@ + \caption{#1} + \centerline{\box\tempbox} + }% +% +\newenvironment{tabnote}{% +\par%\addvspace{-1pt} +\tabnotefont +\@ifnextchar[{\@tabnote}{\@tabnote[]}}{% +\par} +\def\@tabnote[#1]{\def\@Tempa{#1}\leftskip\tabledim\rightskip\leftskip\ifx\@Tempa\@empty\else{\it #1:}\ \fi\ignorespaces} +% +\def\tabnoteentry#1#2{\parindent0pt\par\@hangfrom{#1}{#2}} +\def\Note#1#2{\parindent0pt\par\hangindent3.7pt{\it #1}\ #2} +% + +\def\Hline{% + \noalign{\ifnum0=`}\fi\hrule \@height .5pt \futurelet + \@tempa\@xhline} +% +\def\narrowfig#1{\@narrowfig #1\relax + \let\caption\@nfcap \let\nocaption\@nfnocap + \def\@tmpnf{}\@ifnextchar[{\@xnfig}{\@nfig}} +\def\endnarrowfig{\hbox to \textwidth{\if@nfeven + \box\@nfcapbox\hfil\box\@nfigbox + \else \box\@nfigbox\hfil\box\@nfcapbox\fi}\end@float} +\def\@xnfig[#1]{\def\@tmpnf{[#1]}\@nfig} +\def\@nfig{\expandafter\figure\@tmpnf + \setbox\@nfigbox\vbox\bgroup + \hsize \@narrowfig \@parboxrestore} +\def\@nfmakecap #1#2{\setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2} + \ifdim \wd\@tempboxa >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox +to\hsize{\if@nfeven\else\hfil\fi\box\@tempboxa\if@nfeven\hfil\fi} + \fi} +\def\@nfcap{\par\egroup\refstepcounter\@captype + \@dblarg{\@nfcapx\@captype}} +\long\def\@nfcapx#1[#2]#3{\@seteven + \setbox\@nfcapbox\vbox to \ht\@nfigbox + {\hsize \textwidth \advance\hsize -2pc \advance\hsize -\wd\@nfigbox + \@parboxrestore + \vfil + \@nfmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \vfil}} +\def\@nfnocap{\egroup \refstepcounter\@captype \@seteven + \setbox\@nfcapbox\vbox to \ht\@nfigbox + {\hsize \textwidth \advance\hsize -2pc \advance\hsize -\wd\@nfigbox + \@parboxrestore + \vfil + \hbox to\hsize{\if@nfeven\else\hfil\fi + \footnotesize Figure \thefigure + \if@nfeven\hfil\fi} + \vfil}} +\def\@seteven{\@nfeventrue + \@ifundefined{r@@nf\thefigure}{}{% + \edef\@tmpnf{\csname r@@nf\thefigure\endcsname}% + \edef\@tmpnf{\expandafter\@getpagenum\@tmpnf}% + \ifodd\@tmpnf\relax\@nfevenfalse\fi}% +\label{@nf\thefigure}\edef\@tmpnfx{\if@nfeven e\else o\fi} +\edef\@tmpnf{\write\@unused {\noexpand\ifodd \noexpand\c@page + \noexpand\if \@tmpnfx e\noexpand\@nfmsg{\thefigure} \noexpand\fi + \noexpand\else + \noexpand\if \@tmpnfx o\noexpand\@nfmsg{\thefigure}\noexpand\fi + \noexpand\fi }}\@tmpnf} +\def\@nfmsg#1{Bad narrowfig: Figure #1 on page \thepage} + +\newdimen\@narrowfig +\newbox\@nfigbox +\newbox\@nfcapbox +\newif\if@nfeven + + +\def\maketitle{% + \thispagestyle{titlepage}% + \newpage + \global\@topnum\z@ + \twocolumn[\@maketitle]% + \let\maketitle\relax + \global\let\@sponsors\@empty +} +% +\def\@maketitle{\newpage \thispagestyle{titlepage}\par + \begingroup \lineskip = \z@\null + \vspace{-1.75em} + \begin{picture}(5,5) + \includegraphics[width=1in]{logojuliacon.pdf} + \end{picture} + \vspace{1.75em} + \vskip -7pt\relax %-18.5pt + \parindent\z@ \LARGE {\centering \hyphenpenalty\@M + {\titlefont \@title} \par + \global\firstfoot %aiellom + \global\runningfoot %aiellom +} +\label{@firstpg} +{ +\begin{center}% + \vskip 0.1em% + {\large + \lineskip .75em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1.5em% + \end{center}\par + \@thanks +} + \vskip 23pt\relax + \endgroup + } +\newbox\@abstract +\newbox\@terms +\newbox\@keywords + + +% +\newenvironment{abstract} +{\section*{ABSTRACT}\par\fontsize{10}{12}\indent\ignorespaces} +{ + { \ifvoid\@terms\else\box\@terms\fi + \@keywords \@juliaconformat\empty}\vskip6pt} +% +\def\terms#1{\setbox\@terms=\vbox{\hsize20pc% + \footnotesize% + \parindent 0pt \noindent + { \section*{General Terms}} \ignorespaces #1{\vspace{-0.75em}}}} +\def\keywords#1{\gdef\@keywords{\hsize20pc% + \parindent 0pt\noindent\ignorespaces% + {{\vspace{-0.75em}} \section*{Keywords}} \ignorespaces #1{\vspace{1em}}}} +%} + +\def\category#1#2#3{\@ifnextchar + [{\@category{#1}{#2}{#3}}{\@xcategory{#1}{#2}{#3}}} +\def\@category#1#2#3[#4]{\edef\@tempa{\ifx \@categories\@empty + \else ; \fi}{\def\protect{\noexpand\protect + \noexpand}\def\and{\noexpand\and}\xdef\@categories{\@categories\@tempa #1 +[{\bf #2}]: + #3\kern\z@---\hskip\z@{\it #4}}}} +\def\@xcategory#1#2#3{\edef\@tempa{\ifx \@categories\@empty \else ; +\fi}{\def\protect{\noexpand\protect\noexpand}\def\and{\noexpand + \and}\xdef\@categories{\@categories\@tempa #1 [{\bf #2}]: #3}}} +\def\@categories{} + +\newenvironment{ackslike}[1] + {\par \footnotesize + \@ucheadfalse + \@startsection{subsection}{2}{\z@}{-16pt plus -2pt minus -1pt}{2pt}{\sf}* + {\uppercase{#1}}\par\normalsize + } + {\par} +\newenvironment{acks}{\begin{ackslike}{ \normalsize\rm\bf Acknowledgments}}{\end{ackslike}} +% + +\newcommand\headingtable{% + \begin{tabular}[b]{l} {\@journalName}\end{tabular}} +\markright{\protect\headingtable} +\mark{{}{}} +\def\bull{{\fontsize{7}{7}\selectfont\raise1.6pt\hbox{$\bullet$}}} +\def\ps@myheadings{\let\@mkboth\@gobbletwo +\def\@oddhead{ \fontsize{9}{12} \rm {{\itshape\headingtable}\hfill \@volume(\@issue), \@year}} +\def\@oddfoot{\fontsize{9}{12}\@runningfoot} +\def\@evenhead{ \fontsize{9}{12} \rm {\itshape\headingtable}\hfill \@volume(\@issue), \@year} +\def\@evenfoot{\fontsize{9}{12}\@runningfoot} +\def\sectionmark##1{}\def\subsectionmark##1{}} +% +\def\@runningfoot{} +\def\runningfoot{\def\@runningfoot{ \fontsize{9}{12} \thepage}} +\def\@firstfoot{} +\def\firstfoot{\def\@firstfoot{\fontsize{9}{12} \thepage}} +\def\ps@titlepage{\let\@mkboth\@gobbletwo +\def\@oddhead{}\def\@oddfoot{\fontsize{9}{12}\@firstfoot}\def\@evenhead{}\def\@evenfoot{\fontsize{9}{12}\@firstfoot}} +% +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +\def\@marrayclassiv{\@addtopreamble{$\displaystyle \@nextchar$}} +\def\@marrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or + \or \or \@addamp \or + \@acolampacol \or \@firstampfalse \@acol \fi +\edef\@preamble{\@preamble + \ifcase \@chnum + \hfil$\relax\displaystyle\@sharp$\hfil \or $\relax\displaystyle\@sharp$\hfil + \or \hfil$\relax\displaystyle\@sharp$\fi}} +\def\marray{\arraycolsep 2.5pt\let\@acol\@arrayacol \let\@classz\@marrayclassz + \let\@classiv\@marrayclassiv \let\\\@arraycr\def\@halignto{}\@tabarray} +\def\endmarray{\crcr\egroup\egroup} +% +\ps@myheadings \pagenumbering{arabic} \onecolumn +% +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +% +\def\newdef#1{\@ifnextchar[{\@xnewdef{#1}}{\@ynewdef{#1}}} +\def\@xnewdef#1[#2]#3{\newtheorem{italic@#1}[#2]{{\em #3}}\@newdef{#1}} +\def\@ynewdef#1#2{\@ifnextchar[{\@xynewdef{#1}{#2}}{\@yynewdef{#1}{#2}}} +\def\@xynewdef#1#2[#3]{\newtheorem{italic@#1}{{\em #2}}[#3]\@newdef{#1}} +\def\@yynewdef#1#2{\newtheorem{italic@#1}{{\em #2}}\@newdef{#1}} +\def\@newdef#1{\newenvironment{#1}{\@ifnextchar[{\@xstartdef{#1}}{\@ystartdef{#1}}}{\end{italic@#1}}} +\def\@xstartdef#1[#2]{\begin{italic@#1}[{\em #2}]\rm} +\def\@ystartdef#1{\begin{italic@#1}\rm} +% +%\def\@oddfoot{\hbox{}\hfill\@runningfoot \thepage} +%\def\@evenfoot{\@runningfoot\hfill\hbox{} \thepage } +%\def\firstfootsize{\@setsize\firstfootsize{9pt}\vipt\@vipt} +\def\ps@titlepage{\let\@mkboth\@gobbletwo +\def\@oddhead{\fontsize{9}{12} \rm {\hskip 19pt\itshape}}\def\@oddfoot{\hbox{}\hfill\fontsize{9}{12}\@firstfoot}% +\def\@evenhead{}\def\@evenfoot{\firstfootsize\@firstfoot\hfill\hbox{}}} +% +\def\@listI{\leftmargin\leftmargini + \labelwidth\leftmargini\advance\labelwidth-\labelsep + \parsep 0pt plus 1pt + \topsep 6pt plus 2pt minus 2pt + \itemsep 2pt plus 1pt minus .5pt} +\let\@listi\@listI +\@listi +% +\def\longenum{\ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list + {\csname label\@enumctr\endcsname}{\usecounter + {\@enumctr}\labelwidth\z@\leftmargin\z@ + \itemindent\parindent \advance\itemindent\labelsep}\fi} +% +\def\ack{ \par \footnotesize +\@ucheadfalse +\@startsection{subsection}{2}{\z@}{-16pt plus -2pt minus + -1pt}{2pt}{\sf}*{ACKNOWLEDGMENT}\par\normalsize +} +\def\endack{\par} + +% provide both spellings of Acknowledgment(s) +\let\acknowledgments\acks +\let\endacknowledgments\endacks +\let\acknowledgment\ack +\let\endacknowledgment\endack +% +\newcommand{\bibemph}[1]{{\em#1}} +\newcommand{\bibemphic}[1]{{\em#1\/}} +\newcommand{\bibsc}[1]{{\sc#1}} + +\newcommand\bibyear[2]{% + \unskip{\hskip8pt}\ignorespaces#1\unskip + \if..#2{\hskip6pt}\else {\hskip8pt}#2 \fi +} +% +\let\l@table\l@figure +\newdimen\bibindent +\setlength\bibindent{1.5em} +\newenvironment{thebibliography}[1] + {\section{\refname}%% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty + +% +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} +% +\def\@juliaconformat{} +\def\juliaconformat#1{\gdef\@juliaconformat{\noindent{\bf JuliaCon Reference Format:}\\[2pt] #1\par}} +% +\def\received#1#2{% + \par% + \tiny + \addvspace{12\p@}% + \parindent\z@% +\small\scriptsize{Received\ #1;\ accepted\ #2}% +\par% +} + +% +\sloppy +\clubpenalty10000 +\widowpenalty10000% +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +% +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty + +\voffset-5pc +\hoffset-6.03pc + +\usepackage{times} +%% \usepackage[mtbold]{mathtime} +\usepackage{bm} +\usepackage{graphicx}% Include figure files +\usepackage{hyperref} +%%\usepackage{microtype} +\renewcommand{\ttdefault}{cmtt} + +\usepackage{jlcode} + +\usepackage{authblk} + +% Fixes issue related to listing captions: https://github.com/JuliaCon/JuliaConSubmission.jl/issues/31 +\usepackage{caption} +\captionsetup[lstlisting]{singlelinecheck=false, margin=0pt} +\renewcommand\lstlistingname{Code} + +\endinput + +% end of juliacon.cls diff --git a/paper/logojuliacon.pdf b/paper/logojuliacon.pdf new file mode 100644 index 0000000..744eaee Binary files /dev/null and b/paper/logojuliacon.pdf differ diff --git a/paper/paper.aux b/paper/paper.aux new file mode 100644 index 0000000..11a054d --- /dev/null +++ b/paper/paper.aux @@ -0,0 +1,42 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\citation{zhang2019dangerousskills} +\citation{lee2026mobilesafetybench} +\citation{jabbour2025genagents} +\citation{yang2008switching} +\citation{martinez2020multiparty} +\citation{omlin2024} +\citation{omlin2023} +\citation{promptingtools2025} +\citation{ollama2026} +\citation{vosk2020} +\citation{fasterwhisper2025} +\newlabel{@firstpg}{{}{1}{}{Doc-Start}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2}Approach}{1}{section.2}\protected@file@percent } +\bibstyle{juliacon} +\bibdata{ref.bib} +\bibcite{zhang2019dangerousskills}{1} +\bibcite{lee2026mobilesafetybench}{2} +\bibcite{jabbour2025genagents}{3} +\bibcite{yang2008switching}{4} +\bibcite{martinez2020multiparty}{5} +\bibcite{omlin2024}{6} +\bibcite{omlin2023}{7} +\bibcite{promptingtools2025}{8} +\bibcite{ollama2026}{9} +\bibcite{vosk2020}{10} +\bibcite{fasterwhisper2025}{11} +\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Composable primitives for LLM interaction, voice input, text capture, and typed or spoken output.}}{2}{table.caption.3}\protected@file@percent } +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{tab:primitives}{{1}{2}{Composable primitives for LLM interaction, voice input, text capture, and typed or spoken output}{table.caption.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3}Implementation and Results}{2}{section.3}\protected@file@percent } +\newlabel{code:chatbot}{{1}{2}{Illustrative voice chatbot composed with the primitives in Table~\ref {tab:primitives}}{lstlisting.1}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}{\ignorespaces Illustrative voice chatbot composed with the primitives in Table~\ref {tab:primitives}.}}{2}{lstlisting.1}\protected@file@percent } +\newlabel{code:jupyter}{{2}{2}{Application-specific Jupyter commands built from predefined LLM commands. In this example, \texttt {LLM.type\_answer} answers an uttered instruction directly, whereas \texttt {LLM.type\_text\_answer\_to} answers with respect to selected text or clipboard content; the first command types the appropriate IPython magic for a spoken task and the second types a markdown explanation of the selected cell, demonstrating concise application-specific LLM interaction}{lstlisting.2}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}{\ignorespaces Application-specific Jupyter commands built from predefined LLM commands. In this example, \texttt {LLM.type\_answer} answers an uttered instruction directly, whereas \texttt {LLM.type\_text\_answer\_to} answers with respect to selected text or clipboard content; the first command types the appropriate IPython magic for a spoken task and the second types a markdown explanation of the selected cell, demonstrating concise application-specific LLM interaction.}}{2}{lstlisting.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}Conclusions}{2}{section.4}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5}References}{2}{section.5}\protected@file@percent } +\gdef \@abspage@last{2} diff --git a/paper/paper.bbl b/paper/paper.bbl new file mode 100644 index 0000000..d29b5bd --- /dev/null +++ b/paper/paper.bbl @@ -0,0 +1,81 @@ +\begin{thebibliography}{10} + +\bibitem{zhang2019dangerousskills} +Nan Zhang, Xianghang Mi, Xuan Feng, XiaoFeng Wang, Yuan Tian, Feng Qian, et~al. +Dangerous skills: Understanding and mitigating security risks of + voice-controlled third-party functions on virtual personal assistant systems. +In {\em 2019 IEEE Symposium on Security and Privacy (SP)}, pages 1381--1396, + 2019. +\href{http://dx.doi.org/10.1109/SP.2019.00016}{doi:10.1109/SP.2019.00016}. + +\bibitem{lee2026mobilesafetybench} +Juyong Lee, Dongyoon Hahm, June~Suk Choi, W.~Bradley Knox, and Kimin Lee. +{M}obile{S}afety{B}ench: Evaluating safety of autonomous agents in mobile + device control. +{\em Proceedings of the AAAI Conference on Artificial Intelligence}, + 40(44):37565--37573, 2026. +\href{http://dx.doi.org/10.1609/aaai.v40i44.41090}{doi:10.1609/aaai.v40i44.41090}. + +\bibitem{jabbour2025genagents} +Jason Jabbour and Vijay Janapa~Reddi. +Generative {AI} agents in autonomous machines: A safety perspective. +In {\em Proceedings of the 43rd IEEE/ACM International Conference on + Computer-Aided Design}, pages 1--13, 2025. +\href{http://dx.doi.org/10.1145/3676536.3698390}{doi:10.1145/3676536.3698390}. + +\bibitem{yang2008switching} +Fan Yang, Peter~A. Heeman, and Andrew Kun. +Switching to real-time tasks in multi-tasking dialogue. +In {\em Proceedings of the 22nd International Conference on Computational + Linguistics - {COLING} '08}, volume~1, pages 1025--1032. Association for + Computational Linguistics, 2008. +\href{http://dx.doi.org/10.3115/1599081.1599210}{doi:10.3115/1599081.1599210}. + +\bibitem{martinez2020multiparty} +Victor~R. Martinez and James Kennedy. +A multiparty chat-based dialogue system with concurrent conversation tracking + and memory. +In {\em Proceedings of the 2nd Conference on Conversational User Interfaces}, + pages 1--9. ACM, 2020. +\href{http://dx.doi.org/10.1145/3405755.3406121}{doi:10.1145/3405755.3406121}. + +\bibitem{omlin2024} +Samuel Omlin. +{J}ust{S}ay{I}t.jl: A fresh approach to open source voice assistant + development. +{\em The Proceedings of the JuliaCon Conferences}, 6(66):121, 2024. +\href{http://dx.doi.org/10.21105/jcon.00121}{doi:10.21105/jcon.00121}. + +\bibitem{omlin2023} +Samuel Omlin. +Quick assembly of personalized voice assistants with {J}ust{S}ay{I}t. +JuliaCon 2023, 2023. +\url{https://pretalx.com/juliacon2023/talk/HC8HLQ/}. Accessed: 2026-03-15. + +\bibitem{promptingtools2025} +{svilupp and contributors}. +{P}rompting{T}ools.jl. +Project documentation and README, 2025. +GitHub repository, \url{https://github.com/svilupp/PromptingTools.jl}. + Accessed: 2026-03-15. + +\bibitem{ollama2026} +{Ollama}. +Ollama. +Project website, 2026. +\url{https://ollama.com/}. Accessed: 2026-03-15. + +\bibitem{vosk2020} +Nickolay~V. Shmyrev and {Vosk contributors}. +{V}osk: Offline speech recognition toolkit. +Project website and documentation, 2020. +\url{https://alphacephei.com/vosk/}. Accessed: 2026-03-15. + +\bibitem{fasterwhisper2025} +{SYSTRAN and contributors}. +faster-whisper. +Project documentation and README, 2025. +GitHub repository, \url{https://github.com/SYSTRAN/faster-whisper}. Accessed: + 2026-03-15. + +\end{thebibliography} diff --git a/paper/paper.blg b/paper/paper.blg new file mode 100644 index 0000000..eea0026 --- /dev/null +++ b/paper/paper.blg @@ -0,0 +1,46 @@ +This is BibTeX, Version 0.99d (TeX Live 2023/Debian) +Capacity: max_strings=200000, hash_size=200000, hash_prime=170003 +The top-level auxiliary file: paper.aux +The style file: juliacon.bst +Database file #1: ref.bib +You've used 11 entries, + 2314 wiz_defined-function locations, + 595 strings with 6531 characters, +and the built_in function-call counts, 2980 in all, are: += -- 289 +> -- 95 +< -- 5 ++ -- 37 +- -- 26 +* -- 158 +:= -- 429 +add.period$ -- 46 +call.type$ -- 11 +change.case$ -- 11 +chr.to.int$ -- 0 +cite$ -- 11 +duplicate$ -- 140 +empty$ -- 330 +format.name$ -- 26 +if$ -- 723 +int.to.chr$ -- 0 +int.to.str$ -- 11 +missing$ -- 6 +newline$ -- 69 +num.names$ -- 11 +pop$ -- 69 +preamble$ -- 1 +purify$ -- 0 +quote$ -- 0 +skip$ -- 80 +stack$ -- 0 +substring$ -- 161 +swap$ -- 48 +text.length$ -- 5 +text.prefix$ -- 0 +top$ -- 0 +type$ -- 0 +warning$ -- 0 +while$ -- 26 +width$ -- 13 +write$ -- 143 diff --git a/paper/paper.fdb_latexmk b/paper/paper.fdb_latexmk new file mode 100644 index 0000000..6b85693 --- /dev/null +++ b/paper/paper.fdb_latexmk @@ -0,0 +1,155 @@ +# Fdb version 4 +["bibtex paper"] 1775051380.22171 "paper.aux" "paper.bbl" "paper" 1775051382.91326 0 + "./juliacon.bst" 1775036453.23905 21086 1e14bf062c44ebb5916791a5ff50fbf4 "" + "./ref.bib" 1775051350.24125 4531 c378e2ad7a26e12a9cf6304f82c09fbc "" + "paper.aux" 1775051382.84063 3301 7b3ddfded8c072f4af61ef1297c1cac4 "pdflatex" + (generated) + "paper.bbl" + "paper.blg" + (rewritten before read) +["pdflatex"] 1775051380.23224 "paper.tex" "paper.pdf" "paper" 1775051382.9134 0 + "/etc/texmf/web2c/texmf.cnf" 1742576599.91339 475 c0e671620eb5563b2130f56340a5fde8 "" + "/home/omlins/.texlive2023/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1774811702.08427 323313 fe1bba4b4a2a3542f99e580a1d7bab1d "" + "/home/omlins/texmf/fonts/enc/dvips/cm-super/cm-super-t1.enc" 1136849721 2971 def0b6c1f0b107b3b936def894055589 "" + "/home/omlins/texmf/fonts/tfm/adobe/times/ptmb8r.tfm" 1136768653 4524 6bce29db5bc272ba5f332261583fee9c "" + "/home/omlins/texmf/fonts/tfm/adobe/times/ptmb8t.tfm" 1136768653 6880 f19b8995b61c334d78fc734065f6b4d4 "" + "/home/omlins/texmf/fonts/tfm/adobe/times/ptmr8r.tfm" 1136768653 4408 25b74d011a4c66b7f212c0cc3c90061b "" + "/home/omlins/texmf/fonts/tfm/adobe/times/ptmr8t.tfm" 1136768653 6672 e3ab9e37e925f3045c9005e6d1473d56 "" + "/home/omlins/texmf/fonts/tfm/adobe/times/ptmri8r.tfm" 1136768653 4640 532ca3305aad10cc01d769f3f91f1029 "" + "/home/omlins/texmf/fonts/tfm/adobe/times/ptmri8t.tfm" 1136768653 6944 94c55ad86e6ea2826f78ba2240d50df9 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmbsy10.tfm" 1136768653 1116 4e6ba9d7914baa6482fd69f67d126380 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmbx10.tfm" 1136768653 1328 c834bbb027764024c09d3d2bf908b5f0 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmbx12.tfm" 1136768653 1324 c910af8c371558dc20f2d7822f66fe64 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmbx5.tfm" 1136768653 1332 f817c21a1ba54560425663374f1b651a "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmbx6.tfm" 1136768653 1344 8a0be4fe4d376203000810ad4dc81558 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmbx8.tfm" 1136768653 1332 1fde11373e221473104d6cc5993f046e "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmbx9.tfm" 1136768653 1328 5442e22a7072966dbaf88ca900acf3f0 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmex10.tfm" 1136768653 992 662f679a0b3d2d53c1b94050fdaa3f50 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmmi8.tfm" 1136768653 1520 eccf95517727cb11801f4f1aee3a21b4 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmmi9.tfm" 1136768653 1524 d89e2d087a9828407a196f428428ef4a "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmmib10.tfm" 1136768653 1524 554068197b70979a55370e6c6495f441 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmr17.tfm" 1136768653 1292 296a67155bdbfc32aa9c636f21e91433 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmr8.tfm" 1136768653 1292 21c1c5bfeaebccffdb478fd231a0997d "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmr9.tfm" 1136768653 1292 6b21b9c2c7bebb38aa2273f7ca0fb3af "" + "/home/omlins/texmf/fonts/tfm/public/cm/cmsy10.tfm" 1136768653 1124 6c73e740cf17375f03eec0ee63599741 "" + "/home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy10.tfm" 1136768653 520 82a3d37183f34b6eb363a161dfc002c2 "" + "/home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy5.tfm" 1136768653 520 d082ac03a1087bc1ec2a06e24a9f68c0 "" + "/home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy6.tfm" 1136768653 520 4889cce2180234b97cad636b6039c722 "" + "/home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy8.tfm" 1136768653 520 7bb3abb160b19e0ed6ac404bb59052b7 "" + "/home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy9.tfm" 1136768653 520 1cc7cc05f4d7bae5c23bf7516f88fa52 "" + "/home/omlins/texmf/fonts/tfm/public/latex-fonts/lasyb10.tfm" 1136768653 520 4bf1455197d190cb95c579bde4c2f0ba "" + "/home/omlins/texmf/fonts/type1/public/cm-super/sftt0800.pfb" 1215737283 175641 e30a691dc1402b08fd6535cf8a31e5b7 "" + "/home/omlins/texmf/fonts/type1/public/cm-super/sftt0900.pfb" 1215737283 170827 2e4b634de7b58578eae1dc93e51dfe48 "" + "/home/omlins/texmf/fonts/type1/urw/times/utmb8a.pfb" 1136849748 44729 811d6c62865936705a31c797a1d5dada "" + "/home/omlins/texmf/fonts/type1/urw/times/utmr8a.pfb" 1136849748 46026 6dab18b61c907687b520c72847215a68 "" + "/home/omlins/texmf/fonts/type1/urw/times/utmri8a.pfb" 1136849748 45458 a3faba884469519614ca56ba5f6b1de1 "" + "/home/omlins/texmf/fonts/vf/adobe/times/ptmb8t.vf" 1136768653 2340 df9c920cc5688ebbf16a93f45ce7bdd3 "" + "/home/omlins/texmf/fonts/vf/adobe/times/ptmr8t.vf" 1136768653 2348 91706c542228501c410c266421fbe30c "" + "/home/omlins/texmf/fonts/vf/adobe/times/ptmri8t.vf" 1136768653 2328 6cd7df782b09b29cfc4d93e55b6b9a59 "" + "/home/omlins/texmf/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 "" + "/home/omlins/texmf/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed "" + "/home/omlins/texmf/tex/latex/atveryend/atveryend.sty" 1576191570 19336 ce7ae9438967282886b3b036cfad1e4d "" + "/home/omlins/texmf/tex/latex/base/atbegshi-ltx.sty" 1705352648 3045 273c666a54e60b9f730964f431a56c1b "" + "/home/omlins/texmf/tex/latex/base/atveryend-ltx.sty" 1705352648 2462 6bc53756156dbd71c1ad550d30a3b93f "" + "/home/omlins/texmf/tex/latex/base/fontenc.sty" 1705352648 5119 a04a8b68ab4f6ce800a41f7f8012a10e "" + "/home/omlins/texmf/tex/latex/base/inputenc.sty" 1705352648 5048 425739d70251273bf93e3d51f3c40048 "" + "/home/omlins/texmf/tex/latex/base/latexsym.sty" 1705352648 2853 22ef275b938b198870f6474b02bbd3b1 "" + "/home/omlins/texmf/tex/latex/base/t1cmtt.fd" 1705352648 2443 790016d75def8d3127df5c216a45abcc "" + "/home/omlins/texmf/tex/latex/base/textcomp.sty" 1705352648 2894 fc64867f9d198785eabe71a88276a9cb "" + "/home/omlins/texmf/tex/latex/base/ulasy.fd" 1705352648 2233 223b021f06a068bcbf05919274832728 "" + "/home/omlins/texmf/tex/latex/caption/caption.sty" 1696191071 56128 c2ccf1a29d78c33bc553880402e4fb9a "" + "/home/omlins/texmf/tex/latex/caption/caption3.sty" 1696191071 72619 ee90b6612147680fd73c3b1406a74245 "" + "/home/omlins/texmf/tex/latex/etoolbox/etoolbox.sty" 1601931149 46845 3b58f70c6e861a13d927bff09d35ecbc "" + "/home/omlins/texmf/tex/latex/eurosym/eurosym.sty" 1137110118 3028 8faeef64adee9b964b5e7f5e45921024 "" + "/home/omlins/texmf/tex/latex/l3backend/l3backend-pdftex.def" 1708427688 30006 3d512c0edd558928ddea1690180ef77e "" + "/home/omlins/texmf/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/home/omlins/texmf/tex/latex/listings/listings.cfg" 1708550293 1830 20af84c556326f7c12b9202ebe363f56 "" + "/home/omlins/texmf/tex/latex/listings/listings.sty" 1708550293 81322 d02238bdeb305f2c9f9d0229f99371d0 "" + "/home/omlins/texmf/tex/latex/listings/lstmisc.sty" 1708550293 77022 5c8c440739265e7ba15b8379ece6ecd7 "" + "/home/omlins/texmf/tex/latex/listings/lstpatch.sty" 1708550293 329 f19f5da7234b51d16764e23d20999c73 "" + "/home/omlins/texmf/tex/latex/preprint/authblk.sty" 1368488610 7016 985a983ce041cc8959cd31133cba0244 "" + "/home/omlins/texmf/tex/latex/xcolor/xcolor.sty" 1700082560 55487 80a65caedd3722f4c20a14a69e785d8f "" + "/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc" 1165713224 4850 80dc9bab7f31fb78a000ccfed0e27cab "" + "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm0900.tfm" 1136768653 3584 d3d8ac8b25ca19c0a40b86a5db1e8ccc "" + "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm" 1136768653 3584 adb004a0c8e7c46ee66cad73671f37b4 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ectt0800.tfm" 1136768653 1536 0b0b8ca286de6a006b681926403f35cd "" + "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ectt0900.tfm" 1136768653 1536 ae7aab2f8a4bc9edfce2899f53ba88c3 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm" 1246382020 988 bdf658c3bfc2d96d3c8b02cfc1c94c20 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex9.tfm" 1246382020 996 a18840b13b499c08ac2de96a99eda4bc "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib5.tfm" 1246382020 1496 c79f6914c6d39ffb3759967363d1be79 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib6.tfm" 1246382020 1516 a3bf6a5e7ec4401b1f52092dfaaed242 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib8.tfm" 1246382020 1528 dab402b9d3774ca98baa037071cee7ae "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib9.tfm" 1246382020 1528 159d57adcba064aab4277245c826577d "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1246382020 916 f87d7c45f9c908e672703b83b72241a3 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1246382020 924 9904cf1d39e9767e7a3622f2a125a565 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1246382020 928 2dc8d444221b7a635bb58038579b861a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1246382020 908 2921f8a10601f252058503cc6570e581 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1246382020 940 75ac932a52f80982a9f8ea75d03a34cf "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1246382020 940 228d6584342e91276bf566bcf9716b83 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb" 1248133631 32734 69e00a6b65cedb993666e42eedb3d48f "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/latxfont/lcircle1.pfb" 1248133631 10594 310261a6407d360eda1ed257d05cd4df "" + "/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b "" + "/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" + "/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty" 1644112042 7237 bdd120a32c8fdb4b433cf9ca2e7cd98a "" + "/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 "" + "/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1701727651 17865 1a9bd36b4f98178fa551aca822290953 "" + "/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 "" + "/usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1593379760 20089 80423eac55aa175305d35b49e04fe23b "" + "/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd" 1359763108 961 6518c6525a34feb5e8250ffa91731cff "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd" 1359763108 961 d02606146ba5601b5645f987c92e6193 "" + "/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 "" + "/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1663965824 19448 1e988b341dda20961a6b931bcde55519 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1654720880 18387 8f900a490197ebaf93c02ae9476d4b09 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1654720880 8010 a8d949cbdbc5c983593827c9eec252e1 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1654720880 2671 7e67d78d9b88c845599a85b2d41f2e39 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx" 1667332637 2885 9c645d672ae17285bba324998918efd8 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1654720880 4023 293ea1c16429fc0c4cf605f4da1791a9 "" + "/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1705871765 48154 e46bf8adeb936500541441171d61726d "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1705871765 220920 fd3cbb5f1a2bc9b8f451b8b7d8171264 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1705871765 11026 182c63f139a71afd30a28e5f1ed2cd1c "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1705871765 14249 e67cb186717b7ab18d14a4875e7e98b5 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def" 1705871765 117112 05831178ece2cad4d9629dcf65099b11 "" + "/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1655478651 22555 6d8e155cfef6d82c3d5c742fea7c992e "" + "/usr/share/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty" 1665067230 13815 760b0c02f691ea230f5359c4e1de23a7 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/helvet.sty" 1586716065 1499 de0ad166b701b820e03588a29bb30798 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd" 1137110629 774 61d7da1e9f9e74989b196d147e623736 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty" 1586716065 856 8e0e5c8cca7b18e0400f97f5a2b90a99 "" + "/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" + "/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1657483315 9714 ba3194bd52c8499b3f1e3eb91d409670 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty" 1698869629 13231 2c742011581e2bf297e33520567d9464 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty" 1698869629 10214 547fd4d29642cb7c80bf54b49d447f01 "" + "/usr/share/texlive/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1707919699 40399 f2c302f7d2af602abb742093540a5834 "" + "/usr/share/texmf/web2c/texmf.cnf" 1707919699 40399 f2c302f7d2af602abb742093540a5834 "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1742806173 6800799 7f3995e95ce048634d1373f7cd4960aa "" + "bib.tex" 1775051380.2106 111 fb8dcbd9d4481bde59a06a28ec8a83ca "" + "header.tex" 1775051380.2106 725 c90c2fdfd5daa503c020fe4f3ef6beab "" + "jlcode.sty" 1774810368.85487 18247 c7ed2bfdf5b1011566e15a16b8dc985b "" + "journal_dat.tex" 1775051380.2106 150 1a88234c05dcde72be80d934b616f719 "" + "juliacon.cls" 1774810368.87487 30597 785899b4e284a01edd6bca4c84b3467c "" + "logojuliacon.pdf" 1774810368.88187 4937 0cb75c4e65b0cf72a69c7716f140efe5 "" + "paper.aux" 1775051382.84063 3301 7b3ddfded8c072f4af61ef1297c1cac4 "pdflatex" + "paper.bbl" 1775051380.2276 3124 56d21cea9d97ce1d52021a188a4432e5 "bibtex paper" + "paper.out" 1775051382.84163 556 171e6e486344b44191cb3394d9859377 "pdflatex" + "paper.tex" 1775040436.15421 9568 a6c9c6f7df02fa82510e9c12630f8e2f "" + (generated) + "paper.aux" + "paper.log" + "paper.out" + "paper.pdf" + (rewritten before read) diff --git a/paper/paper.fls b/paper/paper.fls new file mode 100644 index 0000000..8ae3a91 --- /dev/null +++ b/paper/paper.fls @@ -0,0 +1,296 @@ +PWD /home/omlins/tmpwdir/juliadev/JustSayItPub2/paper +INPUT /etc/texmf/web2c/texmf.cnf +INPUT /usr/share/texmf/web2c/texmf.cnf +INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf +INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt +INPUT paper.tex +OUTPUT paper.log +INPUT ./juliacon.cls +INPUT juliacon.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/helvet.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/helvet.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /home/omlins/texmf/tex/latex/base/latexsym.sty +INPUT /home/omlins/texmf/tex/latex/base/latexsym.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /home/omlins/texmf/tex/latex/base/inputenc.sty +INPUT /home/omlins/texmf/tex/latex/base/inputenc.sty +INPUT /home/omlins/texmf/tex/latex/base/fontenc.sty +INPUT /home/omlins/texmf/tex/latex/base/fontenc.sty +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm +INPUT ./journal_dat.tex +INPUT ./journal_dat.tex +INPUT ./journal_dat.tex +INPUT ./journal_dat.tex +INPUT journal_dat.tex +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm0900.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbx9.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /home/omlins/texmf/tex/generic/infwarerr/infwarerr.sty +INPUT /home/omlins/texmf/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /home/omlins/texmf/tex/latex/etoolbox/etoolbox.sty +INPUT /home/omlins/texmf/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /home/omlins/texmf/tex/generic/atbegshi/atbegshi.sty +INPUT /home/omlins/texmf/tex/latex/base/atbegshi-ltx.sty +INPUT /home/omlins/texmf/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /home/omlins/texmf/tex/latex/atveryend/atveryend.sty +INPUT /home/omlins/texmf/tex/latex/base/atveryend-ltx.sty +INPUT /home/omlins/texmf/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT ./jlcode.sty +INPUT jlcode.sty +INPUT /home/omlins/texmf/tex/latex/listings/listings.sty +INPUT /home/omlins/texmf/tex/latex/listings/listings.sty +INPUT /home/omlins/texmf/tex/latex/listings/lstpatch.sty +INPUT /home/omlins/texmf/tex/latex/listings/lstpatch.sty +INPUT /home/omlins/texmf/tex/latex/listings/lstpatch.sty +INPUT /home/omlins/texmf/tex/latex/listings/lstmisc.sty +INPUT /home/omlins/texmf/tex/latex/listings/lstmisc.sty +INPUT /home/omlins/texmf/tex/latex/listings/lstmisc.sty +INPUT /home/omlins/texmf/tex/latex/listings/listings.cfg +INPUT /home/omlins/texmf/tex/latex/listings/listings.cfg +INPUT /home/omlins/texmf/tex/latex/listings/listings.cfg +INPUT /home/omlins/texmf/tex/latex/xcolor/xcolor.sty +INPUT /home/omlins/texmf/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx +INPUT /home/omlins/texmf/tex/latex/base/textcomp.sty +INPUT /home/omlins/texmf/tex/latex/base/textcomp.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /home/omlins/texmf/tex/latex/eurosym/eurosym.sty +INPUT /home/omlins/texmf/tex/latex/eurosym/eurosym.sty +INPUT /home/omlins/texmf/tex/latex/base/fontenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty +INPUT /home/omlins/texmf/tex/latex/base/t1cmtt.fd +INPUT /home/omlins/texmf/tex/latex/base/t1cmtt.fd +INPUT /home/omlins/texmf/tex/latex/base/t1cmtt.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ectt0900.tfm +INPUT /home/omlins/texmf/tex/latex/preprint/authblk.sty +INPUT /home/omlins/texmf/tex/latex/preprint/authblk.sty +INPUT /home/omlins/texmf/tex/latex/caption/caption.sty +INPUT /home/omlins/texmf/tex/latex/caption/caption.sty +INPUT /home/omlins/texmf/tex/latex/caption/caption3.sty +INPUT /home/omlins/texmf/tex/latex/caption/caption3.sty +INPUT /home/omlins/texmf/tex/latex/l3backend/l3backend-pdftex.def +INPUT /home/omlins/texmf/tex/latex/l3backend/l3backend-pdftex.def +INPUT ./paper.aux +INPUT ./paper.aux +INPUT paper.aux +OUTPUT paper.aux +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /home/omlins/texmf/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /home/omlins/texmf/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /home/omlins/texmf/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT ./paper.out +INPUT ./paper.out +INPUT paper.out +INPUT paper.out +OUTPUT paper.pdf +INPUT ./paper.out +INPUT ./paper.out +OUTPUT paper.out +INPUT ./header.tex +INPUT ./header.tex +INPUT ./header.tex +INPUT ./header.tex +INPUT header.tex +INPUT ./logojuliacon.pdf +INPUT ./logojuliacon.pdf +INPUT ./logojuliacon.pdf +INPUT ./logojuliacon.pdf +INPUT ./logojuliacon.pdf +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmr17.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmr12.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmmi12.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmmi12.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmsy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmsy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmex10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmex10.tfm +INPUT /home/omlins/texmf/tex/latex/base/ulasy.fd +INPUT /home/omlins/texmf/tex/latex/base/ulasy.fd +INPUT /home/omlins/texmf/tex/latex/base/ulasy.fd +INPUT /home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbx12.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbx12.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbx10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmmib10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmmib10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmmib10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbsy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbsy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbsy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/latex-fonts/lasyb10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/latex-fonts/lasyb10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/latex-fonts/lasyb10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmr8.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmr6.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmmi8.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmmi6.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmsy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy8.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy6.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbx8.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbx6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib6.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbsy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbsy10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmb8t.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmr9.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmmi9.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmsy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex9.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy9.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/latex-fonts/lasy5.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbx5.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib9.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib5.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbsy10.tfm +INPUT /home/omlins/texmf/fonts/tfm/public/cm/cmbsy10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ectt0800.tfm +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmri8t.tfm +INPUT /home/omlins/texmf/fonts/vf/adobe/times/ptmr8t.vf +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8r.tfm +INPUT /home/omlins/.texlive2023/texmf-var/fonts/map/pdftex/updmap/pdftex.map +INPUT /usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc +INPUT /home/omlins/texmf/fonts/vf/adobe/times/ptmr8t.vf +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8r.tfm +INPUT /home/omlins/texmf/fonts/vf/adobe/times/ptmr8t.vf +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8r.tfm +INPUT /home/omlins/texmf/fonts/vf/adobe/times/ptmb8t.vf +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmb8r.tfm +INPUT /home/omlins/texmf/fonts/vf/adobe/times/ptmr8t.vf +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8r.tfm +INPUT /home/omlins/texmf/fonts/vf/adobe/times/ptmr8t.vf +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmr8r.tfm +INPUT /home/omlins/texmf/fonts/enc/dvips/cm-super/cm-super-t1.enc +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ectt0800.tfm +INPUT ./bib.tex +INPUT ./bib.tex +INPUT bib.tex +INPUT ./paper.bbl +INPUT ./paper.bbl +INPUT paper.bbl +INPUT /home/omlins/texmf/fonts/vf/adobe/times/ptmri8t.vf +INPUT /home/omlins/texmf/fonts/tfm/adobe/times/ptmri8r.tfm +INPUT paper.aux +INPUT ./paper.out +INPUT ./paper.out +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/latxfont/lcircle1.pfb +INPUT /home/omlins/texmf/fonts/type1/public/cm-super/sftt0800.pfb +INPUT /home/omlins/texmf/fonts/type1/public/cm-super/sftt0900.pfb +INPUT /home/omlins/texmf/fonts/type1/urw/times/utmb8a.pfb +INPUT /home/omlins/texmf/fonts/type1/urw/times/utmr8a.pfb +INPUT /home/omlins/texmf/fonts/type1/urw/times/utmri8a.pfb diff --git a/paper/paper.out b/paper/paper.out new file mode 100644 index 0000000..47cea0c --- /dev/null +++ b/paper/paper.out @@ -0,0 +1,5 @@ +\BOOKMARK [1][-]{section.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1 +\BOOKMARK [1][-]{section.2}{\376\377\000A\000p\000p\000r\000o\000a\000c\000h}{}% 2 +\BOOKMARK [1][-]{section.3}{\376\377\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000\040\000a\000n\000d\000\040\000R\000e\000s\000u\000l\000t\000s}{}% 3 +\BOOKMARK [1][-]{section.4}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000s}{}% 4 +\BOOKMARK [1][-]{section.5}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 5 diff --git a/paper/paper.pdf b/paper/paper.pdf new file mode 100644 index 0000000..1369826 Binary files /dev/null and b/paper/paper.pdf differ diff --git a/paper/paper.tex b/paper/paper.tex new file mode 100644 index 0000000..c2859b1 --- /dev/null +++ b/paper/paper.tex @@ -0,0 +1,90 @@ +\documentclass{juliacon} +\setcounter{page}{1} + +\lstset{ + language=Julia, + basicstyle=\ttfamily\scriptsize, + breaklines=true, + columns=fullflexible, + keepspaces=true, + showstringspaces=false, + numbers=none, + aboveskip=4pt, + belowskip=4pt +} + +\renewcommand{\lstlistingname}{Listing} + +\begin{document} + +\input{header} + +\maketitle + +\begin{abstract} +Small desktop tasks on personal computers remain insufficiently served by assistants with fixed command sets, tool-using artificial intelligence agents for which action approval is impractical in practice, and chat-only interaction that is too cumbersome for such tasks. This paper presents an approach that extends deterministic voice control with large language model interaction, while keeping system actions under deterministic command control. Implemented in JustSayIt.jl, the approach supports extremely concise primitive-based composition, enabling an illustrative voice chatbot in three lines as well as application-specific command dictionaries such as focused Jupyter assistance, thereby demonstrating both expressive power and more efficient workflow-specific interaction. The resulting system enables seamless and safe integration of large language model intelligence into small everyday personal computer tasks, supports almost human-like follow-up through spoken responses, and bridges a practical gap in human-artificial-intelligence interaction. +\end{abstract} + +\section{Introduction} + +Seamless and safe integration of large language model (LLM) intelligence into small, everyday tasks on a personal computer (PC) remains insufficiently served. One adjacent class is voice assistants whose functionality is exposed through predefined intents, sample utterances, and skill interfaces rather than programmable application-specific interaction tailored to a user's active workflow \cite{zhang2019dangerousskills}. Another adjacent class is artificial intelligence (AI) agents and other LLM-based systems that act through tool use. Recent published work on autonomous agent safety emphasizes that such agents operate over personal information and device settings, can cause harmful side effects, and require explicit safety mechanisms, robust safeguards, and user trust \cite{lee2026mobilesafetybench,jabbour2025genagents}. In that design space, per-action approval quickly becomes cumbersome, and the operational temptation is to slide toward unsafe yolo-style autonomy\footnote{The term refers to flags such as \texttt{-yolo}, where yolo stands for "you only live once", used for example in command-line tooling such as Copilot CLI.} instead of keeping actions under deterministic control. A third adjacent class is plain chat-based interaction. Multitasking dialogue research treats switching between conversation and real-time tasks as a core difficulty, and chat-based conversational agents require explicit mechanisms for concurrent conversation tracking and memory even to manage context across interactions \cite{yang2008switching,martinez2020multiparty}. The niche addressed here is therefore not a closed assistant capability catalog, not unrestricted tool autonomy, and not stand-alone chat, but deterministic voice control extended with LLM interaction for small desktop workflows, together with application-specific commands that make that interaction more efficient while keeping system actions explicit and safe. + +This paper presents an approach for 1) integrating LLM interaction into a deterministic voice-control system so that LLM intelligence is available for small everyday tasks while system actions remain under safe deterministic command control; and 2) application-specific LLM interaction that is safe and programmable. The approach was successfully implemented in JustSayIt.jl. + +\section{Approach} + +The approach extends deterministic voice control with LLM interaction capabilities rather than starting from an unconstrained LLM interface. The deterministic foundation itself is not repeated here; it is the basis established in the 2024 JustSayIt paper \cite{omlin2024} and the JuliaCon 2023 talk \cite{omlin2023}, and the present contribution adds a safe interaction layer on top of that foundation. + +At the interaction level, the design uses a dual speech-to-text (STT) architecture: fast constrained recognition is used for commands, while high-quality free-speech recognition is used for LLM interaction and direct speech-to-text. Text-to-speech (TTS) integration provides spoken LLM output, enabling follow-up exchanges that approach almost human-like interaction. Clipboard and selection access are treated as idiomatic context sources, so LLM interaction can operate directly on the material currently being edited, inspected, or selected in the active application. + +These LLM, STT, TTS, clipboard, and selection capabilities are exposed alongside the deterministic control mechanisms through four layers. First, a command submodule provides predefined generic LLM interaction commands; the next section gives a focused workflow example of how such commands are reused. Second, parallel command submodules provide predefined generic STT, TTS, and clipboard or selection access commands. Third, a small set of idiomatic composable primitives provides base-language-like building blocks, similar in spirit to essential primitives such as \texttt{read} or \texttt{print}, so that new voice-plus-LLM commands can be composed directly without defining new functions; the next section illustrates this layer through a compact primitive table and a compositional example. Fourth, lower-level LLM functionality remains available for maximum programmability, in particular for use in voice argument functions. + +\section{Implementation and Results} + +The approach was successfully implemented in JustSayIt.jl\footnote{Release target for the presented contribution: v0.4.0, \url{https://github.com/omlins/JustSayIt.jl/releases/tag/v0.4.0}.}. The implementation integrates tightly with PromptingTools.jl \cite{promptingtools2025} to enable sophisticated LLM interaction and uses Ollama \cite{ollama2026} as additional option for local LLM execution; it uses Vosk \cite{vosk2020} and faster-whisper \cite{fasterwhisper2025} for the dual STT path, and supports multiple text-to-speech backends. + +Table~\ref{tab:primitives} gives seven composable primitives for LLM interaction, voice-, clipboard-, and selection-based input, and typed or spoken output. Together they provide a compact root-level interface for defining LLM interaction directly in command dictionaries. + +Listing~\ref{code:chatbot} demonstrates the expressive power of this primitive layer. An illustrative voice chatbot is defined entirely by composing speech input, LLM follow-up, and spoken output, outlining how seamless and safe integration of LLM intelligence into small everyday PC tasks can be expressed with very little syntax. + +Listing~\ref{code:jupyter} demonstrates the complementary result for application-specific command dictionaries. Here, concise focused commands are defined by reusing predefined generic LLM commands rather than assembling the interaction from lower-level components, enabling more efficient LLM interaction in a concrete Jupyter workflow. + +\begin{table}[t] +\caption{Composable primitives for LLM interaction, voice input, text capture, and typed or spoken output.} +\label{tab:primitives} +\centering +\footnotesize +\setlength{\tabcolsep}{4pt} +\begin{tabular}{ll} +\hline +\texttt{listen} & Convert speech to text \\ +\texttt{take} & Get clipboard content \\ +\texttt{grab} & Get selected text \\ +\texttt{ask} & Query LLM \\ +\texttt{ask!} & Follow up on previous LLM query \\ +\texttt{type} & Type text at cursor \\ +\texttt{say} & Convert text to speech \\ +\hline +\end{tabular} +\end{table} + +\begin{lstlisting}[caption={Illustrative voice chatbot composed with the primitives in Table~\ref{tab:primitives}.},label={code:chatbot}] +llm_commands = Dict("chatbot" => () -> while true + listen() |> ask! |> say + end) +\end{lstlisting} + +\begin{lstlisting}[caption={Application-specific Jupyter commands built from predefined LLM commands. In this example, \texttt{LLM.type\_answer} answers an uttered instruction directly, whereas \texttt{LLM.type\_text\_answer\_to} answers with respect to selected text or clipboard content; the first command types the appropriate IPython magic for a spoken task and the second types a markdown explanation of the selected cell, demonstrating concise application-specific LLM interaction.},label={code:jupyter}] +jupyter_llm_commands = Dict( + "generate magic" => () -> LLM.type_answer(instruction_prefix="Generate the appropriate IPython magic command for the following task using proper syntax (%line magic or %%cell magic) with necessary options:"), + "explain cell" => () -> LLM.type_text_answer_to("Explain what the selected cell code does in simple terms. Include key functions, algorithms, and data transformations. Format as markdown with clear section headings."), +) +\end{lstlisting} + +\section{Conclusions} + +The approach enables seamless and safe integration of LLM intelligence into small, everyday tasks on PC while keeping system actions under deterministic command control. Application-specific command dictionaries enable more efficient LLM interaction in focused workflows, and text-to-speech integration supports follow-up exchanges that approach almost human-like interaction. In this way, the approach addresses the niche defined in the introduction and bridges a practical gap in human-AI interaction. + +\input{bib.tex} + +\end{document} \ No newline at end of file diff --git a/paper/paper.yml b/paper/paper.yml new file mode 100644 index 0000000..bfe9324 --- /dev/null +++ b/paper/paper.yml @@ -0,0 +1,15 @@ +title: Enhancing Deterministic Voice Control with Safe LLM Interaction +authors: + - name: Samuel Omlin + affiliation: 1 +affiliations: + - index: 1 + name: Swiss National Supercomputing Centre (CSCS), ETH Zurich, Lugano, Switzerland +keywords: + - deterministic voice control + - large language models + - speech interfaces + - programmable voice assistants + - human-AI interaction + - desktop automation +bibliography: ref.bib \ No newline at end of file diff --git a/paper/prep.rb b/paper/prep.rb new file mode 100755 index 0000000..22e688a --- /dev/null +++ b/paper/prep.rb @@ -0,0 +1,57 @@ +# metadata generator for JuliaCon +# DO NOT EDIT + +require 'yaml' + +metadata = YAML.load_file('paper.yml') + +for k in ["title", "authors", "affiliations", "keywords", "bibliography"] + raise "Key #{k} not present in metadata" unless metadata.keys().include?(k) +end + +# ENV variables or default for issue/volume/year +issue = ENV["JLCON_ISSUE"] === nil ? 1 : ENV["JLCON_ISSUE"] +volume = ENV["JLCON_VOLUME"] === nil ? 1 : ENV["JLCON_VOLUME"] +year = ENV["JLCON_YEAR"] === nil ? 2025 : ENV["JLCON_YEAR"] +journal_name = "Proceedings of JuliaCon" # hard-coded for now + +open('header.tex', 'w') do |f| + f << "% **************GENERATED FILE, DO NOT EDIT**************\n\n" + f << "\\title{#{metadata["title"]}}\n\n" + for auth in metadata["authors"] + f << "\\author[#{auth["affiliation"]}]{#{auth["name"]}}\n" + end + for aff in metadata["affiliations"] + f << "\\affil[#{aff["index"]}]{#{aff["name"]}}\n" + end + f << "\n\\keywords{" + for i in 0...metadata["keywords"].length-1 + f << "#{metadata["keywords"][i]}, " + end + f << metadata["keywords"].last + f << "}\n\n" + + # hypersetup + f << "\\hypersetup{\n" + f << "pdftitle = {#{metadata["title"]}},\n" + f << "pdfsubject = {JuliaCon #{year} Proceedings},\n" + author_list = metadata['authors'].map { |a| a['name'] }.join(', ') + f << "pdfauthor = {#{author_list}},\n" + keyword_list = metadata['keywords'].join(', ') + f << "pdfkeywords = {#{keyword_list}},\n" + f << "}\n\n" +end + +open('journal_dat.tex', 'w') do |f| + f << "% **************GENERATED FILE, DO NOT EDIT**************\n\n" + f << "\\def\\@journalName{#{journal_name}}\n" + f << "\\def\\@volume{#{volume}}\n" + f << "\\def\\@issue{#{issue}}\n" + f << "\\def\\@year{#{year}}\n" +end + +open('bib.tex', 'w') do |f| + f << "% **************GENERATED FILE, DO NOT EDIT**************\n\n" + f << "\\bibliographystyle{juliacon}\n" + f << "\\bibliography{#{metadata["bibliography"]}}\n" +end diff --git a/paper/ref.bib b/paper/ref.bib new file mode 100644 index 0000000..d12eaf8 --- /dev/null +++ b/paper/ref.bib @@ -0,0 +1,133 @@ +@article{omlin2024, + author = {Omlin, Samuel}, + title = {{J}ust{S}ay{I}t.jl: A Fresh Approach to Open Source Voice Assistant Development}, + journal = {The Proceedings of the JuliaCon Conferences}, + volume = {6}, + number = {66}, + pages = {121}, + year = {2024}, + doi = {10.21105/jcon.00121} +} + +@misc{omlin2023, + author = {Omlin, Samuel}, + title = {Quick Assembly of Personalized Voice Assistants with {J}ust{S}ay{I}t}, + year = {2023}, + howpublished = {JuliaCon 2023}, + note = {\url{https://pretalx.com/juliacon2023/talk/HC8HLQ/}. Accessed: 2026-03-15} +} + +@inproceedings{zhang2019dangerousskills, + author = {Zhang, Nan and Mi, Xianghang and Feng, Xuan and Wang, XiaoFeng and Tian, Yuan and Qian, Feng and others}, + title = {Dangerous Skills: Understanding and Mitigating Security Risks of Voice-Controlled Third-Party Functions on Virtual Personal Assistant Systems}, + booktitle = {2019 IEEE Symposium on Security and Privacy (SP)}, + pages = {1381--1396}, + year = {2019}, + doi = {10.1109/SP.2019.00016} +} + +@article{lee2026mobilesafetybench, + author = {Lee, Juyong and Hahm, Dongyoon and Choi, June Suk and Knox, W. Bradley and Lee, Kimin}, + title = {{M}obile{S}afety{B}ench: Evaluating Safety of Autonomous Agents in Mobile Device Control}, + journal = {Proceedings of the AAAI Conference on Artificial Intelligence}, + volume = {40}, + number = {44}, + pages = {37565--37573}, + year = {2026}, + doi = {10.1609/aaai.v40i44.41090} +} + +@inproceedings{jabbour2025genagents, + author = {Jabbour, Jason and Janapa Reddi, Vijay}, + title = {Generative {AI} Agents in Autonomous Machines: A Safety Perspective}, + booktitle = {Proceedings of the 43rd IEEE/ACM International Conference on Computer-Aided Design}, + pages = {1--13}, + year = {2025}, + doi = {10.1145/3676536.3698390} +} + +@inproceedings{yang2008switching, + author = {Yang, Fan and Heeman, Peter A. and Kun, Andrew}, + title = {Switching to Real-Time Tasks in Multi-Tasking Dialogue}, + booktitle = {Proceedings of the 22nd International Conference on Computational Linguistics - {COLING} '08}, + volume = {1}, + pages = {1025--1032}, + year = {2008}, + publisher = {Association for Computational Linguistics}, + doi = {10.3115/1599081.1599210} +} + +@inproceedings{martinez2020multiparty, + author = {Martinez, Victor R. and Kennedy, James}, + title = {A Multiparty Chat-Based Dialogue System with Concurrent Conversation Tracking and Memory}, + booktitle = {Proceedings of the 2nd Conference on Conversational User Interfaces}, + pages = {1--9}, + year = {2020}, + publisher = {ACM}, + doi = {10.1145/3405755.3406121} +} + +@misc{siri2026, + author = {{Apple Inc.}}, + title = {Siri}, + year = {2026}, + howpublished = {Product web page}, + note = {\url{https://www.apple.com/siri/}} +} + +@misc{appleintelligence2026, + author = {{Apple Inc.}}, + title = {{A}pple {I}ntelligence}, + year = {2026}, + howpublished = {Product web page}, + note = {\url{https://www.apple.com/apple-intelligence/}} +} + +@misc{zhou2024, + author = {Zhou, Andy and Yan, Kai and Shlapentokh-Rothman, Michal and Wang, Haohan and Wang, Yu-Xiong}, + title = {Language Agent Tree Search Unifies Reasoning Acting and Planning in Language Models}, + year = {2024}, + eprint = {2310.04406}, + eprinttype = {arXiv}, + doi = {10.48550/arXiv.2310.04406} +} + +@misc{openinterpreter2025, + author = {{Open Interpreter Contributors}}, + title = {{O}pen {I}nterpreter}, + year = {2025}, + howpublished = {Project documentation and README}, + note = {\url{https://github.com/openinterpreter/open-interpreter}} +} + +@misc{promptingtools2025, + author = {{svilupp and contributors}}, + title = {{P}rompting{T}ools.jl}, + year = {2025}, + howpublished = {Project documentation and README}, + note = {GitHub repository, \url{https://github.com/svilupp/PromptingTools.jl}. Accessed: 2026-03-15} +} + +@misc{vosk2020, + author = {Shmyrev, Nickolay V. and {Vosk contributors}}, + title = {{V}osk: Offline Speech Recognition Toolkit}, + year = {2020}, + howpublished = {Project website and documentation}, + note = {\url{https://alphacephei.com/vosk/}. Accessed: 2026-03-15} +} + +@misc{fasterwhisper2025, + author = {{SYSTRAN and contributors}}, + title = {faster-whisper}, + year = {2025}, + howpublished = {Project documentation and README}, + note = {GitHub repository, \url{https://github.com/SYSTRAN/faster-whisper}. Accessed: 2026-03-15} +} + +@misc{ollama2026, + author = {{Ollama}}, + title = {Ollama}, + year = {2026}, + howpublished = {Project website}, + note = {\url{https://ollama.com/}. Accessed: 2026-03-15} +} \ No newline at end of file