From 34d5926f27bda79238aa88de427135d5f4c2f0a6 Mon Sep 17 00:00:00 2001 From: BambOoxX <42067365+BambOoxX@users.noreply.github.com> Date: Tue, 14 Nov 2023 18:24:17 +0100 Subject: [PATCH 1/8] initial implementation --- assets/latex/documenter.sty | 9 +- assets/latex/jlcode.sty | 2247 +++++++++++++++++++++++++++++++++++ assets/latex/listings.sty | 9 + assets/latex/minted.sty | 8 + assets/latex/preamble.tex | 1 + src/latex/LaTeXWriter.jl | 208 ++-- test/examples/make.jl | 4 +- test/runtests.jl | 4 +- 8 files changed, 2408 insertions(+), 82 deletions(-) create mode 100644 assets/latex/jlcode.sty create mode 100644 assets/latex/listings.sty create mode 100644 assets/latex/minted.sty diff --git a/assets/latex/documenter.sty b/assets/latex/documenter.sty index 35e1a69b68..4c4c30c2a5 100644 --- a/assets/latex/documenter.sty +++ b/assets/latex/documenter.sty @@ -31,14 +31,7 @@ % % listings -\usepackage{minted} -\setminted{ - breaklines = true, - fontsize = \small, - frame = none, - bgcolor = codeblock-background, - rulecolor=codeblock-border, -} + % % tables diff --git a/assets/latex/jlcode.sty b/assets/latex/jlcode.sty new file mode 100644 index 0000000000..6b7be71f05 --- /dev/null +++ b/assets/latex/jlcode.sty @@ -0,0 +1,2247 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% jlcode.sty +%%% Copyright 2018 Willi Gerbig +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any +%% later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status 'maintained'. +%% +%% The Current Maintainer of this work is Willi Gerbig. +%% +%% This work consists of the files jlcode.sty, createkwlists.jl, +%% createucclist.jl, testfile.jl, testfile2.jl and manual.pdf. +%% +%% +%% +% Keywords, literals, built-ins, macros and functions were created by +% createkwlists.jl, which was inspired by the following script: +% https://github.com/isagalaev/highlight.js/blob/master/src/languages/julia.js +% Colors for the themes come from: +% https://docs.julialang.org/en/v1/assets/themes/documenter-light.css +% https://github.com/dietercastel/jlcode/blob/darktheme/jlcode.sty +% special unicode characters come from: +% https://docs.julialang.org/en/v1/manual/unicode-input/ +% The JuliaMono font approach was inspired by +% https://github.com/mossr/julia-mono-listings +% and the JuliaMono font files were downloaded from: +% https://github.com/mossr/julia-mono-listings + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% defining the jlcode package +\def\fileversion{6.1} +\def\filedate{2022/05/03} + +\typeout{-- Package: `jlcode' \fileversion\space <\filedate> --} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{jlcode}[\filedate\space\fileversion] + + + + + +% loading required packages +\RequirePackage{iftex} + +\RequirePackage{listings} +\RequirePackage{xcolor} % for coloring + +\iftutex % LuaTeX + XeTeX +\RequirePackage{fontspec} +\else % PDFTeX +\RequirePackage{textcomp} % for upright single quotes +\RequirePackage{amssymb} % for the ϰ symbol +\RequirePackage{eurosym} % for the € symbol +\RequirePackage{pmboxdraw} % for the unicode box characters +\PassOptionsToPackage{T1}{fontenc} +\RequirePackage{fontenc} % for the « and » symbols +\fi + +\RequirePackage{calc} % for the creation of the code box +\RequirePackage{relsize} % for scaling the font sizes +\RequirePackage{etoolbox} % for \ifdefstring +\RequirePackage{kvoptions} % for adding options to this package + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% option declarations +\SetupKeyvalOptions{family=jlc, prefix=jlc@} + +% defining package options +\DeclareBoolOption[true]{autoload} +\DeclareBoolOption[true]{defaultmonofont} +\DeclareBoolOption[false]{linenumbers} +\DeclareStringOption[80]{charsperline} +\DeclareStringOption[default]{theme}[default] +\DisableKeyvalOption[action=error,package=jlcode]{jlc}{courierasttdflt} +\DisableKeyvalOption[action=error,package=jlcode]{jlc}{usecourier} +\DisableKeyvalOption[action=error,package=jlcode]{jlc}{usecolors} +\DisableKeyvalOption[action=error,package=jlcode]{jlc}{usebox} +\DisableKeyvalOption[action=error,package=jlcode]{jlc}{usecolors} +\DisableKeyvalOption[action=error,package=jlcode]{jlc}{usebox} + +% default option rule +\DeclareDefaultOption{\@unknownoptionerror} + +% processing options +\ProcessLocalKeyvalOptions* + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% julia language definition +\lstdefinelanguage{julia} +{% +% +% julia's keywords: +% +morekeywords=[1] +{% +abstract type,baremodule,begin,break,catch,ccall,const,continue,do,else,elseif,% +end,export,finally,for,function,global,if,import,in,isa,let,local,macro,module,% +mutable struct,primitive type,quote,return,struct,try,using,where,while% +},% +% +% julia's literals: +% +morekeywords=[2] +{% +ARCH,ARGS,Apr,April,Aug,August,BINDIR,CPU_NAME,CPU_THREADS,C_NULL,DEPOT_PATH,% +DL_LOAD_PATH,Dec,December,ENDIAN_BOM,ENV,Feb,February,Fri,Friday,I,% +ISODateFormat,ISODateTimeFormat,ISOTimeFormat,Inf,Inf16,Inf32,Inf64,% +InsertionSort,JIT,Jan,January,Jul,July,Jun,June,KERNEL,LOAD_PATH,MACHINE,Mar,% +March,May,MergeSort,Mon,Monday,NaN,NaN16,NaN32,NaN64,Nov,November,Oct,October,% +PKGMODE_MANIFEST,PKGMODE_PROJECT,PRESERVE_ALL,PRESERVE_DIRECT,PRESERVE_NONE,% +PRESERVE_SEMVER,PRESERVE_TIERED,PROGRAM_FILE,QuickSort,RFC1123Format,% +RTLD_DEEPBIND,RTLD_FIRST,RTLD_GLOBAL,RTLD_LAZY,RTLD_LOCAL,RTLD_NODELETE,% +RTLD_NOLOAD,RTLD_NOW,RoundDown,RoundFromZero,RoundNearest,RoundNearestTiesAway,% +RoundNearestTiesUp,RoundToZero,RoundUp,STDLIB,Sat,Saturday,Sep,September,Sun,% +Sunday,Thu,Thursday,Tue,Tuesday,UPLEVEL_MAJOR,UPLEVEL_MINOR,UPLEVEL_PATCH,% +VERSION,Vararg,WORD_SIZE,Wed,Wednesday,catalan,devnull,dlext,e,eulergamma,% +false,golden,im,missing,nothing,pi,stderr,stdin,stdout,true,undef,γ,π,φ,ℯ% +},% +% +% julia's built-ins: +% +morekeywords=[3] +{% +AbstractArray,AbstractChannel,AbstractChar,AbstractDict,AbstractDisplay,% +AbstractFloat,AbstractIrrational,AbstractLogger,AbstractMatch,AbstractMatrix,% +AbstractPattern,AbstractREPL,AbstractRNG,AbstractRange,AbstractSerializer,% +AbstractSet,AbstractSparseArray,AbstractSparseMatrix,AbstractSparseVector,% +AbstractString,AbstractUnitRange,AbstractVecOrMat,AbstractVector,% +AbstractWorkerPool,Adjoint,Any,Argument,ArgumentError,Array,AssertionError,% +Atomic,Base64DecodePipe,Base64EncodePipe,BasicREPL,Bidiagonal,BigFloat,BigInt,% +BitArray,BitMatrix,BitSet,BitVector,Bool,BoundsError,BroadcastFunction,% +BroadcastStyle,BunchKaufman,CachingPool,CapturedException,CartesianIndex,% +CartesianIndices,Cchar,Cdouble,Cfloat,Channel,Char,Cholesky,CholeskyPivoted,% +Cint,Cintmax_t,Clong,Clonglong,ClusterManager,Cmd,CodeInfo,CodeInstance,Colon,% +ColumnNorm,Complex,ComplexF16,ComplexF32,ComplexF64,ComposedFunction,% +CompositeException,ConcurrencyViolationError,Condition,ConsoleLogger,Const,% +Cptrdiff_t,Cshort,Csize_t,Cssize_t,Cstring,Cuchar,Cuint,Cuintmax_t,Culong,% +Culonglong,Cushort,Cvoid,Cwchar_t,Cwstring,DataType,Date,DateFormat,DatePeriod,% +DateTime,Day,DenseArray,DenseMatrix,DenseVecOrMat,DenseVector,Diagonal,Dict,% +DimensionMismatch,Dims,DivideError,DomainError,Downloader,EOFError,Eigen,Enum,% +ErrorException,Event,Exception,ExponentialBackOff,Expr,FDWatcher,FILE,% +Factorization,FileMonitor,Float16,Float32,Float64,FolderMonitor,Function,% +Future,GeneralizedEigen,GeneralizedSVD,GeneralizedSchur,GenericArray,% +GenericDict,GenericOrder,GenericSet,GenericString,GitConfig,GitRepo,GlobalRef,% +GotoIfNot,GotoNode,HMAC_CTX,HTML,Hermitian,Hessenberg,Hour,IO,IOBuffer,% +IOContext,IOStream,IPAddr,IPv4,IPv6,IdDict,IndexCartesian,IndexLinear,% +IndexStyle,InexactError,InitError,Int,Int128,Int16,Int32,Int64,Int8,Integer,% +InterruptException,InvalidStateException,Irrational,KeyError,LAPACKException,% +LDLt,LQ,LU,LinRange,LineEditREPL,LineInfoNode,LineNumberNode,LinearIndices,% +LoadError,LogLevel,LowerTriangular,MIME,Matrix,MersenneTwister,Method,% +MethodError,MethodInstance,Microsecond,Millisecond,Minute,Missing,% +MissingException,Module,Month,NTuple,NamedTuple,Nanosecond,NewvarNode,NoPivot,% +Nothing,NullLogger,Number,OrdinalRange,OutOfMemoryError,OverflowError,% +PackageMode,PackageSpec,Pair,PartialQuickSort,PartialStruct,Period,% +PermutedDimsArray,PhiCNode,PhiNode,PiNode,Pipe,PollingFileWatcher,% +PosDefException,PreserveLevel,ProcessExitedException,ProcessFailedException,% +Ptr,QR,QRPivoted,Quarter,QuoteNode,RandomDevice,RankDeficientException,% +Rational,RawFD,ReadOnlyMemoryError,Real,ReentrantLock,Ref,Regex,RegexMatch,% +RegistrySpec,RemoteChannel,RemoteException,RequestError,Response,ReturnNode,% +Returns,RoundingMode,RowMaximum,SHA1_CTX,SHA224_CTX,SHA256_CTX,SHA2_224_CTX,% +SHA2_256_CTX,SHA2_384_CTX,SHA2_512_CTX,SHA384_CTX,SHA3_224_CTX,SHA3_256_CTX,% +SHA3_384_CTX,SHA3_512_CTX,SHA512_CTX,SSAValue,SVD,Schur,Second,% +SegmentationFault,Serializer,Set,SharedArray,SharedMatrix,SharedVector,Signed,% +SimpleLogger,SingularException,Slot,SlotNumber,Some,SparseMatrixCSC,% +SparseVector,SpinLock,StackFrame,StackOverflowError,StackTrace,StepRange,% +StepRangeLen,StreamREPL,StridedArray,StridedMatrix,StridedVecOrMat,% +StridedVector,String,StringIndexError,SubArray,SubString,SubstitutionString,% +SymTridiagonal,Symbol,Symmetric,SystemError,TCPSocket,Task,TaskFailedException,% +TaskLocalRNG,TestSetException,Text,TextDisplay,Time,TimePeriod,TimeType,% +TimeZone,Timer,TmStruct,Transpose,Tridiagonal,Tuple,Type,TypeError,TypeVar,% +TypedSlot,UDPSocket,UInt,UInt128,UInt16,UInt32,UInt64,UInt8,UTC,UUID,% +UndefInitializer,UndefKeywordError,UndefRefError,UndefVarError,UniformScaling,% +Union,UnionAll,UnitLowerTriangular,UnitRange,UnitUpperTriangular,Unsigned,% +UpgradeLevel,UpperHessenberg,UpperTriangular,UpsilonNode,Val,VecElement,% +VecOrMat,Vector,VersionNumber,WeakKeyDict,WeakRef,Week,WorkerConfig,WorkerPool,% +Xoshiro,Year,ZeroPivotException% +},% +% +% julia's macros: +% +morekeywords=[4] +{% +@MIME_str,@NamedTuple,@__DIR__,@__FILE__,@__LINE__,@__MODULE__,@__dot__,% +@allocated,@artifact_str,@assert,@async,@atomic,@atomicreplace,@atomicswap,% +@b_str,@big_str,@boundscheck,@ccall,@cfunction,@cmd,@coalesce,@code_llvm,% +@code_lowered,@code_native,@code_typed,@code_warntype,@dateformat_str,@debug,% +@deprecate,@distributed,@doc,@doc_str,@dump,@edit,@elapsed,@enum,@error,@eval,% +@evalpoly,@everywhere,@fastmath,@fetch,@fetchfrom,@functionloc,@generated,% +@gensym,@goto,@html_str,@inbounds,@inferred,@info,@inline,@int128_str,@ip_str,% +@isdefined,@label,@less,@lock,@logmsg,@macroexpand,@macroexpand1,@md_str,% +@noinline,@nospecialize,@pkg_str,@polly,@printf,@profile,@r_str,@raw_str,% +@s_str,@show,@simd,@something,@spawn,@spawnat,@specialize,@sprintf,@static,% +@sync,@task,@test,@test_broken,@test_deprecated,@test_logs,@test_nowarn,% +@test_skip,@test_throws,@test_warn,@testset,@text_str,@threadcall,@threads,% +@time,@timed,@timev,@uint128_str,@v_str,@var,@view,@views,@warn,@which% +},% +% +% julia's functions: +% +morekeywords=[5] +{% +FormatMessage,GetLastError,PipeBuffer,__precompile__,abs,abs2,abs_float,% +abspath,accept,accumulate,accumulate!,acos,acosd,acosh,acot,acotd,acoth,acsc,% +acscd,acsch,add_float,add_float_fast,add_int,add_ptr,addenv,addprocs,adjoint,% +adjoint!,adjust,all,all!,allunique,and_int,angle,any,any!,append!,applicable,% +apropos,argmax,argmin,arraylen,artifact_exists,artifact_hash,artifact_meta,% +artifact_path,ascii,asec,asecd,asech,ashr_int,asin,asind,asinh,asyncmap,% +asyncmap!,atan,atand,atanh,atexit,atomic_add!,atomic_and!,atomic_cas!,% +atomic_fence,atomic_max!,atomic_min!,atomic_nand!,atomic_or!,% +atomic_pointermodify,atomic_pointerref,atomic_pointerreplace,atomic_pointerset,% +atomic_pointerswap,atomic_sub!,atomic_xchg!,atomic_xor!,atreplinit,axes,axpby!,% +axpy!,backtrace,base64decode,base64encode,basename,big,bind,binomial,bitcast,% +bitrand,bitreverse,bitrotate,bitstring,blockdiag,broadcast,broadcast!,% +broadcast_axes,broadcastable,bswap,bswap_int,bunchkaufman,bunchkaufman!,% +bytes2hex,bytesavailable,calloc,canonicalize,cat,catch_backtrace,cbrt,cd,ceil,% +ceil_llvm,cglobal,channel_from_id,check_same_host,checkbounds,checked_sadd_int,% +checked_sdiv_int,checked_smul_int,checked_srem_int,checked_ssub_int,% +checked_uadd_int,checked_udiv_int,checked_umul_int,checked_urem_int,% +checked_usub_int,checkindex,chmod,cholesky,cholesky!,chomp,chop,chown,% +circcopy!,circshift,circshift!,cis,cispi,clamp,clamp!,cld,clear!,clipboard,% +close,cluster_cookie,cmp,coalesce,code_llvm,code_lowered,code_native,% +code_typed,code_warntype,codepoint,codeunit,codeunits,collect,complex,cond,% +condskeel,conj,conj!,connect,contains,convert,copy,copy!,copy_transpose!,% +copysign,copysign_float,copyto!,cor,cos,cosc,cosd,cosh,cospi,cot,cotd,coth,% +count,count!,count_ones,count_zeros,countfrom,countlines,cov,cp,cpu_info,% +cpu_summary,crc32c,cross,csc,cscd,csch,ctime,ctlz_int,ctpop_int,cttz_int,% +cumprod,cumprod!,cumsum,cumsum!,current_exceptions,current_logger,current_task,% +cycle,datetime2julian,datetime2rata,datetime2unix,day,dayabbr,dayname,% +dayofmonth,dayofquarter,dayofweek,dayofweekofmonth,dayofyear,daysinmonth,% +daysinyear,daysofweekinmonth,deepcopy,default_worker_pool,deg2rad,delete!,% +deleteat!,denominator,deserialize,det,detach,detect_ambiguities,% +detect_unbound_args,diag,diagind,diagm,diff,digest!,digits,digits!,dirname,% +disable_logging,disable_sigint,display,displayable,displaysize,div,div_float,% +div_float_fast,divrem,dlclose,dllist,dlopen,dlopen_e,dlpath,dlsym,dlsym_e,doc,% +dot,dotview,download,drop,dropdims,droptol!,dropwhile,dropzeros,dropzeros!,% +dump,eachcol,eachindex,eachline,eachmatch,eachrow,eachslice,edit,eigen,eigen!,% +eigmax,eigmin,eigvals,eigvals!,eigvecs,eltype,empty,empty!,endswith,enumerate,% +eof,eps,eq_float,eq_float_fast,eq_int,errno,error,errormonitor,esc,% +escape_string,eval,evalfile,evalpoly,exit,exp,exp10,exp2,expanduser,expm1,% +exponent,extrema,factorial,factorize,falses,fd,fdio,fetch,fieldcount,fieldname,% +fieldnames,fieldoffset,fieldtype,fieldtypes,filemode,filesize,fill,fill!,% +filter,filter!,finalize,finalizer,find_artifacts_toml,find_library,findall,% +findfirst,findlast,findmax,findmax!,findmin,findmin!,findnext,findnz,findprev,% +first,firstdayofmonth,firstdayofquarter,firstdayofweek,firstdayofyear,% +firstindex,flatten,fld,fld1,fldmod,fldmod1,flipsign,flipsign_int,float,% +floatmax,floatmin,floor,floor_llvm,flush,flush_cstdio,fma,fma_float,foldl,% +foldr,foreach,fpext,fpiseq,fptosi,fptoui,fptrunc,free,free_memory,frexp,% +fullname,functionloc,gcd,gcdx,gensym,get,get!,get_zero_subnormals,getaddrinfo,% +getalladdrinfo,getfield,gethostname,getindex,getipaddr,getipaddrs,getkey,% +getnameinfo,getpeername,getpid,getproperty,getsockname,givens,global_logger,% +gperm,graphemes,hasfield,hash,haskey,hasmethod,hasproperty,hcat,hessenberg,% +hessenberg!,hex2bytes,hex2bytes!,hmac_sha1,hmac_sha224,hmac_sha256,% +hmac_sha2_224,hmac_sha2_256,hmac_sha2_384,hmac_sha2_512,hmac_sha384,% +hmac_sha3_224,hmac_sha3_256,hmac_sha3_384,hmac_sha3_512,hmac_sha512,homedir,% +hour,html,htol,hton,hvcat,hvncat,hypot,identity,ifelse,ignorestatus,imag,in,% +include_dependency,include_string,indexin,indexpids,init_worker,insert!,% +insorted,instances,interrupt,intersect,intersect!,inv,invmod,invoke,invperm,% +invpermute!,isa,isabspath,isabstracttype,isapple,isapprox,isascii,isassigned,% +isbinaryoperator,isbits,isbitstype,isblockdev,isbsd,ischardev,iscntrl,% +isconcretetype,isconst,isdefined,isdiag,isdigit,isdir,isdirpath,isdisjoint,% +isdispatchtuple,isdragonfly,isempty,isequal,iseven,isexecutable,isexpr,isfifo,% +isfile,isfinite,isfreebsd,ishermitian,isidentifier,isimmutable,isinf,isinteger,% +isinteractive,isjsvm,isleapyear,isless,isletter,islink,islinklocaladdr,islinux,% +islocked,islowercase,ismarked,ismissing,ismount,ismutable,ismutabletype,isnan,% +isnetbsd,isnothing,isnumeric,isodd,isone,isopen,isopenbsd,isoperator,ispath,% +isperm,isposdef,isposdef!,ispostfixoperator,ispow2,isprimitivetype,isprint,% +ispunct,isqrt,isreadable,isreadonly,isready,isreal,issetequal,issetgid,% +issetuid,issocket,issorted,isspace,issparse,issticky,isstructtype,issubnormal,% +issubset,issuccess,issymmetric,istaskdone,istaskfailed,istaskstarted,% +istextmime,istril,istriu,isunaryoperator,isunix,isunordered,isuppercase,% +isvalid,iswindows,iswritable,isxdigit,iszero,iterate,join,join_multicast_group,% +joinpath,julian2datetime,keepat!,keys,keytype,kill,kron,kron!,last,% +lastdayofmonth,lastdayofquarter,lastdayofweek,lastdayofyear,lastindex,latex,% +launch,lcm,ldexp,ldiv!,ldlt,ldlt!,le_float,le_float_fast,leading_ones,% +leading_zeros,leave_multicast_group,length,less,listen,listenany,llvmcall,% +lmul!,loadavg,localindices,lock,log,log10,log1p,log2,logabsdet,logdet,% +lowercase,lowercasefirst,lowrankdowndate,lowrankdowndate!,lowrankupdate,% +lowrankupdate!,lpad,lq,lq!,lshr_int,lstat,lstrip,lt_float,lt_float_fast,ltoh,% +lu,lu!,lyap,macroexpand,malloc,manage,map,map!,mapfoldl,mapfoldr,mapreduce,% +mapslices,mark,match,max,maximum,maximum!,maxintfloat,mean,mean!,median,% +median!,merge,merge!,mergewith,mergewith!,methods,methodswith,microsecond,% +middle,millisecond,min,minimum,minimum!,minmax,minute,mkdir,mkpath,mktemp,% +mktempdir,mmap,mod,mod1,mod2pi,modf,modifyfield!,modifyproperty!,month,% +monthabbr,monthday,monthname,mtime,mul!,mul_float,mul_float_fast,mul_int,% +muladd,muladd_float,mv,myid,nameof,names,nand,nanosecond,ncodeunits,ndigits,% +ndims,ne_float,ne_float_fast,ne_int,neg_float,neg_float_fast,neg_int,nextfloat,% +nextind,nextpow,nextprod,nfields,nnz,nonmissingtype,nonzeros,nor,norm,% +normalize,normalize!,normpath,not_int,notify,now,nprocs,nthreads,ntoh,ntuple,% +nullspace,numerator,nworkers,nzrange,objectid,occursin,oftype,one,ones,oneunit,% +only,open,operm,opnorm,or_int,ordschur,ordschur!,pairs,parent,parentindices,% +parentmodule,parse,partialsort,partialsort!,partialsortperm,partialsortperm!,% +partition,pathof,peakflops,peek,permute,permute!,permutedims,permutedims!,pinv,% +pipeline,pkgdir,pmap,pointer,pointer_from_objref,pointerref,pointerset,poll_fd,% +poll_file,pop!,popat!,popdisplay,popfirst!,position,powermod,precision,% +precompile,prepend!,prevfloat,prevind,prevpow,print,println,printstyled,% +process_exited,process_messages,process_running,procs,prod,prod!,product,% +promote,promote_rule,promote_shape,promote_type,propertynames,push!,% +pushdisplay,pushfirst!,put!,pwd,qr,qr!,quantile,quantile!,quarterofyear,quot,% +rad2deg,rand,rand!,randcycle,randcycle!,randexp,randexp!,randn,randn!,randperm,% +randperm!,randstring,randsubseq,randsubseq!,range,rank,rata2datetime,% +rationalize,rdiv!,read,read!,readavailable,readbytes!,readchomp,readdir,% +readdlm,readeach,readline,readlines,readlink,readuntil,real,realloc,realpath,% +recv,recvfrom,redirect_stderr,redirect_stdin,redirect_stdio,redirect_stdout,% +redisplay,reduce,reenable_sigint,reflect!,reim,reinterpret,relpath,rem,rem2pi,% +rem_float,rem_float_fast,remote,remote_do,remotecall,remotecall_fetch,% +remotecall_wait,remoteref_id,repeat,repeated,replace,replace!,% +replace_sourceloc!,replacefield!,replaceproperty!,repr,request,reset,reshape,% +resize!,rest,rethrow,retry,reverse,reverse!,reverseind,rint_llvm,rm,rmprocs,% +rmul!,rot180,rotate!,rotl90,rotr90,round,rounding,rowvals,rpad,rsplit,rstrip,% +run,schedule,schur,schur!,sdata,sdiv_int,searchsorted,searchsortedfirst,% +searchsortedlast,sec,secd,sech,second,seek,seekend,seekstart,% +select_downloadable_artifacts,selectdim,send,serialize,set_zero_subnormals,% +setdiff,setdiff!,setenv,setfield!,setindex!,setprecision,setproperty!,% +setrounding,sext_int,sha1,sha224,sha256,sha2_224,sha2_256,sha2_384,sha2_512,% +sha384,sha3_224,sha3_256,sha3_384,sha3_512,sha512,shl_int,show,show_sexpr,% +showable,showerror,shuffle,shuffle!,sign,signbit,signed,significand,similar,% +sin,sinc,sincos,sincosd,sincospi,sind,sinh,sinpi,sitofp,size,sizehint!,sizeof,% +skip,skipchars,skipmissing,sle_int,sleep,slt_int,something,sort,sort!,sortperm,% +sortperm!,sortslices,sparse,sparsevec,spdiagm,splice!,split,splitdir,% +splitdrive,splitext,splitpath,sprand,sprandn,sprint,spzeros,sqrt,sqrt_llvm,% +sqrt_llvm_fast,srem_int,stacktrace,start_worker,startswith,stat,std,stdm,step,% +strerror,strftime,stride,strides,string,stringmime,strip,strptime,sub_float,% +sub_float_fast,sub_int,sub_ptr,subtypes,success,sum,sum!,summary,supertype,% +supertypes,svd,svd!,svdvals,svdvals!,swapfield!,swapproperty!,sylvester,% +symdiff,symdiff!,symlink,systemerror,systemsleep,take,take!,takewhile,tan,tand,% +tanh,task_local_storage,tempdir,tempname,textwidth,thisind,threadid,throw,time,% +time_ns,timedwait,titlecase,to_indices,today,tofirst,tolast,tonext,toprev,% +total_memory,touch,tr,trailing_ones,trailing_zeros,transcode,transpose,% +transpose!,tril,tril!,triu,triu!,trues,trunc,trunc_int,trunc_llvm,truncate,% +trylock,tryparse,tuple,typeassert,typeintersect,typejoin,typemax,typemin,% +typeof,udiv_int,uitofp,ule_int,ult_int,unescape_string,union,union!,unique,% +unique!,unix2datetime,unlock,unmark,unsafe_copyto!,unsafe_load,% +unsafe_pointer_to_objref,unsafe_read,unsafe_store!,unsafe_string,unsafe_trunc,% +unsafe_wrap,unsafe_write,unsigned,unwatch_folder,update!,uperm,uppercase,% +uppercasefirst,uptime,urem_int,uuid1,uuid4,uuid5,uuid_version,valtype,values,% +var,varinfo,varm,vcat,vec,versioninfo,view,wait,walkdir,watch_file,% +watch_folder,week,which,widemul,widen,with,with_logger,withenv,% +worker_id_from_socket,workers,write,writedlm,xor,xor_int,year,yearmonth,% +yearmonthday,yield,yieldto,zero,zeros,zext_int,zip% +},% +% +% +sensitive=true,% +% +alsoother={$},%$% +alsodigit={_},% +% +morecomment=[l]{\#},% +morecomment=[n]{\#=}{=\#},% +% +morestring=[b]{"},% +% just activate the next command if you dont use ' as the transposition +% operator! comment out the lines 1341 and 1975 in that case, too! +%morestring=[m]{'},% +morestring=[s]{"""}{"""},% +morestring=[s]{L"}{"},% +morestring=[s]{MIME"}{"},% +morestring=[s]{artifact"}{"},% +morestring=[s]{b"}{"},% +morestring=[s]{big"}{"},% +morestring=[s]{dateformat"}{"},% +morestring=[s]{doc"}{"},% +morestring=[s]{html"}{"},% +morestring=[s]{int128"}{"},% +morestring=[s]{ip"}{"},% +morestring=[s]{md"}{"},% +morestring=[s]{pkg"}{"},% +morestring=[s]{r"}{"},% +morestring=[s]{raw"}{"},% +morestring=[s]{s"}{"},% +morestring=[s]{text"}{"},% +morestring=[s]{uint128"}{"},% +morestring=[s]{v"}{"},% +morestring=[s]{var"}{"},% +% +}[keywords,comments,strings] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% default color theme +\newcommand{\loaddefaultcolors}{% +\definecolor{jlbase}{HTML}{444444}% % julia's base color +\definecolor{jlkeyword}{HTML}{444444}% % julia's keywords +\definecolor{jlliteral}{HTML}{78A960}% % julia's literals +\definecolor{jlbuiltin}{HTML}{397300}% % julia's built-ins +\definecolor{jlmacros}{HTML}{1F7199}% % julia's macros +\definecolor{jlfunctions}{HTML}{444444}% % julia's functions +\definecolor{jlcomment}{HTML}{888888}% % julia's comments +\definecolor{jlstrnum}{HTML}{880000}% % julia's strings or numbers +\definecolor{jlop}{HTML}{444444}% % julia's operators +\definecolor{jlbackground}{HTML}{F2F2F2}% % the background of the code block +\definecolor{jlrule}{HTML}{DDDDDD}% % the rule of the code block +\definecolor{jllinenumbers}{HTML}{000000}% % the line numbers of the code block +} + +\newcommand{\loadthemecolors}{\loaddefaultcolors} + +\ifdefstring{\jlc@theme}{default-plain}{% +\renewcommand{\loadthemecolors}{\loaddefaultcolors}}{} + + + +% black and white color theme +\newcommand{\loadgrayscalecolors}{% +\definecolor{jlbase}{HTML}{000000}% % julia's base color +\definecolor{jlkeyword}{HTML}{000000}% % julia's keywords +\definecolor{jlliteral}{HTML}{000000}% % julia's literals +\definecolor{jlbuiltin}{HTML}{000000}% % julia's built-ins +\definecolor{jlmacros}{HTML}{000000}% % julia's macros +\definecolor{jlfunctions}{HTML}{000000}% % julia's functions +\definecolor{jlcomment}{HTML}{000000}% % julia's comments +\definecolor{jlstrnum}{HTML}{000000}% % julia's strings or numbers +\definecolor{jlop}{HTML}{000000}% % julia's operators +\definecolor{jlbackground}{HTML}{F5F5F5}% % the background of the code block +\definecolor{jlrule}{HTML}{DDDDDD}% % the rule of the code block +\definecolor{jllinenumbers}{HTML}{000000}% % the line numbers of the code block +} + +\ifdefstring{\jlc@theme}{grayscale}{% +\renewcommand{\loadthemecolors}{\loadgrayscalecolors}}{} +\ifdefstring{\jlc@theme}{grayscale-plain}{% +\renewcommand{\loadthemecolors}{\loadgrayscalecolors}}{} + + + +% dark color theme +% big thanks to "dietercastel" who put toegther this awesome dark theme, +% which is designed to be ideally suited for the dark-beamer-theme +\newcommand{\loaddarkbeamercolors}{% +\definecolor{jlbase}{HTML}{66FFCC}% % julia's base color +\definecolor{jlkeyword}{HTML}{F9F2D7}% % julia's keywords +\definecolor{jlliteral}{HTML}{9B9B9B}% % julia's literals +\definecolor{jlbuiltin}{HTML}{F5AB35}% % julia's built-ins +\definecolor{jlmacros}{HTML}{9B9B9B}% % julia's macros +\definecolor{jlfunctions}{HTML}{9455AD}% % julia's functions +\definecolor{jlcomment}{HTML}{455ED3}% % julia's comments +\definecolor{jlstrnum}{HTML}{6BAED6}% % julia's strings or numbers +\definecolor{jlop}{HTML}{FF005A}% % julia's operators +\definecolor{jlbackground}{HTML}{181818}% % the background of the code block +\definecolor{jlrule}{HTML}{DDDDDD}% % the rule of the code block +\definecolor{jllinenumbers}{HTML}{F5AB35}% % the line numbers of the code block +} + +\ifdefstring{\jlc@theme}{darkbeamer}{% +\renewcommand{\loadthemecolors}{\loaddarkbeamercolors}}{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% setting the default font +\ifjlc@defaultmonofont +% + \iftutex % LuaTeX + XeTeX + % + % + % use JuliaMono as typewriter font + \setmonofont{JuliaMono}[ + Extension = .ttf, + Path = ./, + Scale = 0.87, + Contextuals = Alternate, + UprightFont = *-Light, + BoldFont = *-SemiBold, + ItalicFont = *-Lightitalic, + BoldItalicFont = *-SemiBolditalic, + ] + % + % + \else % PDFTeX + % + % + % use Courier as typewriter font + \renewcommand{\ttdefault}{pcr} + % + % + \fi +% +\fi + + +% basic font style +\def\jlbasicfont{\ttfamily\relsize{-2}\selectfont} + + +% gerneral style for the code block +\lstdefinestyle{jlcodeblockstyle}{% +basicstyle={\loadthemecolors\color{jlstrnum}\jlbasicfont}, +keywordstyle={[1]\color{jlkeyword}\bfseries}, +keywordstyle={[2]\color{jlliteral}}, +keywordstyle={[3]\color{jlbuiltin}}, +keywordstyle={[4]\color{jlmacros}}, +keywordstyle={[5]\color{jlfunctions}}, +commentstyle={\color{jlcomment}}, +stringstyle={\color{jlstrnum}}, +identifierstyle={\color{jlbase}}, +showstringspaces=false, +upquote=true, +tabsize=4, +aboveskip={1.5\baselineskip}, belowskip={1.5\baselineskip} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% defining required lengths for the code box +\newlength{\bfem} +\newlength{\xmrgn} +\newcommand{\calcboxlengths}{% +\settowidth{\bfem}{\jlbasicfont{m}}% +\setlength{\xmrgn}{(\columnwidth - \jlc@charsperline\bfem)*\real{0.5}}% +} +\calcboxlengths + + +\iftutex % LuaTeX + XeTeX +% +% +% style for the code box of the default theme +\lstdefinestyle{jlcodeboxdfltstyle}{% +backgroundcolor=\color{jlbackground}, rulecolor=\color{jlrule}, +frame=single, frameround=tttt, +columns=fullflexible, +%basewidth=\bfem, +keepspaces=true, +linewidth=\columnwidth, +xleftmargin=\xmrgn, xrightmargin=\xmrgn, +framexleftmargin=0.5\bfem, framexrightmargin=0.5\bfem +} + +% style for the "code box" of the default theme without code box +\lstdefinestyle{jlcodeboxnostyle}{% +columns=fullflexible, +%basewidth=\bfem, +keepspaces=true, +linewidth=\columnwidth, +xleftmargin=\xmrgn, xrightmargin=\xmrgn, +framexleftmargin=0.5\bfem, framexrightmargin=0.5\bfem +} + +% style for the code box of the dark theme +\lstdefinestyle{jlcodeboxdthstyle}{% +backgroundcolor=\color{jlbackground}, rulecolor=\color{jlrule}, +columns=fullflexible, +%basewidth=\bfem, +keepspaces=true, +linewidth=\columnwidth, +xleftmargin=\xmrgn, xrightmargin=\xmrgn, +framexleftmargin=0.5\bfem, framexrightmargin=0.5\bfem +} +% +% +\else % PDFTeX +% +% +% style for the code box of the default theme +\lstdefinestyle{jlcodeboxdfltstyle}{% +backgroundcolor=\color{jlbackground}, rulecolor=\color{jlrule}, +frame=single, frameround=tttt, +columns=fixed, +basewidth=\bfem, +linewidth=\columnwidth, +xleftmargin=\xmrgn, xrightmargin=\xmrgn, +framexleftmargin=0.5\bfem, framexrightmargin=0.5\bfem +} + +% style for the "code box" of the default theme without code box +\lstdefinestyle{jlcodeboxnostyle}{% +columns=fixed, +basewidth=\bfem, +linewidth=\columnwidth, +xleftmargin=\xmrgn, xrightmargin=\xmrgn, +framexleftmargin=0.5\bfem, framexrightmargin=0.5\bfem +} + +% style for the code box of the dark theme +\lstdefinestyle{jlcodeboxdthstyle}{% +backgroundcolor=\color{jlbackground}, rulecolor=\color{jlrule}, +columns=fixed, +basewidth=\bfem, +linewidth=\columnwidth, +xleftmargin=\xmrgn, xrightmargin=\xmrgn, +framexleftmargin=0.5\bfem, framexrightmargin=0.5\bfem +} +% +% +\fi + + +% style for the linenumbers +\ifjlc@linenumbers + \lstdefinestyle{jllinenumbersstyle}{% + numbers=left, + stepnumber=1, + numberstyle=\ttfamily\color{jllinenumbers}, + numbersep = 1.5\bfem, + framexleftmargin=3.5\bfem + } +\else + \lstdefinestyle{jllinenumbersstyle}{} +\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 opc, the numc and the funcc commands +% for literating operators, numbers anf functions ending with '!' +\newcommand{\opc}[1]{{\color{jlop}#1}} +\newcommand{\numc}[1]{{\color{jlstrnum}#1}} +\newcommand{\funcc}[1]{{\color{jlfunctions}#1}} + + + +\lstdefinestyle{jlcodeopstyle}{% +opliterate=* +% +% julia's operators +% +{\$}{{\opc{\$}}}{1} {!}{{\opc{!}}}{1} {\%}{{\opc{\%}}}{1} {&}{{\opc{\&}}}{1} +{’}{{\opc{’}}}{1} {(}{{\opc{(}}}{1} {)}{{\opc{)}}}{1} {*}{{\opc{*}}}{1} +{+}{{\opc{+}}}{1} {,}{{\opc{,}}}{1} {-}{{\opc{-}}}{1} {.}{{\opc{.}}}{1} +{/}{{\opc{/}}}{1} {:}{{\opc{:}}}{1} {;}{{\opc{;}}}{1} {<}{{\opc{<}}}{1} +{=}{{\opc{=}}}{1} {>}{{\opc{>}}}{1} {?}{{\opc{?}}}{1} {[}{{\opc{[}}}{1} +{\\}{{\opc{\lstum@backslash}}}{1} {]}{{\opc{]}}}{1} {^}{{\opc{\^{}}}}{1} +{\{}{{\opc{\{}}}{1} {|}{{\opc{|}}}{1} {\}}{{\opc{\}}}}{1} +{~}{{\opc{\textasciitilde}}}{1} +%{~}{{\opc{\raisebox{0.5ex}{\texttildelow{}}}}}{1} +% +% julia's numbers +% +{.0}{{\numc{.0}}}{2} {.1}{{\numc{.1}}}{2} {.2}{{\numc{.2}}}{2} +{.3}{{\numc{.3}}}{2} {.4}{{\numc{.4}}}{2} {.5}{{\numc{.5}}}{2} +{.6}{{\numc{.6}}}{2} {.7}{{\numc{.7}}}{2} {.8}{{\numc{.8}}}{2} +{.9}{{\numc{.9}}}{2} +% +{e+0}{{\numc{e+0}}}{3} {e+1}{{\numc{e+1}}}{3} {e+2}{{\numc{e+2}}}{3} +{e+3}{{\numc{e+3}}}{3} {e+4}{{\numc{e+4}}}{3} {e+5}{{\numc{e+5}}}{3} +{e+6}{{\numc{e+6}}}{3} {e+7}{{\numc{e+7}}}{3} {e+8}{{\numc{e+8}}}{3} +{e+9}{{\numc{e+9}}}{3} +% +{0E+}{{\numc{0E+}}}{3} {1E+}{{\numc{1E+}}}{3} {2E+}{{\numc{2E+}}}{3} +{3E+}{{\numc{3E+}}}{3} {4E+}{{\numc{4E+}}}{3} {5E+}{{\numc{5E+}}}{3} +{6E+}{{\numc{6E+}}}{3} {7E+}{{\numc{7E+}}}{3} {8E+}{{\numc{8E+}}}{3} +{9E+}{{\numc{9E+}}}{3} +% +{e-0}{{\numc{e-0}}}{3} {e-1}{{\numc{e-1}}}{3} {e-2}{{\numc{e-2}}}{3} +{e-3}{{\numc{e-3}}}{3} {e-4}{{\numc{e-4}}}{3} {e-5}{{\numc{e-5}}}{3} +{e-6}{{\numc{e-6}}}{3} {e-7}{{\numc{e-7}}}{3} {e-8}{{\numc{e-8}}}{3} +{e-9}{{\numc{e-9}}}{3} +% +{0E-}{{\numc{0E-}}}{3} {1E-}{{\numc{1E-}}}{3} {2E-}{{\numc{2E-}}}{3} +{3E-}{{\numc{3E-}}}{3} {4E-}{{\numc{4E-}}}{3} {5E-}{{\numc{5E-}}}{3} +{6E-}{{\numc{6E-}}}{3} {7E-}{{\numc{7E-}}}{3} {8E-}{{\numc{8E-}}}{3} +{9E-}{{\numc{9E-}}}{3} +% +% julia's functions ending with '!' +% +{accumulate!}{{\funcc{accumulate!}}}{11} {adjoint!}{{\funcc{adjoint!}}}{8} +{all!}{{\funcc{all!}}}{4} {any!}{{\funcc{any!}}}{4} +{append!}{{\funcc{append!}}}{7} {asyncmap!}{{\funcc{asyncmap!}}}{9} +{atomic_add!}{{\funcc{atomic_add!}}}{11} +{atomic_and!}{{\funcc{atomic_and!}}}{11} +{atomic_cas!}{{\funcc{atomic_cas!}}}{11} +{atomic_max!}{{\funcc{atomic_max!}}}{11} +{atomic_min!}{{\funcc{atomic_min!}}}{11} +{atomic_nand!}{{\funcc{atomic_nand!}}}{12} +{atomic_or!}{{\funcc{atomic_or!}}}{10} {atomic_sub!}{{\funcc{atomic_sub!}}}{11} +{atomic_xchg!}{{\funcc{atomic_xchg!}}}{12} +{atomic_xor!}{{\funcc{atomic_xor!}}}{11} {axpby!}{{\funcc{axpby!}}}{6} +{axpy!}{{\funcc{axpy!}}}{5} {broadcast!}{{\funcc{broadcast!}}}{10} +{bunchkaufman!}{{\funcc{bunchkaufman!}}}{13} {cholesky!}{{\funcc{cholesky!}}}{9} +{circcopy!}{{\funcc{circcopy!}}}{9} {circshift!}{{\funcc{circshift!}}}{10} +{clamp!}{{\funcc{clamp!}}}{6} {clear!}{{\funcc{clear!}}}{6} +{conj!}{{\funcc{conj!}}}{5} {copy!}{{\funcc{copy!}}}{5} +{copy_transpose!}{{\funcc{copy_transpose!}}}{15} {copyto!}{{\funcc{copyto!}}}{7} +{count!}{{\funcc{count!}}}{6} {cumprod!}{{\funcc{cumprod!}}}{8} +{cumsum!}{{\funcc{cumsum!}}}{7} {delete!}{{\funcc{delete!}}}{7} +{deleteat!}{{\funcc{deleteat!}}}{9} {digest!}{{\funcc{digest!}}}{7} +{digits!}{{\funcc{digits!}}}{7} {droptol!}{{\funcc{droptol!}}}{8} +{dropzeros!}{{\funcc{dropzeros!}}}{10} {eigen!}{{\funcc{eigen!}}}{6} +{eigvals!}{{\funcc{eigvals!}}}{8} {empty!}{{\funcc{empty!}}}{6} +{fill!}{{\funcc{fill!}}}{5} {filter!}{{\funcc{filter!}}}{7} +{findmax!}{{\funcc{findmax!}}}{8} {findmin!}{{\funcc{findmin!}}}{8} +{get!}{{\funcc{get!}}}{4} {hessenberg!}{{\funcc{hessenberg!}}}{11} +{hex2bytes!}{{\funcc{hex2bytes!}}}{10} {insert!}{{\funcc{insert!}}}{7} +{intersect!}{{\funcc{intersect!}}}{10} {invpermute!}{{\funcc{invpermute!}}}{11} +{isposdef!}{{\funcc{isposdef!}}}{9} {keepat!}{{\funcc{keepat!}}}{7} +{kron!}{{\funcc{kron!}}}{5} {ldiv!}{{\funcc{ldiv!}}}{5} +{ldlt!}{{\funcc{ldlt!}}}{5} {lmul!}{{\funcc{lmul!}}}{5} +{lowrankdowndate!}{{\funcc{lowrankdowndate!}}}{16} +{lowrankupdate!}{{\funcc{lowrankupdate!}}}{14} {lq!}{{\funcc{lq!}}}{3} +{lu!}{{\funcc{lu!}}}{3} {map!}{{\funcc{map!}}}{4} +{maximum!}{{\funcc{maximum!}}}{8} {mean!}{{\funcc{mean!}}}{5} +{median!}{{\funcc{median!}}}{7} {merge!}{{\funcc{merge!}}}{6} +{mergewith!}{{\funcc{mergewith!}}}{10} {minimum!}{{\funcc{minimum!}}}{8} +{modifyfield!}{{\funcc{modifyfield!}}}{12} +{modifyproperty!}{{\funcc{modifyproperty!}}}{15} {mul!}{{\funcc{mul!}}}{4} +{normalize!}{{\funcc{normalize!}}}{10} {ordschur!}{{\funcc{ordschur!}}}{9} +{partialsort!}{{\funcc{partialsort!}}}{12} +{partialsortperm!}{{\funcc{partialsortperm!}}}{16} +{permute!}{{\funcc{permute!}}}{8} {permutedims!}{{\funcc{permutedims!}}}{12} +{pop!}{{\funcc{pop!}}}{4} {popat!}{{\funcc{popat!}}}{6} +{popfirst!}{{\funcc{popfirst!}}}{9} {prepend!}{{\funcc{prepend!}}}{8} +{prod!}{{\funcc{prod!}}}{5} {push!}{{\funcc{push!}}}{5} +{pushfirst!}{{\funcc{pushfirst!}}}{10} {put!}{{\funcc{put!}}}{4} +{qr!}{{\funcc{qr!}}}{3} {quantile!}{{\funcc{quantile!}}}{9} +{rand!}{{\funcc{rand!}}}{5} {randcycle!}{{\funcc{randcycle!}}}{10} +{randexp!}{{\funcc{randexp!}}}{8} {randn!}{{\funcc{randn!}}}{6} +{randperm!}{{\funcc{randperm!}}}{9} {randsubseq!}{{\funcc{randsubseq!}}}{11} +{rdiv!}{{\funcc{rdiv!}}}{5} {read!}{{\funcc{read!}}}{5} +{readbytes!}{{\funcc{readbytes!}}}{10} {reflect!}{{\funcc{reflect!}}}{8} +{replace!}{{\funcc{replace!}}}{8} +{replace_sourceloc!}{{\funcc{replace_sourceloc!}}}{18} +{replacefield!}{{\funcc{replacefield!}}}{13} +{replaceproperty!}{{\funcc{replaceproperty!}}}{16} +{resize!}{{\funcc{resize!}}}{7} {reverse!}{{\funcc{reverse!}}}{8} +{rmul!}{{\funcc{rmul!}}}{5} {rotate!}{{\funcc{rotate!}}}{7} +{schur!}{{\funcc{schur!}}}{6} {setdiff!}{{\funcc{setdiff!}}}{8} +{setfield!}{{\funcc{setfield!}}}{9} {setindex!}{{\funcc{setindex!}}}{9} +{setproperty!}{{\funcc{setproperty!}}}{12} {shuffle!}{{\funcc{shuffle!}}}{8} +{sizehint!}{{\funcc{sizehint!}}}{9} {sort!}{{\funcc{sort!}}}{5} +{sortperm!}{{\funcc{sortperm!}}}{9} {splice!}{{\funcc{splice!}}}{7} +{sum!}{{\funcc{sum!}}}{4} {svd!}{{\funcc{svd!}}}{4} +{svdvals!}{{\funcc{svdvals!}}}{8} {swapfield!}{{\funcc{swapfield!}}}{10} +{swapproperty!}{{\funcc{swapproperty!}}}{13} {symdiff!}{{\funcc{symdiff!}}}{8} +{take!}{{\funcc{take!}}}{5} {transpose!}{{\funcc{transpose!}}}{10} +{tril!}{{\funcc{tril!}}}{5} {triu!}{{\funcc{triu!}}}{5} +{union!}{{\funcc{union!}}}{6} {unique!}{{\funcc{unique!}}}{7} +{unsafe_copyto!}{{\funcc{unsafe_copyto!}}}{14} +{unsafe_store!}{{\funcc{unsafe_store!}}}{13} {update!}{{\funcc{update!}}}{7} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% defining the ucc, the ucclit and uccop 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% +} + +\newcommand{\uccop}[1]{% +\ifnum\lst@mode=\lst@Pmode\relax% +{\color{jlop}#1}% +\else% +#1% +\fi% +} + + + +\lst@InputCatcodes +\iftutex % LuaTeX + XeTeX +\def\lst@DefEC{% +\lst@CCECUse \lst@ProcessLetter +^^a1^^a3^^a5^^a6^^a7^^a9^^aa^^ab^^ac^^ae^^af^^b0^^b1^^b2^^b3^^b6^^b7^^b9^^ba% +^^bb^^bc^^bd^^be^^bf^^c0^^c1^^c2^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce% +^^cf^^d0^^d1^^d2^^d3^^d4^^d6^^d7^^d8^^d9^^da^^db^^dc^^de^^df^^e0^^e1^^e2^^e4% +^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef^^f0^^f1^^f2^^f3^^f4^^f6^^f7^^f8% +^^f9^^fa^^fb^^fc^^fe% +^^^^0110^^^^0111^^^^0127^^^^0131^^^^0141^^^^0142^^^^014a^^^^014b^^^^0150% +^^^^0151^^^^0152^^^^0153^^^^0170^^^^0171^^^^0195^^^^019e^^^^01b5^^^^01c2% +^^^^0237^^^^0250^^^^0252^^^^0254^^^^0256^^^^0259^^^^0263^^^^0264^^^^0265% +^^^^026c^^^^026d^^^^026f^^^^0270^^^^0271^^^^0272^^^^0273^^^^0277^^^^0278% +^^^^0279^^^^027a^^^^027b^^^^027c^^^^027d^^^^027e^^^^0282^^^^0283^^^^0287% +^^^^0288^^^^028a^^^^028b^^^^028c^^^^028d^^^^028e^^^^0290^^^^0292^^^^0294% +^^^^0295^^^^0296^^^^029e^^^^02a4^^^^02a7^^^^02b0^^^^02b2^^^^02b3^^^^02b7% +^^^^02b8^^^^02bc^^^^02c8^^^^02cc^^^^02d0^^^^02d1^^^^02d2^^^^02d3^^^^02d4% +^^^^02d5^^^^02d8^^^^02dc^^^^02e1^^^^02e2^^^^02e3^^^^0300^^^^0301^^^^0302% +^^^^0303^^^^0304^^^^0305^^^^0306^^^^0307^^^^0308^^^^0309^^^^030a^^^^030b% +^^^^030c^^^^0310^^^^0312^^^^0315^^^^031a^^^^0321^^^^0322^^^^0327^^^^0328% +^^^^032a^^^^0330^^^^0332^^^^0336^^^^0338^^^^034d^^^^0391^^^^0392^^^^0393% +^^^^0394^^^^0395^^^^0396^^^^0397^^^^0398^^^^0399^^^^039a^^^^039b^^^^039c% +^^^^039d^^^^039e^^^^039f^^^^03a0^^^^03a1^^^^03a3^^^^03a4^^^^03a5^^^^03a6% +^^^^03a7^^^^03a8^^^^03a9^^^^03b1^^^^03b2^^^^03b3^^^^03b4^^^^03b5^^^^03b6% +^^^^03b7^^^^03b8^^^^03b9^^^^03ba^^^^03bb^^^^03bc^^^^03bd^^^^03be^^^^03bf% +^^^^03c0^^^^03c1^^^^03c2^^^^03c3^^^^03c4^^^^03c5^^^^03c6^^^^03c7^^^^03c8% +^^^^03c9^^^^03d0^^^^03d1^^^^03d5^^^^03d6^^^^03d8^^^^03d9^^^^03da^^^^03db% +^^^^03dc^^^^03dd^^^^03de^^^^03df^^^^03e0^^^^03e1^^^^03f0^^^^03f1^^^^03f4% +^^^^03f5^^^^03f6^^^^1d2c^^^^1d2e^^^^1d30^^^^1d31^^^^1d33^^^^1d34^^^^1d35% +^^^^1d36^^^^1d37^^^^1d38^^^^1d39^^^^1d3a^^^^1d3c^^^^1d3e^^^^1d3f^^^^1d40% +^^^^1d41^^^^1d42^^^^1d43^^^^1d45^^^^1d47^^^^1d48^^^^1d49^^^^1d4b^^^^1d4d% +^^^^1d4f^^^^1d50^^^^1d52^^^^1d56^^^^1d57^^^^1d58^^^^1d5b^^^^1d5d^^^^1d5e% +^^^^1d5f^^^^1d60^^^^1d61^^^^1d62^^^^1d63^^^^1d64^^^^1d65^^^^1d66^^^^1d67% +^^^^1d68^^^^1d69^^^^1d6a^^^^1d9c^^^^1da0^^^^1da5^^^^1db2^^^^1dbb^^^^1dbf% +^^^^2002^^^^2003^^^^2005^^^^2009^^^^200a^^^^2013^^^^2014^^^^2016^^^^2018% +^^^^2019^^^^201b^^^^201c^^^^201d^^^^2020^^^^2021^^^^2022^^^^2026^^^^2030% +^^^^2031^^^^2032^^^^2033^^^^2034^^^^2035^^^^2036^^^^2037^^^^2039^^^^203a% +^^^^203c^^^^2040^^^^2049^^^^2057^^^^205d^^^^2060^^^^2070^^^^2071^^^^2074% +^^^^2075^^^^2076^^^^2077^^^^2078^^^^2079^^^^207a^^^^207b^^^^207c^^^^207d% +^^^^207e^^^^207f^^^^2080^^^^2081^^^^2082^^^^2083^^^^2084^^^^2085^^^^2086% +^^^^2087^^^^2088^^^^2089^^^^208a^^^^208b^^^^208c^^^^208d^^^^208e^^^^2090% +^^^^2091^^^^2092^^^^2093^^^^2094^^^^2095^^^^2096^^^^2097^^^^2098^^^^2099% +^^^^209a^^^^209b^^^^209c^^^^20a7^^^^20ac^^^^20d0^^^^20d1^^^^20d2^^^^20d6% +^^^^20d7^^^^20db^^^^20dc^^^^20dd^^^^20de^^^^20df^^^^20e1^^^^20e4^^^^20e7% +^^^^20e8^^^^20e9^^^^20ec^^^^20ed^^^^20ee^^^^20ef^^^^20f0^^^^2102^^^^2107% +^^^^210a^^^^210b^^^^210c^^^^210d^^^^210e^^^^210f^^^^2110^^^^2111^^^^2112% +^^^^2113^^^^2115^^^^2116^^^^2118^^^^2119^^^^211a^^^^211b^^^^211c^^^^211d% +^^^^211e^^^^2122^^^^2124^^^^2126^^^^2127^^^^2128^^^^2129^^^^212b^^^^212c% +^^^^212d^^^^212f^^^^2130^^^^2131^^^^2132^^^^2133^^^^2134^^^^2135^^^^2136% +^^^^2137^^^^2138^^^^2139^^^^213c^^^^213d^^^^213e^^^^213f^^^^2140^^^^2141% +^^^^2142^^^^2143^^^^2144^^^^2145^^^^2146^^^^2147^^^^2148^^^^2149^^^^214a% +^^^^214b^^^^2150^^^^2151^^^^2152^^^^2153^^^^2154^^^^2155^^^^2156^^^^2157% +^^^^2158^^^^2159^^^^215a^^^^215b^^^^215c^^^^215d^^^^215e^^^^215f^^^^2189% +^^^^2190^^^^2191^^^^2192^^^^2193^^^^2194^^^^2195^^^^2196^^^^2197^^^^2198% +^^^^2199^^^^219a^^^^219b^^^^219c^^^^219d^^^^219e^^^^219f^^^^21a0^^^^21a1% +^^^^21a2^^^^21a3^^^^21a4^^^^21a5^^^^21a6^^^^21a7^^^^21a8^^^^21a9^^^^21aa% +^^^^21ab^^^^21ac^^^^21ad^^^^21ae^^^^21af^^^^21b0^^^^21b1^^^^21b2^^^^21b3% +^^^^21b4^^^^21b5^^^^21b6^^^^21b7^^^^21b8^^^^21b9^^^^21ba^^^^21bb^^^^21bc% +^^^^21bd^^^^21be^^^^21bf^^^^21c0^^^^21c1^^^^21c2^^^^21c3^^^^21c4^^^^21c5% +^^^^21c6^^^^21c7^^^^21c8^^^^21c9^^^^21ca^^^^21cb^^^^21cc^^^^21cd^^^^21ce% +^^^^21cf^^^^21d0^^^^21d1^^^^21d2^^^^21d3^^^^21d4^^^^21d5^^^^21d6^^^^21d7% +^^^^21d8^^^^21d9^^^^21da^^^^21db^^^^21dc^^^^21dd^^^^21de^^^^21df^^^^21e0% +^^^^21e1^^^^21e2^^^^21e3^^^^21e4^^^^21e5^^^^21e6^^^^21e7^^^^21e8^^^^21e9% +^^^^21ea^^^^21f4^^^^21f5^^^^21f6^^^^21f7^^^^21f8^^^^21f9^^^^21fa^^^^21fb% +^^^^21fc^^^^21fd^^^^21fe^^^^21ff^^^^2200^^^^2201^^^^2202^^^^2203^^^^2204% +^^^^2205^^^^2206^^^^2207^^^^2208^^^^2209^^^^220a^^^^220b^^^^220c^^^^220d% +^^^^220e^^^^220f^^^^2210^^^^2211^^^^2212^^^^2213^^^^2214^^^^2216^^^^2217% +^^^^2218^^^^2219^^^^221a^^^^221b^^^^221c^^^^221d^^^^221e^^^^221f^^^^2220% +^^^^2221^^^^2222^^^^2223^^^^2224^^^^2225^^^^2226^^^^2227^^^^2228^^^^2229% +^^^^222a^^^^222b^^^^222c^^^^222d^^^^222e^^^^222f^^^^2230^^^^2231^^^^2232% +^^^^2233^^^^2234^^^^2235^^^^2237^^^^2238^^^^223a^^^^223b^^^^223c^^^^223d% +^^^^223e^^^^223f^^^^2240^^^^2241^^^^2242^^^^2243^^^^2244^^^^2245^^^^2246% +^^^^2247^^^^2248^^^^2249^^^^224a^^^^224b^^^^224c^^^^224d^^^^224e^^^^224f% +^^^^2250^^^^2251^^^^2252^^^^2253^^^^2254^^^^2255^^^^2256^^^^2257^^^^2258% +^^^^2259^^^^225a^^^^225b^^^^225c^^^^225d^^^^225e^^^^225f^^^^2260^^^^2261% +^^^^2262^^^^2263^^^^2264^^^^2265^^^^2266^^^^2267^^^^2268^^^^2269^^^^226a% +^^^^226b^^^^226c^^^^226d^^^^226e^^^^226f^^^^2270^^^^2271^^^^2272^^^^2273% +^^^^2274^^^^2275^^^^2276^^^^2277^^^^2278^^^^2279^^^^227a^^^^227b^^^^227c% +^^^^227d^^^^227e^^^^227f^^^^2280^^^^2281^^^^2282^^^^2283^^^^2284^^^^2285% +^^^^2286^^^^2287^^^^2288^^^^2289^^^^228a^^^^228b^^^^228d^^^^228e^^^^228f% +^^^^2290^^^^2291^^^^2292^^^^2293^^^^2294^^^^2295^^^^2296^^^^2297^^^^2298% +^^^^2299^^^^229a^^^^229b^^^^229c^^^^229d^^^^229e^^^^229f^^^^22a0^^^^22a1% +^^^^22a2^^^^22a3^^^^22a4^^^^22a5^^^^22a7^^^^22a8^^^^22a9^^^^22aa^^^^22ab% +^^^^22ac^^^^22ad^^^^22ae^^^^22af^^^^22b0^^^^22b1^^^^22b2^^^^22b3^^^^22b4% +^^^^22b5^^^^22b6^^^^22b7^^^^22b8^^^^22b9^^^^22ba^^^^22bb^^^^22bc^^^^22bd% +^^^^22be^^^^22bf^^^^22c0^^^^22c1^^^^22c2^^^^22c3^^^^22c4^^^^22c5^^^^22c6% +^^^^22c7^^^^22c8^^^^22c9^^^^22ca^^^^22cb^^^^22cc^^^^22cd^^^^22ce^^^^22cf% +^^^^22d0^^^^22d1^^^^22d2^^^^22d3^^^^22d4^^^^22d5^^^^22d6^^^^22d7^^^^22d8% +^^^^22d9^^^^22da^^^^22db^^^^22dc^^^^22dd^^^^22de^^^^22df^^^^22e0^^^^22e1% +^^^^22e2^^^^22e3^^^^22e4^^^^22e5^^^^22e6^^^^22e7^^^^22e8^^^^22e9^^^^22ea% +^^^^22eb^^^^22ec^^^^22ed^^^^22ee^^^^22ef^^^^22f0^^^^22f1^^^^22f2^^^^22f3% +^^^^22f4^^^^22f5^^^^22f6^^^^22f7^^^^22f8^^^^22f9^^^^22fa^^^^22fb^^^^22fc% +^^^^22fd^^^^22fe^^^^22ff^^^^2300^^^^2302^^^^2305^^^^2306^^^^2308^^^^2309% +^^^^230a^^^^230b^^^^2310^^^^2311^^^^2312^^^^2313^^^^2315^^^^2317^^^^2319% +^^^^231a^^^^231b^^^^231c^^^^231d^^^^231e^^^^231f^^^^2322^^^^2323^^^^232c% +^^^^2332^^^^2336^^^^233d^^^^233f^^^^2340^^^^2353^^^^2370^^^^2394^^^^23a3% +^^^^23b0^^^^23b1^^^^23b4^^^^23b5^^^^23b6^^^^23b7^^^^23b8^^^^23b9^^^^23ce% +^^^^23de^^^^23df^^^^23e2^^^^23e3^^^^23e4^^^^23e5^^^^23e6^^^^23e7^^^^23e9% +^^^^23ea^^^^23eb^^^^23ec^^^^23f0^^^^23f3^^^^2422^^^^2423^^^^24c2^^^^24c8% +^^^^2500^^^^2501^^^^2502^^^^2503^^^^2504^^^^2505^^^^2506^^^^2507^^^^2508% +^^^^2509^^^^250a^^^^250b^^^^250c^^^^250d^^^^250e^^^^250f^^^^2510^^^^2511% +^^^^2512^^^^2513^^^^2514^^^^2515^^^^2516^^^^2517^^^^2518^^^^2519^^^^251a% +^^^^251b^^^^251c^^^^251d^^^^251e^^^^251f^^^^2520^^^^2521^^^^2522^^^^2523% +^^^^2524^^^^2525^^^^2526^^^^2527^^^^2528^^^^2529^^^^252a^^^^252b^^^^252c% +^^^^252d^^^^252e^^^^252f^^^^2530^^^^2531^^^^2532^^^^2533^^^^2534^^^^2535% +^^^^2536^^^^2537^^^^2538^^^^2539^^^^253a^^^^253b^^^^253c^^^^253d^^^^253e% +^^^^253f^^^^2540^^^^2541^^^^2542^^^^2543^^^^2544^^^^2545^^^^2546^^^^2547% +^^^^2548^^^^2549^^^^254a^^^^254b^^^^254c^^^^254d^^^^254e^^^^254f^^^^2550% +^^^^2551^^^^2552^^^^2553^^^^2554^^^^2555^^^^2556^^^^2557^^^^2558^^^^2559% +^^^^255a^^^^255b^^^^255c^^^^255d^^^^255e^^^^255f^^^^2560^^^^2561^^^^2562% +^^^^2563^^^^2564^^^^2565^^^^2566^^^^2567^^^^2568^^^^2569^^^^256a^^^^256b% +^^^^256c^^^^256d^^^^256e^^^^256f^^^^2570^^^^2571^^^^2572^^^^2573^^^^2574% +^^^^2575^^^^2576^^^^2577^^^^2578^^^^2579^^^^257a^^^^257b^^^^257c^^^^257d% +^^^^257e^^^^257f^^^^2580^^^^2584^^^^2588^^^^258c^^^^2590^^^^2591^^^^2592% +^^^^2593^^^^25a0^^^^25a1^^^^25a2^^^^25a3^^^^25a4^^^^25a5^^^^25a6^^^^25a7% +^^^^25a8^^^^25a9^^^^25aa^^^^25ab^^^^25ac^^^^25ad^^^^25ae^^^^25af^^^^25b0% +^^^^25b1^^^^25b2^^^^25b3^^^^25b4^^^^25b5^^^^25b6^^^^25b7^^^^25b8^^^^25b9% +^^^^25ba^^^^25bb^^^^25bc^^^^25bd^^^^25be^^^^25bf^^^^25c0^^^^25c1^^^^25c2% +^^^^25c3^^^^25c4^^^^25c5^^^^25c6^^^^25c7^^^^25c8^^^^25c9^^^^25ca^^^^25cb% +^^^^25cc^^^^25cd^^^^25ce^^^^25cf^^^^25d0^^^^25d1^^^^25d2^^^^25d3^^^^25d4% +^^^^25d5^^^^25d6^^^^25d7^^^^25d8^^^^25d9^^^^25da^^^^25db^^^^25dc^^^^25dd% +^^^^25de^^^^25df^^^^25e0^^^^25e1^^^^25e2^^^^25e3^^^^25e4^^^^25e5^^^^25e6% +^^^^25e7^^^^25e8^^^^25e9^^^^25ea^^^^25eb^^^^25ec^^^^25ed^^^^25ee^^^^25ef% +^^^^25f0^^^^25f1^^^^25f2^^^^25f3^^^^25f4^^^^25f5^^^^25f6^^^^25f7^^^^25f8% +^^^^25f9^^^^25fa^^^^25fb^^^^25fc^^^^25fd^^^^25fe^^^^25ff^^^^2600^^^^2601% +^^^^2605^^^^2606^^^^2609^^^^260e^^^^2611^^^^2614^^^^2615^^^^261d^^^^2621% +^^^^263a^^^^263b^^^^263c^^^^263d^^^^263e^^^^263f^^^^2640^^^^2642^^^^2643% +^^^^2644^^^^2645^^^^2646^^^^2647^^^^2648^^^^2649^^^^264a^^^^264b^^^^264c% +^^^^264d^^^^264e^^^^264f^^^^2650^^^^2651^^^^2652^^^^2653^^^^2660^^^^2661% +^^^^2662^^^^2663^^^^2664^^^^2665^^^^2666^^^^2667^^^^2668^^^^2669^^^^266a% +^^^^266b^^^^266d^^^^266e^^^^266f^^^^267b^^^^267e^^^^267f^^^^2680^^^^2681% +^^^^2682^^^^2683^^^^2684^^^^2685^^^^2686^^^^2687^^^^2688^^^^2689^^^^2693% +^^^^26a0^^^^26a1^^^^26a5^^^^26aa^^^^26ab^^^^26ac^^^^26b2^^^^26bd^^^^26be% +^^^^26c4^^^^26c5^^^^26ce^^^^26d4^^^^26ea^^^^26f2^^^^26f3^^^^26f5^^^^26fa% +^^^^26fd^^^^2702^^^^2705^^^^2708^^^^2709^^^^270a^^^^270b^^^^270c^^^^270f% +^^^^2712^^^^2713^^^^2714^^^^2716^^^^2720^^^^2728^^^^272a^^^^2733^^^^2734% +^^^^2736^^^^273d^^^^2744^^^^2747^^^^274c^^^^274e^^^^2753^^^^2754^^^^2755% +^^^^2757^^^^2764^^^^2795^^^^2796^^^^2797^^^^279b^^^^27a1^^^^27b0^^^^27bf% +^^^^27c0^^^^27c1^^^^27c2^^^^27c8^^^^27c9^^^^27d1^^^^27d2^^^^27d5^^^^27d6% +^^^^27d7^^^^27d8^^^^27d9^^^^27e6^^^^27e7^^^^27e8^^^^27e9^^^^27f0^^^^27f1% +^^^^27f5^^^^27f6^^^^27f7^^^^27f8^^^^27f9^^^^27fa^^^^27fb^^^^27fc^^^^27fd% +^^^^27fe^^^^27ff^^^^2900^^^^2901^^^^2902^^^^2903^^^^2904^^^^2905^^^^2906% +^^^^2907^^^^2908^^^^2909^^^^290a^^^^290b^^^^290c^^^^290d^^^^290e^^^^290f% +^^^^2910^^^^2911^^^^2912^^^^2913^^^^2914^^^^2915^^^^2916^^^^2917^^^^2918% +^^^^291d^^^^291e^^^^291f^^^^2920^^^^2925^^^^2926^^^^2927^^^^2928^^^^2929% +^^^^292a^^^^292b^^^^292c^^^^292d^^^^292e^^^^292f^^^^2930^^^^2931^^^^2932% +^^^^2934^^^^2935^^^^2942^^^^2944^^^^2945^^^^2946^^^^2947^^^^2948^^^^2949% +^^^^294a^^^^294b^^^^294c^^^^294d^^^^294e^^^^294f^^^^2950^^^^2951^^^^2952% +^^^^2953^^^^2954^^^^2955^^^^2956^^^^2957^^^^2958^^^^2959^^^^295a^^^^295b% +^^^^295c^^^^295d^^^^295e^^^^295f^^^^2960^^^^2961^^^^2962^^^^2963^^^^2964% +^^^^2965^^^^2966^^^^2967^^^^2968^^^^2969^^^^296a^^^^296b^^^^296c^^^^296d% +^^^^296e^^^^296f^^^^2970^^^^2980^^^^2986^^^^2999^^^^299b^^^^299c^^^^299d% +^^^^299e^^^^299f^^^^29a0^^^^29a1^^^^29a2^^^^29a3^^^^29a4^^^^29a5^^^^29a6% +^^^^29a7^^^^29a8^^^^29a9^^^^29aa^^^^29ab^^^^29ac^^^^29ad^^^^29ae^^^^29af% +^^^^29b0^^^^29b1^^^^29b2^^^^29b3^^^^29b4^^^^29b7^^^^29b8^^^^29bc^^^^29be% +^^^^29bf^^^^29c0^^^^29c1^^^^29c4^^^^29c5^^^^29c6^^^^29c7^^^^29ca^^^^29cb% +^^^^29cf^^^^29d0^^^^29df^^^^29e1^^^^29e2^^^^29e3^^^^29e4^^^^29e5^^^^29eb% +^^^^29f4^^^^29f6^^^^29f7^^^^29fa^^^^29fb^^^^2a00^^^^2a01^^^^2a02^^^^2a03% +^^^^2a04^^^^2a05^^^^2a06^^^^2a07^^^^2a08^^^^2a09^^^^2a0a^^^^2a0b^^^^2a0c% +^^^^2a0d^^^^2a0e^^^^2a0f^^^^2a10^^^^2a11^^^^2a12^^^^2a13^^^^2a14^^^^2a15% +^^^^2a16^^^^2a18^^^^2a19^^^^2a1a^^^^2a1b^^^^2a1c^^^^2a1d^^^^2a1f^^^^2a22% +^^^^2a23^^^^2a24^^^^2a25^^^^2a26^^^^2a27^^^^2a28^^^^2a29^^^^2a2a^^^^2a2b% +^^^^2a2c^^^^2a2d^^^^2a2e^^^^2a2f^^^^2a30^^^^2a31^^^^2a32^^^^2a33^^^^2a34% +^^^^2a35^^^^2a36^^^^2a37^^^^2a38^^^^2a39^^^^2a3a^^^^2a3b^^^^2a3c^^^^2a3d% +^^^^2a3f^^^^2a40^^^^2a41^^^^2a42^^^^2a43^^^^2a44^^^^2a45^^^^2a4a^^^^2a4b% +^^^^2a4c^^^^2a4d^^^^2a4e^^^^2a4f^^^^2a50^^^^2a51^^^^2a52^^^^2a53^^^^2a54% +^^^^2a55^^^^2a56^^^^2a57^^^^2a58^^^^2a5a^^^^2a5b^^^^2a5c^^^^2a5d^^^^2a5e% +^^^^2a5f^^^^2a60^^^^2a61^^^^2a62^^^^2a63^^^^2a66^^^^2a67^^^^2a6a^^^^2a6b% +^^^^2a6c^^^^2a6d^^^^2a6e^^^^2a6f^^^^2a70^^^^2a71^^^^2a72^^^^2a73^^^^2a74% +^^^^2a75^^^^2a76^^^^2a77^^^^2a78^^^^2a79^^^^2a7a^^^^2a7b^^^^2a7c^^^^2a7d% +^^^^2a7e^^^^2a7f^^^^2a80^^^^2a81^^^^2a82^^^^2a83^^^^2a84^^^^2a85^^^^2a86% +^^^^2a87^^^^2a88^^^^2a89^^^^2a8a^^^^2a8b^^^^2a8c^^^^2a8d^^^^2a8e^^^^2a8f% +^^^^2a90^^^^2a91^^^^2a92^^^^2a93^^^^2a94^^^^2a95^^^^2a96^^^^2a97^^^^2a98% +^^^^2a99^^^^2a9a^^^^2a9b^^^^2a9c^^^^2a9d^^^^2a9e^^^^2a9f^^^^2aa0^^^^2aa1% +^^^^2aa2^^^^2aa3^^^^2aa4^^^^2aa5^^^^2aa6^^^^2aa7^^^^2aa8^^^^2aa9^^^^2aaa% +^^^^2aab^^^^2aac^^^^2aad^^^^2aae^^^^2aaf^^^^2ab0^^^^2ab1^^^^2ab2^^^^2ab3% +^^^^2ab4^^^^2ab5^^^^2ab6^^^^2ab7^^^^2ab8^^^^2ab9^^^^2aba^^^^2abb^^^^2abc% +^^^^2abd^^^^2abe^^^^2abf^^^^2ac0^^^^2ac1^^^^2ac2^^^^2ac3^^^^2ac4^^^^2ac5% +^^^^2ac6^^^^2ac7^^^^2ac8^^^^2ac9^^^^2aca^^^^2acb^^^^2acc^^^^2acd^^^^2ace% +^^^^2acf^^^^2ad0^^^^2ad1^^^^2ad2^^^^2ad3^^^^2ad4^^^^2ad5^^^^2ad6^^^^2ad7% +^^^^2ad8^^^^2ad9^^^^2adb^^^^2adc^^^^2add^^^^2ae3^^^^2ae4^^^^2af4^^^^2af6% +^^^^2af7^^^^2af8^^^^2af9^^^^2afa^^^^2b05^^^^2b06^^^^2b07^^^^2b12^^^^2b13% +^^^^2b14^^^^2b15^^^^2b16^^^^2b17^^^^2b18^^^^2b19^^^^2b1a^^^^2b1b^^^^2b1c% +^^^^2b1d^^^^2b1e^^^^2b1f^^^^2b20^^^^2b21^^^^2b22^^^^2b23^^^^2b24^^^^2b25% +^^^^2b26^^^^2b27^^^^2b28^^^^2b29^^^^2b2a^^^^2b2b^^^^2b2c^^^^2b2d^^^^2b2e% +^^^^2b2f^^^^2b30^^^^2b31^^^^2b32^^^^2b33^^^^2b34^^^^2b35^^^^2b36^^^^2b37% +^^^^2b38^^^^2b39^^^^2b3a^^^^2b3b^^^^2b3c^^^^2b3d^^^^2b3e^^^^2b3f^^^^2b40% +^^^^2b41^^^^2b42^^^^2b43^^^^2b44^^^^2b45^^^^2b46^^^^2b47^^^^2b48^^^^2b49% +^^^^2b4a^^^^2b4b^^^^2b4c^^^^2b50^^^^2b51^^^^2b52^^^^2b53^^^^2b54^^^^2b55% +^^^^2c7c^^^^2c7d^^^^3012^^^^3030^^^^303d^^^^3297^^^^3299^^^^a71b^^^^a71c% +^^^^a71d% +^^^^^^01d400^^^^^^01d401^^^^^^01d402^^^^^^01d403^^^^^^01d404^^^^^^01d405% +^^^^^^01d406^^^^^^01d407^^^^^^01d408^^^^^^01d409^^^^^^01d40a^^^^^^01d40b% +^^^^^^01d40c^^^^^^01d40d^^^^^^01d40e^^^^^^01d40f^^^^^^01d410^^^^^^01d411% +^^^^^^01d412^^^^^^01d413^^^^^^01d414^^^^^^01d415^^^^^^01d416^^^^^^01d417% +^^^^^^01d418^^^^^^01d419^^^^^^01d41a^^^^^^01d41b^^^^^^01d41c^^^^^^01d41d% +^^^^^^01d41e^^^^^^01d41f^^^^^^01d420^^^^^^01d421^^^^^^01d422^^^^^^01d423% +^^^^^^01d424^^^^^^01d425^^^^^^01d426^^^^^^01d427^^^^^^01d428^^^^^^01d429% +^^^^^^01d42a^^^^^^01d42b^^^^^^01d42c^^^^^^01d42d^^^^^^01d42e^^^^^^01d42f% +^^^^^^01d430^^^^^^01d431^^^^^^01d432^^^^^^01d433^^^^^^01d434^^^^^^01d435% +^^^^^^01d436^^^^^^01d437^^^^^^01d438^^^^^^01d439^^^^^^01d43a^^^^^^01d43b% +^^^^^^01d43c^^^^^^01d43d^^^^^^01d43e^^^^^^01d43f^^^^^^01d440^^^^^^01d441% +^^^^^^01d442^^^^^^01d443^^^^^^01d444^^^^^^01d445^^^^^^01d446^^^^^^01d447% +^^^^^^01d448^^^^^^01d449^^^^^^01d44a^^^^^^01d44b^^^^^^01d44c^^^^^^01d44d% +^^^^^^01d44e^^^^^^01d44f^^^^^^01d450^^^^^^01d451^^^^^^01d452^^^^^^01d453% +^^^^^^01d454^^^^^^01d456^^^^^^01d457^^^^^^01d458^^^^^^01d459^^^^^^01d45a% +^^^^^^01d45b^^^^^^01d45c^^^^^^01d45d^^^^^^01d45e^^^^^^01d45f^^^^^^01d460% +^^^^^^01d461^^^^^^01d462^^^^^^01d463^^^^^^01d464^^^^^^01d465^^^^^^01d466% +^^^^^^01d467^^^^^^01d468^^^^^^01d469^^^^^^01d46a^^^^^^01d46b^^^^^^01d46c% +^^^^^^01d46d^^^^^^01d46e^^^^^^01d46f^^^^^^01d470^^^^^^01d471^^^^^^01d472% +^^^^^^01d473^^^^^^01d474^^^^^^01d475^^^^^^01d476^^^^^^01d477^^^^^^01d478% +^^^^^^01d479^^^^^^01d47a^^^^^^01d47b^^^^^^01d47c^^^^^^01d47d^^^^^^01d47e% +^^^^^^01d47f^^^^^^01d480^^^^^^01d481^^^^^^01d482^^^^^^01d483^^^^^^01d484% +^^^^^^01d485^^^^^^01d486^^^^^^01d487^^^^^^01d488^^^^^^01d489^^^^^^01d48a% +^^^^^^01d48b^^^^^^01d48c^^^^^^01d48d^^^^^^01d48e^^^^^^01d48f^^^^^^01d490% +^^^^^^01d491^^^^^^01d492^^^^^^01d493^^^^^^01d494^^^^^^01d495^^^^^^01d496% +^^^^^^01d497^^^^^^01d498^^^^^^01d499^^^^^^01d49a^^^^^^01d49b^^^^^^01d49c% +^^^^^^01d49e^^^^^^01d49f^^^^^^01d4a2^^^^^^01d4a5^^^^^^01d4a6^^^^^^01d4a9% +^^^^^^01d4aa^^^^^^01d4ab^^^^^^01d4ac^^^^^^01d4ae^^^^^^01d4af^^^^^^01d4b0% +^^^^^^01d4b1^^^^^^01d4b2^^^^^^01d4b3^^^^^^01d4b4^^^^^^01d4b5^^^^^^01d4b6% +^^^^^^01d4b7^^^^^^01d4b8^^^^^^01d4b9^^^^^^01d4bb^^^^^^01d4bd^^^^^^01d4be% +^^^^^^01d4bf^^^^^^01d4c0^^^^^^01d4c1^^^^^^01d4c2^^^^^^01d4c3^^^^^^01d4c5% +^^^^^^01d4c6^^^^^^01d4c7^^^^^^01d4c8^^^^^^01d4c9^^^^^^01d4ca^^^^^^01d4cb% +^^^^^^01d4cc^^^^^^01d4cd^^^^^^01d4ce^^^^^^01d4cf^^^^^^01d4d0^^^^^^01d4d1% +^^^^^^01d4d2^^^^^^01d4d3^^^^^^01d4d4^^^^^^01d4d5^^^^^^01d4d6^^^^^^01d4d7% +^^^^^^01d4d8^^^^^^01d4d9^^^^^^01d4da^^^^^^01d4db^^^^^^01d4dc^^^^^^01d4dd% +^^^^^^01d4de^^^^^^01d4df^^^^^^01d4e0^^^^^^01d4e1^^^^^^01d4e2^^^^^^01d4e3% +^^^^^^01d4e4^^^^^^01d4e5^^^^^^01d4e6^^^^^^01d4e7^^^^^^01d4e8^^^^^^01d4e9% +^^^^^^01d4ea^^^^^^01d4eb^^^^^^01d4ec^^^^^^01d4ed^^^^^^01d4ee^^^^^^01d4ef% +^^^^^^01d4f0^^^^^^01d4f1^^^^^^01d4f2^^^^^^01d4f3^^^^^^01d4f4^^^^^^01d4f5% +^^^^^^01d4f6^^^^^^01d4f7^^^^^^01d4f8^^^^^^01d4f9^^^^^^01d4fa^^^^^^01d4fb% +^^^^^^01d4fc^^^^^^01d4fd^^^^^^01d4fe^^^^^^01d4ff^^^^^^01d500^^^^^^01d501% +^^^^^^01d502^^^^^^01d503^^^^^^01d504^^^^^^01d505^^^^^^01d507^^^^^^01d508% +^^^^^^01d509^^^^^^01d50a^^^^^^01d50d^^^^^^01d50e^^^^^^01d50f^^^^^^01d510% +^^^^^^01d511^^^^^^01d512^^^^^^01d513^^^^^^01d514^^^^^^01d516^^^^^^01d517% +^^^^^^01d518^^^^^^01d519^^^^^^01d51a^^^^^^01d51b^^^^^^01d51c^^^^^^01d51e% +^^^^^^01d51f^^^^^^01d520^^^^^^01d521^^^^^^01d522^^^^^^01d523^^^^^^01d524% +^^^^^^01d525^^^^^^01d526^^^^^^01d527^^^^^^01d528^^^^^^01d529^^^^^^01d52a% +^^^^^^01d52b^^^^^^01d52c^^^^^^01d52d^^^^^^01d52e^^^^^^01d52f^^^^^^01d530% +^^^^^^01d531^^^^^^01d532^^^^^^01d533^^^^^^01d534^^^^^^01d535^^^^^^01d536% +^^^^^^01d537^^^^^^01d538^^^^^^01d539^^^^^^01d53b^^^^^^01d53c^^^^^^01d53d% +^^^^^^01d53e^^^^^^01d540^^^^^^01d541^^^^^^01d542^^^^^^01d543^^^^^^01d544% +^^^^^^01d546^^^^^^01d54a^^^^^^01d54b^^^^^^01d54c^^^^^^01d54d^^^^^^01d54e% +^^^^^^01d54f^^^^^^01d550^^^^^^01d552^^^^^^01d553^^^^^^01d554^^^^^^01d555% +^^^^^^01d556^^^^^^01d557^^^^^^01d558^^^^^^01d559^^^^^^01d55a^^^^^^01d55b% +^^^^^^01d55c^^^^^^01d55d^^^^^^01d55e^^^^^^01d55f^^^^^^01d560^^^^^^01d561% +^^^^^^01d562^^^^^^01d563^^^^^^01d564^^^^^^01d565^^^^^^01d566^^^^^^01d567% +^^^^^^01d568^^^^^^01d569^^^^^^01d56a^^^^^^01d56b^^^^^^01d56c^^^^^^01d56d% +^^^^^^01d56e^^^^^^01d56f^^^^^^01d570^^^^^^01d571^^^^^^01d572^^^^^^01d573% +^^^^^^01d574^^^^^^01d575^^^^^^01d576^^^^^^01d577^^^^^^01d578^^^^^^01d579% +^^^^^^01d57a^^^^^^01d57b^^^^^^01d57c^^^^^^01d57d^^^^^^01d57e^^^^^^01d57f% +^^^^^^01d580^^^^^^01d581^^^^^^01d582^^^^^^01d583^^^^^^01d584^^^^^^01d585% +^^^^^^01d586^^^^^^01d587^^^^^^01d588^^^^^^01d589^^^^^^01d58a^^^^^^01d58b% +^^^^^^01d58c^^^^^^01d58d^^^^^^01d58e^^^^^^01d58f^^^^^^01d590^^^^^^01d591% +^^^^^^01d592^^^^^^01d593^^^^^^01d594^^^^^^01d595^^^^^^01d596^^^^^^01d597% +^^^^^^01d598^^^^^^01d599^^^^^^01d59a^^^^^^01d59b^^^^^^01d59c^^^^^^01d59d% +^^^^^^01d59e^^^^^^01d59f^^^^^^01d5a0^^^^^^01d5a1^^^^^^01d5a2^^^^^^01d5a3% +^^^^^^01d5a4^^^^^^01d5a5^^^^^^01d5a6^^^^^^01d5a7^^^^^^01d5a8^^^^^^01d5a9% +^^^^^^01d5aa^^^^^^01d5ab^^^^^^01d5ac^^^^^^01d5ad^^^^^^01d5ae^^^^^^01d5af% +^^^^^^01d5b0^^^^^^01d5b1^^^^^^01d5b2^^^^^^01d5b3^^^^^^01d5b4^^^^^^01d5b5% +^^^^^^01d5b6^^^^^^01d5b7^^^^^^01d5b8^^^^^^01d5b9^^^^^^01d5ba^^^^^^01d5bb% +^^^^^^01d5bc^^^^^^01d5bd^^^^^^01d5be^^^^^^01d5bf^^^^^^01d5c0^^^^^^01d5c1% +^^^^^^01d5c2^^^^^^01d5c3^^^^^^01d5c4^^^^^^01d5c5^^^^^^01d5c6^^^^^^01d5c7% +^^^^^^01d5c8^^^^^^01d5c9^^^^^^01d5ca^^^^^^01d5cb^^^^^^01d5cc^^^^^^01d5cd% +^^^^^^01d5ce^^^^^^01d5cf^^^^^^01d5d0^^^^^^01d5d1^^^^^^01d5d2^^^^^^01d5d3% +^^^^^^01d5d4^^^^^^01d5d5^^^^^^01d5d6^^^^^^01d5d7^^^^^^01d5d8^^^^^^01d5d9% +^^^^^^01d5da^^^^^^01d5db^^^^^^01d5dc^^^^^^01d5dd^^^^^^01d5de^^^^^^01d5df% +^^^^^^01d5e0^^^^^^01d5e1^^^^^^01d5e2^^^^^^01d5e3^^^^^^01d5e4^^^^^^01d5e5% +^^^^^^01d5e6^^^^^^01d5e7^^^^^^01d5e8^^^^^^01d5e9^^^^^^01d5ea^^^^^^01d5eb% +^^^^^^01d5ec^^^^^^01d5ed^^^^^^01d5ee^^^^^^01d5ef^^^^^^01d5f0^^^^^^01d5f1% +^^^^^^01d5f2^^^^^^01d5f3^^^^^^01d5f4^^^^^^01d5f5^^^^^^01d5f6^^^^^^01d5f7% +^^^^^^01d5f8^^^^^^01d5f9^^^^^^01d5fa^^^^^^01d5fb^^^^^^01d5fc^^^^^^01d5fd% +^^^^^^01d5fe^^^^^^01d5ff^^^^^^01d600^^^^^^01d601^^^^^^01d602^^^^^^01d603% +^^^^^^01d604^^^^^^01d605^^^^^^01d606^^^^^^01d607^^^^^^01d608^^^^^^01d609% +^^^^^^01d60a^^^^^^01d60b^^^^^^01d60c^^^^^^01d60d^^^^^^01d60e^^^^^^01d60f% +^^^^^^01d610^^^^^^01d611^^^^^^01d612^^^^^^01d613^^^^^^01d614^^^^^^01d615% +^^^^^^01d616^^^^^^01d617^^^^^^01d618^^^^^^01d619^^^^^^01d61a^^^^^^01d61b% +^^^^^^01d61c^^^^^^01d61d^^^^^^01d61e^^^^^^01d61f^^^^^^01d620^^^^^^01d621% +^^^^^^01d622^^^^^^01d623^^^^^^01d624^^^^^^01d625^^^^^^01d626^^^^^^01d627% +^^^^^^01d628^^^^^^01d629^^^^^^01d62a^^^^^^01d62b^^^^^^01d62c^^^^^^01d62d% +^^^^^^01d62e^^^^^^01d62f^^^^^^01d630^^^^^^01d631^^^^^^01d632^^^^^^01d633% +^^^^^^01d634^^^^^^01d635^^^^^^01d636^^^^^^01d637^^^^^^01d638^^^^^^01d639% +^^^^^^01d63a^^^^^^01d63b^^^^^^01d63c^^^^^^01d63d^^^^^^01d63e^^^^^^01d63f% +^^^^^^01d640^^^^^^01d641^^^^^^01d642^^^^^^01d643^^^^^^01d644^^^^^^01d645% +^^^^^^01d646^^^^^^01d647^^^^^^01d648^^^^^^01d649^^^^^^01d64a^^^^^^01d64b% +^^^^^^01d64c^^^^^^01d64d^^^^^^01d64e^^^^^^01d64f^^^^^^01d650^^^^^^01d651% +^^^^^^01d652^^^^^^01d653^^^^^^01d654^^^^^^01d655^^^^^^01d656^^^^^^01d657% +^^^^^^01d658^^^^^^01d659^^^^^^01d65a^^^^^^01d65b^^^^^^01d65c^^^^^^01d65d% +^^^^^^01d65e^^^^^^01d65f^^^^^^01d660^^^^^^01d661^^^^^^01d662^^^^^^01d663% +^^^^^^01d664^^^^^^01d665^^^^^^01d666^^^^^^01d667^^^^^^01d668^^^^^^01d669% +^^^^^^01d66a^^^^^^01d66b^^^^^^01d66c^^^^^^01d66d^^^^^^01d66e^^^^^^01d66f% +^^^^^^01d670^^^^^^01d671^^^^^^01d672^^^^^^01d673^^^^^^01d674^^^^^^01d675% +^^^^^^01d676^^^^^^01d677^^^^^^01d678^^^^^^01d679^^^^^^01d67a^^^^^^01d67b% +^^^^^^01d67c^^^^^^01d67d^^^^^^01d67e^^^^^^01d67f^^^^^^01d680^^^^^^01d681% +^^^^^^01d682^^^^^^01d683^^^^^^01d684^^^^^^01d685^^^^^^01d686^^^^^^01d687% +^^^^^^01d688^^^^^^01d689^^^^^^01d68a^^^^^^01d68b^^^^^^01d68c^^^^^^01d68d% +^^^^^^01d68e^^^^^^01d68f^^^^^^01d690^^^^^^01d691^^^^^^01d692^^^^^^01d693% +^^^^^^01d694^^^^^^01d695^^^^^^01d696^^^^^^01d697^^^^^^01d698^^^^^^01d699% +^^^^^^01d69a^^^^^^01d69b^^^^^^01d69c^^^^^^01d69d^^^^^^01d69e^^^^^^01d69f% +^^^^^^01d6a0^^^^^^01d6a1^^^^^^01d6a2^^^^^^01d6a3^^^^^^01d6a4^^^^^^01d6a5% +^^^^^^01d6a8^^^^^^01d6a9^^^^^^01d6aa^^^^^^01d6ab^^^^^^01d6ac^^^^^^01d6ad% +^^^^^^01d6ae^^^^^^01d6af^^^^^^01d6b0^^^^^^01d6b1^^^^^^01d6b2^^^^^^01d6b3% +^^^^^^01d6b4^^^^^^01d6b5^^^^^^01d6b6^^^^^^01d6b7^^^^^^01d6b8^^^^^^01d6b9% +^^^^^^01d6ba^^^^^^01d6bb^^^^^^01d6bc^^^^^^01d6bd^^^^^^01d6be^^^^^^01d6bf% +^^^^^^01d6c0^^^^^^01d6c1^^^^^^01d6c2^^^^^^01d6c3^^^^^^01d6c4^^^^^^01d6c5% +^^^^^^01d6c6^^^^^^01d6c7^^^^^^01d6c8^^^^^^01d6c9^^^^^^01d6ca^^^^^^01d6cb% +^^^^^^01d6cc^^^^^^01d6cd^^^^^^01d6ce^^^^^^01d6cf^^^^^^01d6d0^^^^^^01d6d1% +^^^^^^01d6d2^^^^^^01d6d3^^^^^^01d6d4^^^^^^01d6d5^^^^^^01d6d6^^^^^^01d6d7% +^^^^^^01d6d8^^^^^^01d6d9^^^^^^01d6da^^^^^^01d6db^^^^^^01d6dc^^^^^^01d6dd% +^^^^^^01d6de^^^^^^01d6df^^^^^^01d6e0^^^^^^01d6e1^^^^^^01d6e2^^^^^^01d6e3% +^^^^^^01d6e4^^^^^^01d6e5^^^^^^01d6e6^^^^^^01d6e7^^^^^^01d6e8^^^^^^01d6e9% +^^^^^^01d6ea^^^^^^01d6eb^^^^^^01d6ec^^^^^^01d6ed^^^^^^01d6ee^^^^^^01d6ef% +^^^^^^01d6f0^^^^^^01d6f1^^^^^^01d6f2^^^^^^01d6f3^^^^^^01d6f4^^^^^^01d6f5% +^^^^^^01d6f6^^^^^^01d6f7^^^^^^01d6f8^^^^^^01d6f9^^^^^^01d6fa^^^^^^01d6fb% +^^^^^^01d6fc^^^^^^01d6fd^^^^^^01d6fe^^^^^^01d6ff^^^^^^01d700^^^^^^01d701% +^^^^^^01d702^^^^^^01d703^^^^^^01d704^^^^^^01d705^^^^^^01d706^^^^^^01d707% +^^^^^^01d708^^^^^^01d709^^^^^^01d70a^^^^^^01d70b^^^^^^01d70c^^^^^^01d70d% +^^^^^^01d70e^^^^^^01d70f^^^^^^01d710^^^^^^01d711^^^^^^01d712^^^^^^01d713% +^^^^^^01d714^^^^^^01d715^^^^^^01d716^^^^^^01d717^^^^^^01d718^^^^^^01d719% +^^^^^^01d71a^^^^^^01d71b^^^^^^01d71c^^^^^^01d71d^^^^^^01d71e^^^^^^01d71f% +^^^^^^01d720^^^^^^01d721^^^^^^01d722^^^^^^01d723^^^^^^01d724^^^^^^01d725% +^^^^^^01d726^^^^^^01d727^^^^^^01d728^^^^^^01d729^^^^^^01d72a^^^^^^01d72b% +^^^^^^01d72c^^^^^^01d72d^^^^^^01d72e^^^^^^01d72f^^^^^^01d730^^^^^^01d731% +^^^^^^01d732^^^^^^01d733^^^^^^01d734^^^^^^01d735^^^^^^01d736^^^^^^01d737% +^^^^^^01d738^^^^^^01d739^^^^^^01d73a^^^^^^01d73b^^^^^^01d73c^^^^^^01d73d% +^^^^^^01d73e^^^^^^01d73f^^^^^^01d740^^^^^^01d741^^^^^^01d742^^^^^^01d743% +^^^^^^01d744^^^^^^01d745^^^^^^01d746^^^^^^01d747^^^^^^01d748^^^^^^01d749% +^^^^^^01d74a^^^^^^01d74b^^^^^^01d74c^^^^^^01d74d^^^^^^01d74e^^^^^^01d74f% +^^^^^^01d750^^^^^^01d751^^^^^^01d752^^^^^^01d753^^^^^^01d754^^^^^^01d755% +^^^^^^01d756^^^^^^01d757^^^^^^01d758^^^^^^01d759^^^^^^01d75a^^^^^^01d75b% +^^^^^^01d75c^^^^^^01d75d^^^^^^01d75e^^^^^^01d75f^^^^^^01d760^^^^^^01d761% +^^^^^^01d762^^^^^^01d763^^^^^^01d764^^^^^^01d765^^^^^^01d766^^^^^^01d767% +^^^^^^01d768^^^^^^01d769^^^^^^01d76a^^^^^^01d76b^^^^^^01d76c^^^^^^01d76d% +^^^^^^01d76e^^^^^^01d76f^^^^^^01d770^^^^^^01d771^^^^^^01d772^^^^^^01d773% +^^^^^^01d774^^^^^^01d775^^^^^^01d776^^^^^^01d777^^^^^^01d778^^^^^^01d779% +^^^^^^01d77a^^^^^^01d77b^^^^^^01d77c^^^^^^01d77d^^^^^^01d77e^^^^^^01d77f% +^^^^^^01d780^^^^^^01d781^^^^^^01d782^^^^^^01d783^^^^^^01d784^^^^^^01d785% +^^^^^^01d786^^^^^^01d787^^^^^^01d788^^^^^^01d789^^^^^^01d78a^^^^^^01d78b% +^^^^^^01d78c^^^^^^01d78d^^^^^^01d78e^^^^^^01d78f^^^^^^01d790^^^^^^01d791% +^^^^^^01d792^^^^^^01d793^^^^^^01d794^^^^^^01d795^^^^^^01d796^^^^^^01d797% +^^^^^^01d798^^^^^^01d799^^^^^^01d79a^^^^^^01d79b^^^^^^01d79c^^^^^^01d79d% +^^^^^^01d79e^^^^^^01d79f^^^^^^01d7a0^^^^^^01d7a1^^^^^^01d7a2^^^^^^01d7a3% +^^^^^^01d7a4^^^^^^01d7a5^^^^^^01d7a6^^^^^^01d7a7^^^^^^01d7a8^^^^^^01d7a9% +^^^^^^01d7aa^^^^^^01d7ab^^^^^^01d7ac^^^^^^01d7ad^^^^^^01d7ae^^^^^^01d7af% +^^^^^^01d7b0^^^^^^01d7b1^^^^^^01d7b2^^^^^^01d7b3^^^^^^01d7b4^^^^^^01d7b5% +^^^^^^01d7b6^^^^^^01d7b7^^^^^^01d7b8^^^^^^01d7b9^^^^^^01d7ba^^^^^^01d7bb% +^^^^^^01d7bc^^^^^^01d7bd^^^^^^01d7be^^^^^^01d7bf^^^^^^01d7c0^^^^^^01d7c1% +^^^^^^01d7c2^^^^^^01d7c3^^^^^^01d7c4^^^^^^01d7c5^^^^^^01d7c6^^^^^^01d7c7% +^^^^^^01d7c8^^^^^^01d7c9^^^^^^01d7ca^^^^^^01d7cb^^^^^^01d7ce^^^^^^01d7cf% +^^^^^^01d7d0^^^^^^01d7d1^^^^^^01d7d2^^^^^^01d7d3^^^^^^01d7d4^^^^^^01d7d5% +^^^^^^01d7d6^^^^^^01d7d7^^^^^^01d7d8^^^^^^01d7d9^^^^^^01d7da^^^^^^01d7db% +^^^^^^01d7dc^^^^^^01d7dd^^^^^^01d7de^^^^^^01d7df^^^^^^01d7e0^^^^^^01d7e1% +^^^^^^01d7e2^^^^^^01d7e3^^^^^^01d7e4^^^^^^01d7e5^^^^^^01d7e6^^^^^^01d7e7% +^^^^^^01d7e8^^^^^^01d7e9^^^^^^01d7ea^^^^^^01d7eb^^^^^^01d7ec^^^^^^01d7ed% +^^^^^^01d7ee^^^^^^01d7ef^^^^^^01d7f0^^^^^^01d7f1^^^^^^01d7f2^^^^^^01d7f3% +^^^^^^01d7f4^^^^^^01d7f5^^^^^^01d7f6^^^^^^01d7f7^^^^^^01d7f8^^^^^^01d7f9% +^^^^^^01d7fa^^^^^^01d7fb^^^^^^01d7fc^^^^^^01d7fd^^^^^^01d7fe^^^^^^01d7ff% +^^^^^^01f004^^^^^^01f0cf^^^^^^01f170^^^^^^01f171^^^^^^01f17e^^^^^^01f17f% +^^^^^^01f18e^^^^^^01f191^^^^^^01f192^^^^^^01f193^^^^^^01f194^^^^^^01f195% +^^^^^^01f196^^^^^^01f197^^^^^^01f198^^^^^^01f199^^^^^^01f19a^^^^^^01f201% +^^^^^^01f202^^^^^^01f21a^^^^^^01f22f^^^^^^01f232^^^^^^01f233^^^^^^01f234% +^^^^^^01f235^^^^^^01f236^^^^^^01f237^^^^^^01f238^^^^^^01f239^^^^^^01f23a% +^^^^^^01f250^^^^^^01f251^^^^^^01f300^^^^^^01f301^^^^^^01f302^^^^^^01f303% +^^^^^^01f304^^^^^^01f305^^^^^^01f306^^^^^^01f307^^^^^^01f308^^^^^^01f309% +^^^^^^01f30a^^^^^^01f30b^^^^^^01f30c^^^^^^01f30d^^^^^^01f30e^^^^^^01f30f% +^^^^^^01f310^^^^^^01f311^^^^^^01f312^^^^^^01f313^^^^^^01f314^^^^^^01f315% +^^^^^^01f316^^^^^^01f317^^^^^^01f318^^^^^^01f319^^^^^^01f31a^^^^^^01f31b% +^^^^^^01f31c^^^^^^01f31d^^^^^^01f31e^^^^^^01f31f^^^^^^01f320^^^^^^01f330% +^^^^^^01f331^^^^^^01f332^^^^^^01f333^^^^^^01f334^^^^^^01f335^^^^^^01f337% +^^^^^^01f338^^^^^^01f339^^^^^^01f33a^^^^^^01f33b^^^^^^01f33c^^^^^^01f33d% +^^^^^^01f33e^^^^^^01f33f^^^^^^01f340^^^^^^01f341^^^^^^01f342^^^^^^01f343% +^^^^^^01f344^^^^^^01f345^^^^^^01f346^^^^^^01f347^^^^^^01f348^^^^^^01f349% +^^^^^^01f34a^^^^^^01f34b^^^^^^01f34c^^^^^^01f34d^^^^^^01f34e^^^^^^01f34f% +^^^^^^01f350^^^^^^01f351^^^^^^01f352^^^^^^01f353^^^^^^01f354^^^^^^01f355% +^^^^^^01f356^^^^^^01f357^^^^^^01f358^^^^^^01f359^^^^^^01f35a^^^^^^01f35b% +^^^^^^01f35c^^^^^^01f35d^^^^^^01f35e^^^^^^01f35f^^^^^^01f360^^^^^^01f361% +^^^^^^01f362^^^^^^01f363^^^^^^01f364^^^^^^01f365^^^^^^01f366^^^^^^01f367% +^^^^^^01f368^^^^^^01f369^^^^^^01f36a^^^^^^01f36b^^^^^^01f36c^^^^^^01f36d% +^^^^^^01f36e^^^^^^01f36f^^^^^^01f370^^^^^^01f371^^^^^^01f372^^^^^^01f373% +^^^^^^01f374^^^^^^01f375^^^^^^01f376^^^^^^01f377^^^^^^01f378^^^^^^01f379% +^^^^^^01f37a^^^^^^01f37b^^^^^^01f37c^^^^^^01f380^^^^^^01f381^^^^^^01f382% +^^^^^^01f383^^^^^^01f384^^^^^^01f385^^^^^^01f386^^^^^^01f387^^^^^^01f388% +^^^^^^01f389^^^^^^01f38a^^^^^^01f38b^^^^^^01f38c^^^^^^01f38d^^^^^^01f38e% +^^^^^^01f38f^^^^^^01f390^^^^^^01f391^^^^^^01f392^^^^^^01f393^^^^^^01f3a0% +^^^^^^01f3a1^^^^^^01f3a2^^^^^^01f3a3^^^^^^01f3a4^^^^^^01f3a5^^^^^^01f3a6% +^^^^^^01f3a7^^^^^^01f3a8^^^^^^01f3a9^^^^^^01f3aa^^^^^^01f3ab^^^^^^01f3ac% +^^^^^^01f3ad^^^^^^01f3ae^^^^^^01f3af^^^^^^01f3b0^^^^^^01f3b1^^^^^^01f3b2% +^^^^^^01f3b3^^^^^^01f3b4^^^^^^01f3b5^^^^^^01f3b6^^^^^^01f3b7^^^^^^01f3b8% +^^^^^^01f3b9^^^^^^01f3ba^^^^^^01f3bb^^^^^^01f3bc^^^^^^01f3bd^^^^^^01f3be% +^^^^^^01f3bf^^^^^^01f3c0^^^^^^01f3c1^^^^^^01f3c2^^^^^^01f3c3^^^^^^01f3c4% +^^^^^^01f3c6^^^^^^01f3c7^^^^^^01f3c8^^^^^^01f3c9^^^^^^01f3ca^^^^^^01f3e0% +^^^^^^01f3e1^^^^^^01f3e2^^^^^^01f3e3^^^^^^01f3e4^^^^^^01f3e5^^^^^^01f3e6% +^^^^^^01f3e7^^^^^^01f3e8^^^^^^01f3e9^^^^^^01f3ea^^^^^^01f3eb^^^^^^01f3ec% +^^^^^^01f3ed^^^^^^01f3ee^^^^^^01f3ef^^^^^^01f3f0^^^^^^01f3fb^^^^^^01f3fc% +^^^^^^01f3fd^^^^^^01f3fe^^^^^^01f3ff^^^^^^01f400^^^^^^01f401^^^^^^01f402% +^^^^^^01f403^^^^^^01f404^^^^^^01f405^^^^^^01f406^^^^^^01f407^^^^^^01f408% +^^^^^^01f409^^^^^^01f40a^^^^^^01f40b^^^^^^01f40c^^^^^^01f40d^^^^^^01f40e% +^^^^^^01f40f^^^^^^01f410^^^^^^01f411^^^^^^01f412^^^^^^01f413^^^^^^01f414% +^^^^^^01f415^^^^^^01f416^^^^^^01f417^^^^^^01f418^^^^^^01f419^^^^^^01f41a% +^^^^^^01f41b^^^^^^01f41c^^^^^^01f41d^^^^^^01f41e^^^^^^01f41f^^^^^^01f420% +^^^^^^01f421^^^^^^01f422^^^^^^01f423^^^^^^01f424^^^^^^01f425^^^^^^01f426% +^^^^^^01f427^^^^^^01f428^^^^^^01f429^^^^^^01f42a^^^^^^01f42b^^^^^^01f42c% +^^^^^^01f42d^^^^^^01f42e^^^^^^01f42f^^^^^^01f430^^^^^^01f431^^^^^^01f432% +^^^^^^01f433^^^^^^01f434^^^^^^01f435^^^^^^01f436^^^^^^01f437^^^^^^01f438% +^^^^^^01f439^^^^^^01f43a^^^^^^01f43b^^^^^^01f43c^^^^^^01f43d^^^^^^01f43e% +^^^^^^01f440^^^^^^01f442^^^^^^01f443^^^^^^01f444^^^^^^01f445^^^^^^01f446% +^^^^^^01f447^^^^^^01f448^^^^^^01f449^^^^^^01f44a^^^^^^01f44b^^^^^^01f44c% +^^^^^^01f44d^^^^^^01f44e^^^^^^01f44f^^^^^^01f450^^^^^^01f451^^^^^^01f452% +^^^^^^01f453^^^^^^01f454^^^^^^01f455^^^^^^01f456^^^^^^01f457^^^^^^01f458% +^^^^^^01f459^^^^^^01f45a^^^^^^01f45b^^^^^^01f45c^^^^^^01f45d^^^^^^01f45e% +^^^^^^01f45f^^^^^^01f460^^^^^^01f461^^^^^^01f462^^^^^^01f463^^^^^^01f464% +^^^^^^01f465^^^^^^01f466^^^^^^01f467^^^^^^01f468^^^^^^01f469^^^^^^01f46a% +^^^^^^01f46b^^^^^^01f46c^^^^^^01f46d^^^^^^01f46e^^^^^^01f46f^^^^^^01f470% +^^^^^^01f471^^^^^^01f472^^^^^^01f473^^^^^^01f474^^^^^^01f475^^^^^^01f476% +^^^^^^01f477^^^^^^01f478^^^^^^01f479^^^^^^01f47a^^^^^^01f47b^^^^^^01f47c% +^^^^^^01f47d^^^^^^01f47e^^^^^^01f47f^^^^^^01f480^^^^^^01f481^^^^^^01f482% +^^^^^^01f483^^^^^^01f484^^^^^^01f485^^^^^^01f486^^^^^^01f487^^^^^^01f488% +^^^^^^01f489^^^^^^01f48a^^^^^^01f48b^^^^^^01f48c^^^^^^01f48d^^^^^^01f48e% +^^^^^^01f48f^^^^^^01f490^^^^^^01f491^^^^^^01f492^^^^^^01f493^^^^^^01f494% +^^^^^^01f495^^^^^^01f496^^^^^^01f497^^^^^^01f498^^^^^^01f499^^^^^^01f49a% +^^^^^^01f49b^^^^^^01f49c^^^^^^01f49d^^^^^^01f49e^^^^^^01f49f^^^^^^01f4a0% +^^^^^^01f4a1^^^^^^01f4a2^^^^^^01f4a3^^^^^^01f4a4^^^^^^01f4a5^^^^^^01f4a6% +^^^^^^01f4a7^^^^^^01f4a8^^^^^^01f4a9^^^^^^01f4aa^^^^^^01f4ab^^^^^^01f4ac% +^^^^^^01f4ad^^^^^^01f4ae^^^^^^01f4af^^^^^^01f4b0^^^^^^01f4b1^^^^^^01f4b2% +^^^^^^01f4b3^^^^^^01f4b4^^^^^^01f4b5^^^^^^01f4b6^^^^^^01f4b7^^^^^^01f4b8% +^^^^^^01f4b9^^^^^^01f4ba^^^^^^01f4bb^^^^^^01f4bc^^^^^^01f4bd^^^^^^01f4be% +^^^^^^01f4bf^^^^^^01f4c0^^^^^^01f4c1^^^^^^01f4c2^^^^^^01f4c3^^^^^^01f4c4% +^^^^^^01f4c5^^^^^^01f4c6^^^^^^01f4c7^^^^^^01f4c8^^^^^^01f4c9^^^^^^01f4ca% +^^^^^^01f4cb^^^^^^01f4cc^^^^^^01f4cd^^^^^^01f4ce^^^^^^01f4cf^^^^^^01f4d0% +^^^^^^01f4d1^^^^^^01f4d2^^^^^^01f4d3^^^^^^01f4d4^^^^^^01f4d5^^^^^^01f4d6% +^^^^^^01f4d7^^^^^^01f4d8^^^^^^01f4d9^^^^^^01f4da^^^^^^01f4db^^^^^^01f4dc% +^^^^^^01f4dd^^^^^^01f4de^^^^^^01f4df^^^^^^01f4e0^^^^^^01f4e1^^^^^^01f4e2% +^^^^^^01f4e3^^^^^^01f4e4^^^^^^01f4e5^^^^^^01f4e6^^^^^^01f4e7^^^^^^01f4e8% +^^^^^^01f4e9^^^^^^01f4ea^^^^^^01f4eb^^^^^^01f4ec^^^^^^01f4ed^^^^^^01f4ee% +^^^^^^01f4ef^^^^^^01f4f0^^^^^^01f4f1^^^^^^01f4f2^^^^^^01f4f3^^^^^^01f4f4% +^^^^^^01f4f5^^^^^^01f4f6^^^^^^01f4f7^^^^^^01f4f9^^^^^^01f4fa^^^^^^01f4fb% +^^^^^^01f4fc^^^^^^01f500^^^^^^01f501^^^^^^01f502^^^^^^01f503^^^^^^01f504% +^^^^^^01f505^^^^^^01f506^^^^^^01f507^^^^^^01f508^^^^^^01f509^^^^^^01f50a% +^^^^^^01f50b^^^^^^01f50c^^^^^^01f50d^^^^^^01f50e^^^^^^01f50f^^^^^^01f510% +^^^^^^01f511^^^^^^01f512^^^^^^01f513^^^^^^01f514^^^^^^01f515^^^^^^01f516% +^^^^^^01f517^^^^^^01f518^^^^^^01f519^^^^^^01f51a^^^^^^01f51b^^^^^^01f51c% +^^^^^^01f51d^^^^^^01f51e^^^^^^01f51f^^^^^^01f520^^^^^^01f521^^^^^^01f522% +^^^^^^01f523^^^^^^01f524^^^^^^01f525^^^^^^01f526^^^^^^01f527^^^^^^01f528% +^^^^^^01f529^^^^^^01f52a^^^^^^01f52b^^^^^^01f52c^^^^^^01f52d^^^^^^01f52e% +^^^^^^01f52f^^^^^^01f530^^^^^^01f531^^^^^^01f532^^^^^^01f533^^^^^^01f534% +^^^^^^01f535^^^^^^01f536^^^^^^01f537^^^^^^01f538^^^^^^01f539^^^^^^01f53a% +^^^^^^01f53b^^^^^^01f53c^^^^^^01f53d^^^^^^01f550^^^^^^01f551^^^^^^01f552% +^^^^^^01f553^^^^^^01f554^^^^^^01f555^^^^^^01f556^^^^^^01f557^^^^^^01f558% +^^^^^^01f559^^^^^^01f55a^^^^^^01f55b^^^^^^01f55c^^^^^^01f55d^^^^^^01f55e% +^^^^^^01f55f^^^^^^01f560^^^^^^01f561^^^^^^01f562^^^^^^01f563^^^^^^01f564% +^^^^^^01f565^^^^^^01f566^^^^^^01f567^^^^^^01f5fb^^^^^^01f5fc^^^^^^01f5fd% +^^^^^^01f5fe^^^^^^01f5ff^^^^^^01f600^^^^^^01f601^^^^^^01f602^^^^^^01f603% +^^^^^^01f604^^^^^^01f605^^^^^^01f606^^^^^^01f607^^^^^^01f608^^^^^^01f609% +^^^^^^01f60a^^^^^^01f60b^^^^^^01f60c^^^^^^01f60d^^^^^^01f60e^^^^^^01f60f% +^^^^^^01f610^^^^^^01f611^^^^^^01f612^^^^^^01f613^^^^^^01f614^^^^^^01f615% +^^^^^^01f616^^^^^^01f617^^^^^^01f618^^^^^^01f619^^^^^^01f61a^^^^^^01f61b% +^^^^^^01f61c^^^^^^01f61d^^^^^^01f61e^^^^^^01f61f^^^^^^01f620^^^^^^01f621% +^^^^^^01f622^^^^^^01f623^^^^^^01f624^^^^^^01f625^^^^^^01f626^^^^^^01f627% +^^^^^^01f628^^^^^^01f629^^^^^^01f62a^^^^^^01f62b^^^^^^01f62c^^^^^^01f62d% +^^^^^^01f62e^^^^^^01f62f^^^^^^01f630^^^^^^01f631^^^^^^01f632^^^^^^01f633% +^^^^^^01f634^^^^^^01f635^^^^^^01f636^^^^^^01f637^^^^^^01f638^^^^^^01f639% +^^^^^^01f63a^^^^^^01f63b^^^^^^01f63c^^^^^^01f63d^^^^^^01f63e^^^^^^01f63f% +^^^^^^01f640^^^^^^01f645^^^^^^01f646^^^^^^01f647^^^^^^01f648^^^^^^01f649% +^^^^^^01f64a^^^^^^01f64b^^^^^^01f64c^^^^^^01f64d^^^^^^01f64e^^^^^^01f64f% +^^^^^^01f680^^^^^^01f681^^^^^^01f682^^^^^^01f683^^^^^^01f684^^^^^^01f685% +^^^^^^01f686^^^^^^01f687^^^^^^01f688^^^^^^01f689^^^^^^01f68a^^^^^^01f68b% +^^^^^^01f68c^^^^^^01f68d^^^^^^01f68e^^^^^^01f68f^^^^^^01f690^^^^^^01f691% +^^^^^^01f692^^^^^^01f693^^^^^^01f694^^^^^^01f695^^^^^^01f696^^^^^^01f697% +^^^^^^01f698^^^^^^01f699^^^^^^01f69a^^^^^^01f69b^^^^^^01f69c^^^^^^01f69d% +^^^^^^01f69e^^^^^^01f69f^^^^^^01f6a0^^^^^^01f6a1^^^^^^01f6a2^^^^^^01f6a3% +^^^^^^01f6a4^^^^^^01f6a5^^^^^^01f6a6^^^^^^01f6a7^^^^^^01f6a8^^^^^^01f6a9% +^^^^^^01f6aa^^^^^^01f6ab^^^^^^01f6ac^^^^^^01f6ad^^^^^^01f6ae^^^^^^01f6af% +^^^^^^01f6b0^^^^^^01f6b1^^^^^^01f6b2^^^^^^01f6b3^^^^^^01f6b4^^^^^^01f6b5% +^^^^^^01f6b6^^^^^^01f6b7^^^^^^01f6b8^^^^^^01f6b9^^^^^^01f6ba^^^^^^01f6bb% +^^^^^^01f6bc^^^^^^01f6bd^^^^^^01f6be^^^^^^01f6bf^^^^^^01f6c0^^^^^^01f6c1% +^^^^^^01f6c2^^^^^^01f6c3^^^^^^01f6c4^^^^^^01f6c5% +^^00} +\fi +\lst@RestoreCatcodes + + + +\iftutex % LuaTeX + XeTeX +% +% +% special unicode characters +%\DeclareUnicodeCharacter{0391}{A} +\lstdefinestyle{jlcodeuccstyle}{% +%inputencoding=utf8, +extendedchars=true, +literate= +% +% mathematical operators (julia functions) +% +% comment out the next command if you dont use ' as the transposition +% operator! activate the command in line 384 in that case, too! +{'}{{\uccop{'}}}{1} +{×}{{\uccop{×}}}{1} {÷}{{\uccop{÷}}}{1} {∈}{{\uccop{∈}}}{1} {∉}{{\uccop{∉}}}{1} +{∋}{{\uccop{∋}}}{1} {∌}{{\uccop{∌}}}{1} {∘}{{\uccop{∘}}}{1} {√}{{\uccop{√}}}{1} +{∛}{{\uccop{∛}}}{1} {∩}{{\uccop{∩}}}{1} {∪}{{\uccop{∪}}}{1} {≈}{{\uccop{≈}}}{1} +{≉}{{\uccop{≉}}}{1} {≠}{{\uccop{≠}}}{1} {≡}{{\uccop{≡}}}{1} {≢}{{\uccop{≢}}}{1} +{≤}{{\uccop{≤}}}{1} {≥}{{\uccop{≥}}}{1} {⊆}{{\uccop{⊆}}}{1} {⊇}{{\uccop{⊇}}}{1} +{⊈}{{\uccop{⊈}}}{1} {⊉}{{\uccop{⊉}}}{1} {⊊}{{\uccop{⊊}}}{1} {⊋}{{\uccop{⊋}}}{1} +{⊻}{{\uccop{⊻}}}{1} {⋅}{{\uccop{⋅}}}{1} +} +% +% +\else % PDFTeX +% +% +% defining some symbols in such a way that they can be displayed correctly +% \rvdots, \rddots, \riddots +% (slightly modified versions of the commands of the mathdots package): + +\def\MDo@us#1{\@nameuse{#1style}}% + \def\MDo@uf#1{\@nameuse{#1font}0}% + \def\MDo@t{text}\def\MDo@s{script}\def\MDo@ss{scriptscript}% + \newdimen\MDo@unit \MDo@unit\p@ + +\def\MDo@changestyle#1{\relax\MDo@unit0.1\fontdimen6\MDo@uf{#1}% + \everymath\expandafter{\the\everymath\MDo@us{#1}}}% +\def\MDo@dot{$\m@th\ldotp$}% +\def\MDo@palette#1{\mathchoice{#1\MDo@t}{#1\MDo@t}{#1\MDo@s}{#1\MDo@ss}}% + + +\def\MDo@vdots#1{\vbox{\MDo@changestyle{#1}% + \baselineskip4\MDo@unit\lineskiplimit\z@ + \kern-\MDo@unit\hbox{\MDo@dot}\hbox{\MDo@dot}\hbox{\MDo@dot}}}% + +\def\MDo@ddots#1{{\MDo@changestyle{#1}% + \mkern1mu\raise7\MDo@unit\vbox{\kern-\MDo@unit\hbox{\MDo@dot}}% + \mkern2mu\raise4\MDo@unit\hbox{\MDo@dot}% + \mkern2mu\raise \MDo@unit\hbox{\MDo@dot}\mkern1mu}}% + +\def\MDo@iddots#1{{\MDo@changestyle{#1}% + \mkern1mu\raise \MDo@unit\hbox{\MDo@dot}% + \mkern2mu\raise4\MDo@unit\hbox{\MDo@dot}% + \mkern2mu\raise7\MDo@unit\vbox{\kern-\MDo@unit\hbox{\MDo@dot}}}}% + + +\DeclareRobustCommand\rvdots{\mathinner{\MDo@palette\MDo@vdots}}% +\DeclareRobustCommand\rddots{\mathinner{\MDo@palette\MDo@ddots}}% +\DeclareRobustCommand\riddots{\mathinner{\MDo@palette\MDo@iddots}}% + + + +% special unicode characters +%\DeclareUnicodeCharacter{0391}{A} +\lstdefinestyle{jlcodeuccstyle}{% +%inputencoding=utf8, +extendedchars=true, +literate= +% +% special characters that appear in latin languages +% +{á}{{\ucc{\'a}}}{1} {é}{{\ucc{\'e}}}{1} {í}{{\ucc{\'i}}}{1} {ó}{{\ucc{\'o}}}{1} +{ú}{{\ucc{\'u}}}{1} {Á}{{\ucc{\'A}}}{1} {É}{{\ucc{\'E}}}{1} {Í}{{\ucc{\'I}}}{1} +{Ó}{{\ucc{\'O}}}{1} {Ú}{{\ucc{\'U}}}{1} +{à}{{\ucc{\`a}}}{1} {è}{{\ucc{\`e}}}{1} {ì}{{\ucc{\`i}}}{1} {ò}{{\ucc{\`o}}}{1} +{ù}{{\ucc{\`u}}}{1} {À}{{\ucc{\`A}}}{1} {È}{{\ucc{\'E}}}{1} {Ì}{{\ucc{\`I}}}{1} +{Ò}{{\ucc{\`O}}}{1} {Ù}{{\ucc{\`U}}}{1} +{ä}{{\ucc{\"a}}}{1} {ë}{{\ucc{\"e}}}{1} {ï}{{\ucc{\"i}}}{1} {ö}{{\ucc{\"o}}}{1} +{ü}{{\ucc{\"u}}}{1} {Ä}{{\ucc{\"A}}}{1} {Ë}{{\ucc{\"E}}}{1} {Ï}{{\ucc{\"I}}}{1} +{Ö}{{\ucc{\"O}}}{1} {Ü}{{\ucc{\"U}}}{1} +{â}{{\ucc{\^a}}}{1} {ê}{{\ucc{\^e}}}{1} {î}{{\ucc{\^i}}}{1} {ô}{{\ucc{\^o}}}{1} +{û}{{\ucc{\^u}}}{1} {Â}{{\ucc{\^A}}}{1} {Ê}{{\ucc{\^E}}}{1} {Î}{{\ucc{\^I}}}{1} +{Ô}{{\ucc{\^O}}}{1} {Û}{{\ucc{\^U}}}{1} +{œ}{{\ucc{\oe}}}{1} {Œ}{{\ucc{\OE}}}{1} {æ}{{\ucc{\ae}}}{1} {Æ}{{\ucc{\AE}}}{1} +{ß}{\ucc{{\ss}}}{1} +{ű}{{\ucc{\H{u}}}}{1} {Ű}{{\ucc{\H{U}}}}{1} {ő}{{\ucc{\H{o}}}}{1} +{Ő}{{\ucc{\H{O}}}}{1} {ç}{{\ucc{\c c}}}{1} {Ç}{{\ucc{\c C}}}{1} +{ø}{{\ucc{\o}}}{1} {å}{{\ucc{\r a}}}{1} {Å}{{\ucc{\r A}}}{1} +{€}{{\ucc{\euro}}}{1} {£}{{\ucc{\pounds}}}{1} {«}{{\ucc{\guillemotleft}}}{1} +{»}{{\ucc{\guillemotright}}}{1} {ñ}{{\ucc{\~n}}}{1} {Ñ}{{\ucc{\~N}}}{1} +{¿}{{\ucc{?`}}}{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} +% +% micro sign, latin small letter open e, script small e +% +{µ}{{\ucc{$\mu$}}}{1} {ɛ}{{\ucc{$\varepsilon$}}}{1} +{ℯ}{{\ucclit{$e$}}}{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} +% +% latin capital letters with dot above +% +{Ȧ}{{\ucc{\.A}}}{1} {Ḃ}{{\ucc{\.B}}}{1} {Ċ}{{\ucc{\.C}}}{1} {Ḋ}{{\ucc{\.D}}}{1} +{Ė}{{\ucc{\.E}}}{1} {Ḟ}{{\ucc{\.F}}}{1} {Ġ}{{\ucc{\.G}}}{1} {Ḣ}{{\ucc{\.H}}}{1} +{İ}{{\ucc{\.I}}}{1} {J̇}{{\ucc{\.J}}}{1} {K̇}{{\ucc{\.K}}}{1} {L̇}{{\ucc{\.L}}}{1} +{Ṁ}{{\ucc{\.M}}}{1} {Ṅ}{{\ucc{\.N}}}{1} {Ȯ}{{\ucc{\.O}}}{1} {Ṗ}{{\ucc{\.P}}}{1} +{Q̇}{{\ucc{\.Q}}}{1} {Ṙ}{{\ucc{\.R}}}{1} {Ṡ}{{\ucc{\.S}}}{1} {Ṫ}{{\ucc{\.T}}}{1} +{U̇}{{\ucc{\.U}}}{1} {V̇}{{\ucc{\.V}}}{1} {Ẇ}{{\ucc{\.W}}}{1} {Ẋ}{{\ucc{\.X}}}{1} +{Ẏ}{{\ucc{\.Y}}}{1} {Ż}{{\ucc{\.Z}}}{1} +% +% latin small letters with dot above +% +{ȧ}{{\ucc{\.a}}}{1} {ḃ}{{\ucc{\.b}}}{1} {ċ}{{\ucc{\.c}}}{1} {ḋ}{{\ucc{\.d}}}{1} +{ė}{{\ucc{\.e}}}{1} {ḟ}{{\ucc{\.f}}}{1} {ġ}{{\ucc{\.g}}}{1} {ḣ}{{\ucc{\.h}}}{1} +{i̇}{{\ucc{\.i}}}{1} {j̇}{{\ucc{\.j}}}{1} {k̇}{{\ucc{\.k}}}{1} {l̇}{{\ucc{\.l}}}{1} +{ṁ}{{\ucc{\.m}}}{1} {ṅ}{{\ucc{\.n}}}{1} {ȯ}{{\ucc{\.o}}}{1} {ṗ}{{\ucc{\.p}}}{1} +{q̇}{{\ucc{\.q}}}{1} {ṙ}{{\ucc{\.r}}}{1} {ṡ}{{\ucc{\.s}}}{1} {ṫ}{{\ucc{\.t}}}{1} +{u̇}{{\ucc{\.u}}}{1} {v̇}{{\ucc{\.v}}}{1} {ẇ}{{\ucc{\.w}}}{1} {ẋ}{{\ucc{\.x}}}{1} +{ẏ}{{\ucc{\.y}}}{1} {ż}{{\ucc{\.z}}}{1} +% +% greek capital letters with dot above +% +{Α̇}{{\ucc{${\scriptstyle \dot{A}}$}}}{1} +{Β̇}{{\ucc{${\scriptstyle \dot{B}}$}}}{1} +{Γ̇}{{\ucc{${\scriptstyle \dot{\Gamma}}$}}}{1} +{Δ̇}{{\ucc{${\scriptstyle \dot{\Delta}}$}}}{1} +{Ε̇}{{\ucc{${\scriptstyle \dot{E}}$}}}{1} +{Ζ̇}{{\ucc{${\scriptstyle \dot{Z}}$}}}{1} +{Η̇}{{\ucc{${\scriptstyle \dot{H}}$}}}{1} +{Θ̇}{{\ucc{${\scriptstyle \dot{\Theta}}$}}}{1} +{Ι̇}{{\ucc{${\scriptstyle \dot{I}}$}}}{1} +{Κ̇}{{\ucc{${\scriptstyle \dot{K}}$}}}{1} +{Λ̇}{{\ucc{${\scriptstyle \dot{\Lambda}}$}}}{1} +{Μ̇}{{\ucc{${\scriptstyle \dot{M}}$}}}{1} +{Ν̇}{{\ucc{${\scriptstyle \dot{N}}$}}}{1} +{Ξ̇}{{\ucc{${\scriptstyle \dot{\Xi}}$}}}{1} +{Ο̇}{{\ucc{${\scriptstyle \dot{O}}$}}}{1} +{Π̇}{{\ucc{${\scriptstyle \dot{\Pi}}$}}}{1} +{Ρ̇}{{\ucc{${\scriptstyle \dot{P}}$}}}{1} +{Σ̇}{{\ucc{${\scriptstyle \dot{\Sigma}}$}}}{1} +{Τ̇}{{\ucc{${\scriptstyle \dot{T}}$}}}{1} +{Υ̇}{{\ucc{${\scriptstyle \dot{\Upsilon}}$}}}{1} +{Φ̇}{{\ucc{${\scriptstyle \dot{\Phi}}$}}}{1} +{Χ̇}{{\ucc{${\scriptstyle \dot{X}}$}}}{1} +{Ψ̇}{{\ucc{${\scriptstyle \dot{\Psi}}$}}}{1} +{Ω̇}{{\ucc{${\scriptstyle \dot{\Omega}}$}}}{1} +% +% greek small letters with dot above +% +{α̇}{{\ucc{${\scriptstyle \dot{\alpha}}$}}}{1} +{β̇}{{\ucc{${\scriptstyle \dot{\beta}}$}}}{1} +{γ̇}{{\ucc{${\scriptstyle \dot{\gamma}}$}}}{1} +{δ̇}{{\ucc{${\scriptstyle \dot{\delta}}$}}}{1} +{ε̇}{{\ucc{${\scriptstyle \dot{\varepsilon}}$}}}{1} +{ϵ̇}{{\ucc{${\scriptstyle \dot{\epsilon}}$}}}{1} +{ζ̇}{{\ucc{${\scriptstyle \dot{\zeta}}$}}}{1} +{η̇}{{\ucc{${\scriptstyle \dot{\eta}}$}}}{1} +{θ̇}{{\ucc{${\scriptstyle \dot{\theta}}$}}}{1} +{ϑ̇}{{\ucc{${\scriptstyle \dot{\vartheta}}$}}}{1} +{ι̇}{{\ucc{${\scriptstyle \dot{\iota}}$}}}{1} +{κ̇}{{\ucc{${\scriptstyle \dot{\kappa}}$}}}{1} +{ϰ̇}{{\ucc{${\scriptstyle \dot{\varkappa}}$}}}{1} +{λ̇}{{\ucc{${\scriptstyle \dot{\lambda}}$}}}{1} +{μ̇}{{\ucc{${\scriptstyle \dot{\mu}}$}}}{1} +{ν̇}{{\ucc{${\scriptstyle \dot{\nu}}$}}}{1} +{ξ̇}{{\ucc{${\scriptstyle \dot{\xi}}$}}}{1} +{ο̇}{{\ucc{${\scriptstyle \dot{o}}$}}}{1} +{π̇}{{\ucc{${\scriptstyle \dot{\pi}}$}}}{1} +{ϖ̇}{{\ucc{${\scriptstyle \dot{\varpi}}$}}}{1} +{ρ̇}{{\ucc{${\scriptstyle \dot{\rho}}$}}}{1} +{ϱ̇}{{\ucc{${\scriptstyle \dot{\varrho}}$}}}{1} +{σ̇}{{\ucc{${\scriptstyle \dot{\sigma}}$}}}{1} +{ς̇}{{\ucc{${\scriptstyle \dot{\varsigma}}$}}}{1} +{τ̇}{{\ucc{${\scriptstyle \dot{\tau}}$}}}{1} +{υ̇}{{\ucc{${\scriptstyle \dot{\upsilon}}$}}}{1} +{ϕ̇}{{\ucc{${\scriptstyle \dot{\phi}}$}}}{1} +{φ̇}{{\ucc{${\scriptstyle \dot{\varphi}}$}}}{1} +{χ̇}{{\ucc{${\scriptstyle \dot{\chi}}$}}}{1} +{ψ̇}{{\ucc{${\scriptstyle \dot{\psi}}$}}}{1} +{ω̇}{{\ucc{${\scriptstyle \dot{\omega}}$}}}{1} +% +% latin capital letters with double dot above +% +{Ä}{{\ucc{\"A}}}{1} {B̈}{{\ucc{\"B}}}{1} {C̈}{{\ucc{\"C}}}{1} {D̈}{{\ucc{\"D}}}{1} +{Ë}{{\ucc{\"E}}}{1} {F̈}{{\ucc{\"F}}}{1} {G̈}{{\ucc{\"G}}}{1} {Ḧ}{{\ucc{\"H}}}{1} +{Ï}{{\ucc{\"I}}}{1} {J̈}{{\ucc{\"J}}}{1} {K̈}{{\ucc{\"K}}}{1} {L̈}{{\ucc{\"L}}}{1} +{M̈}{{\ucc{\"M}}}{1} {N̈}{{\ucc{\"N}}}{1} {Ö}{{\ucc{\"O}}}{1} {P̈}{{\ucc{\"P}}}{1} +{Q̈}{{\ucc{\"Q}}}{1} {R̈}{{\ucc{\"R}}}{1} {S̈}{{\ucc{\"S}}}{1} {T̈}{{\ucc{\"T}}}{1} +{Ü}{{\ucc{\"U}}}{1} {V̈}{{\ucc{\"V}}}{1} {Ẅ}{{\ucc{\"W}}}{1} {Ẍ}{{\ucc{\"X}}}{1} +{Ÿ}{{\ucc{\"Y}}}{1} {Z̈}{{\ucc{\"Z}}}{1} +% +% latin small letters with double dot above +% +{ä}{{\ucc{\"a}}}{1} {b̈}{{\ucc{\"b}}}{1} {c̈}{{\ucc{\"c}}}{1} {d̈}{{\ucc{\"d}}}{1} +{ë}{{\ucc{\"e}}}{1} {f̈}{{\ucc{\"f}}}{1} {g̈}{{\ucc{\"g}}}{1} {ḧ}{{\ucc{\"h}}}{1} +{ï}{{\ucc{\"i}}}{1} {j̈}{{\ucc{\"j}}}{1} {k̈}{{\ucc{\"k}}}{1} {l̈}{{\ucc{\"l}}}{1} +{m̈}{{\ucc{\"m}}}{1} {n̈}{{\ucc{\"n}}}{1} {ö}{{\ucc{\"o}}}{1} {p̈}{{\ucc{\"p}}}{1} +{q̈}{{\ucc{\"q}}}{1} {r̈}{{\ucc{\"r}}}{1} {s̈}{{\ucc{\"s}}}{1} {ẗ}{{\ucc{\"t}}}{1} +{ü}{{\ucc{\"u}}}{1} {v̈}{{\ucc{\"v}}}{1} {ẅ}{{\ucc{\"w}}}{1} {ẍ}{{\ucc{\"x}}}{1} +{ÿ}{{\ucc{\"y}}}{1} {z̈}{{\ucc{\"z}}}{1} +% +% greek capital letters with double dot above +% +{Α̈}{{\ucc{${\scriptstyle \ddot{A}}$}}}{1} +{Β̈}{{\ucc{${\scriptstyle \ddot{B}}$}}}{1} +{Γ̈}{{\ucc{${\scriptstyle \ddot{\Gamma}}$}}}{1} +{Δ̈}{{\ucc{${\scriptstyle \ddot{\Delta}}$}}}{1} +{Ε̈}{{\ucc{${\scriptstyle \ddot{E}}$}}}{1} +{Ζ̈}{{\ucc{${\scriptstyle \ddot{Z}}$}}}{1} +{Η̈}{{\ucc{${\scriptstyle \ddot{H}}$}}}{1} +{Θ̈}{{\ucc{${\scriptstyle \ddot{\Theta}}$}}}{1} +{Ϊ}{{\ucc{${\scriptstyle \ddot{I}}$}}}{1} +{Κ̈}{{\ucc{${\scriptstyle \ddot{K}}$}}}{1} +{Λ̈}{{\ucc{${\scriptstyle \ddot{\Lambda}}$}}}{1} +{Μ̈}{{\ucc{${\scriptstyle \ddot{M}}$}}}{1} +{Ν̈}{{\ucc{${\scriptstyle \ddot{N}}$}}}{1} +{Ξ̈}{{\ucc{${\scriptstyle \ddot{\Xi}}$}}}{1} +{Ο̈}{{\ucc{${\scriptstyle \ddot{O}}$}}}{1} +{Π̈}{{\ucc{${\scriptstyle \ddot{\Pi}}$}}}{1} +{Ρ̈}{{\ucc{${\scriptstyle \ddot{P}}$}}}{1} +{Σ̈}{{\ucc{${\scriptstyle \ddot{\Sigma}}$}}}{1} +{Τ̈}{{\ucc{${\scriptstyle \ddot{T}}$}}}{1} +{Ϋ}{{\ucc{${\scriptstyle \ddot{\Upsilon}}$}}}{1} +{Φ̈}{{\ucc{${\scriptstyle \ddot{\Phi}}$}}}{1} +{Χ̈}{{\ucc{${\scriptstyle \ddot{X}}$}}}{1} +{Ψ̈}{{\ucc{${\scriptstyle \ddot{\Psi}}$}}}{1} +{Ω̈}{{\ucc{${\scriptstyle \ddot{\Omega}}$}}}{1} +% +% greek small letters with double dot above +% +{α̈}{{\ucc{${\scriptstyle \ddot{\alpha}}$}}}{1} +{β̈}{{\ucc{${\scriptstyle \ddot{\beta}}$}}}{1} +{γ̈}{{\ucc{${\scriptstyle \ddot{\gamma}}$}}}{1} +{δ̈}{{\ucc{${\scriptstyle \ddot{\delta}}$}}}{1} +{ε̈}{{\ucc{${\scriptstyle \ddot{\varepsilon}}$}}}{1} +{ϵ̈}{{\ucc{${\scriptstyle \ddot{\epsilon}}$}}}{1} +{ζ̈}{{\ucc{${\scriptstyle \ddot{\zeta}}$}}}{1} +{η̈}{{\ucc{${\scriptstyle \ddot{\eta}}$}}}{1} +{θ̈}{{\ucc{${\scriptstyle \ddot{\theta}}$}}}{1} +{ϑ̈}{{\ucc{${\scriptstyle \ddot{\vartheta}}$}}}{1} +{ϊ}{{\ucc{${\scriptstyle \ddot{\iota}}$}}}{1} +{κ̈}{{\ucc{${\scriptstyle \ddot{\kappa}}$}}}{1} +{ϰ̈}{{\ucc{${\scriptstyle \ddot{\varkappa}}$}}}{1} +{λ̈}{{\ucc{${\scriptstyle \ddot{\lambda}}$}}}{1} +{μ̈}{{\ucc{${\scriptstyle \ddot{\mu}}$}}}{1} +{ν̈}{{\ucc{${\scriptstyle \ddot{\nu}}$}}}{1} +{ξ̈}{{\ucc{${\scriptstyle \ddot{\xi}}$}}}{1} +{ο̈}{{\ucc{${\scriptstyle \ddot{o}}$}}}{1} +{π̈}{{\ucc{${\scriptstyle \ddot{\pi}}$}}}{1} +{ϖ̈}{{\ucc{${\scriptstyle \ddot{\varpi}}$}}}{1} +{ρ̈}{{\ucc{${\scriptstyle \ddot{\rho}}$}}}{1} +{ϱ̈}{{\ucc{${\scriptstyle \ddot{\varrho}}$}}}{1} +{σ̈}{{\ucc{${\scriptstyle \ddot{\sigma}}$}}}{1} +{ς̈}{{\ucc{${\scriptstyle \ddot{\varsigma}}$}}}{1} +{τ̈}{{\ucc{${\scriptstyle \ddot{\tau}}$}}}{1} +{ϋ}{{\ucc{${\scriptstyle \ddot{\upsilon}}$}}}{1} +{φ̈}{{\ucc{${\scriptstyle \ddot{\phi}}$}}}{1} +{ϕ̈}{{\ucc{${\scriptstyle \ddot{\varphi}}$}}}{1} +{χ̈}{{\ucc{${\scriptstyle \ddot{\chi}}$}}}{1} +{ψ̈}{{\ucc{${\scriptstyle \ddot{\psi}}$}}}{1} +{ω̈}{{\ucc{${\scriptstyle \dot{\omega}}$}}}{1} +% +% latin capital letters with tilde above +% +{Ã}{{\ucc{\~A}}}{1} {B̃}{{\ucc{\~B}}}{1} {C̃}{{\ucc{\~C}}}{1} {D̃}{{\ucc{\~D}}}{1} +{Ẽ}{{\ucc{\~E}}}{1} {F̃}{{\ucc{\~F}}}{1} {G̃}{{\ucc{\~G}}}{1} {H̃}{{\ucc{\~H}}}{1} +{Ĩ}{{\ucc{\~I}}}{1} {J̃}{{\ucc{\~J}}}{1} {K̃}{{\ucc{\~K}}}{1} {L̃}{{\ucc{\~L}}}{1} +{M̃}{{\ucc{\~M}}}{1} {Ñ}{{\ucc{\~N}}}{1} {Õ}{{\ucc{\~O}}}{1} {P̃}{{\ucc{\~P}}}{1} +{Q̃}{{\ucc{\~Q}}}{1} {R̃}{{\ucc{\~R}}}{1} {S̃}{{\ucc{\~S}}}{1} {T̃}{{\ucc{\~T}}}{1} +{Ũ}{{\ucc{\~U}}}{1} {Ṽ}{{\ucc{\~V}}}{1} {W̃}{{\ucc{\~W}}}{1} {X̃}{{\ucc{\~X}}}{1} +{Ỹ}{{\ucc{\~Y}}}{1} {Z̃}{{\ucc{\~Z}}}{1} +% +% latin small letters with tilde above +% +{ã}{{\ucc{\~a}}}{1} {b̃}{{\ucc{\~b}}}{1} {c̃}{{\ucc{\~c}}}{1} {d̃}{{\ucc{\~d}}}{1} +{ẽ}{{\ucc{\~e}}}{1} {f̃}{{\ucc{\~f}}}{1} {g̃}{{\ucc{\~g}}}{1} {h̃}{{\ucc{\~h}}}{1} +{ĩ}{{\ucc{\~i}}}{1} {j̃}{{\ucc{\~j}}}{1} {k̃}{{\ucc{\~k}}}{1} {l̃}{{\ucc{\~l}}}{1} +{m̃}{{\ucc{\~m}}}{1} {ñ}{{\ucc{\~n}}}{1} {õ}{{\ucc{\~o}}}{1} {p̃}{{\ucc{\~p}}}{1} +{q̃}{{\ucc{\~q}}}{1} {r̃}{{\ucc{\~r}}}{1} {s̃}{{\ucc{\~s}}}{1} {t̃}{{\ucc{\~t}}}{1} +{ũ}{{\ucc{\~u}}}{1} {ṽ}{{\ucc{\~v}}}{1} {w̃}{{\ucc{\~w}}}{1} {x̃}{{\ucc{\~x}}}{1} +{ỹ}{{\ucc{\~y}}}{1} {z̃}{{\ucc{\~z}}}{1} +% +% greek capital letters with tilde above +% +{Α̃}{{\ucc{${\scriptstyle \tilde{A}}$}}}{1} +{Β̃}{{\ucc{${\scriptstyle \tilde{B}}$}}}{1} +{Γ̃}{{\ucc{${\scriptstyle \tilde{\Gamma}}$}}}{1} +{Δ̃}{{\ucc{${\scriptstyle \tilde{\Delta}}$}}}{1} +{Ε̃}{{\ucc{${\scriptstyle \tilde{E}}$}}}{1} +{Ζ̃}{{\ucc{${\scriptstyle \tilde{Z}}$}}}{1} +{Η̃}{{\ucc{${\scriptstyle \tilde{H}}$}}}{1} +{Θ̃}{{\ucc{${\scriptstyle \tilde{\Theta}}$}}}{1} +{Ι̃}{{\ucc{${\scriptstyle \tilde{I}}$}}}{1} +{Κ̃}{{\ucc{${\scriptstyle \tilde{K}}$}}}{1} +{Λ̃}{{\ucc{${\scriptstyle \tilde{\Lambda}}$}}}{1} +{Μ̃}{{\ucc{${\scriptstyle \tilde{M}}$}}}{1} +{Ν̃}{{\ucc{${\scriptstyle \tilde{N}}$}}}{1} +{Ξ̃}{{\ucc{${\scriptstyle \tilde{\Xi}}$}}}{1} +{Ο̃}{{\ucc{${\scriptstyle \tilde{O}}$}}}{1} +{Π̃}{{\ucc{${\scriptstyle \tilde{\Pi}}$}}}{1} +{Ρ̃}{{\ucc{${\scriptstyle \tilde{P}}$}}}{1} +{Σ̃}{{\ucc{${\scriptstyle \tilde{\Sigma}}$}}}{1} +{Τ̃}{{\ucc{${\scriptstyle \tilde{T}}$}}}{1} +{Υ̃}{{\ucc{${\scriptstyle \tilde{\Upsilon}}$}}}{1} +{Φ̃}{{\ucc{${\scriptstyle \tilde{\Phi}}$}}}{1} +{Χ̃}{{\ucc{${\scriptstyle \tilde{X}}$}}}{1} +{Ψ̃}{{\ucc{${\scriptstyle \tilde{\Psi}}$}}}{1} +{Ω̃}{{\ucc{${\scriptstyle \tilde{\Omega}}$}}}{1} +% +% greek small letters with tilde above +% +{α̃}{{\ucc{${\scriptstyle \tilde{\alpha}}$}}}{1} +{β̃}{{\ucc{${\scriptstyle \tilde{\beta}}$}}}{1} +{γ̃}{{\ucc{${\scriptstyle \tilde{\gamma}}$}}}{1} +{δ̃}{{\ucc{${\scriptstyle \tilde{\delta}}$}}}{1} +{ε̃}{{\ucc{${\scriptstyle \tilde{\varepsilon}}$}}}{1} +{ϵ̃}{{\ucc{${\scriptstyle \tilde{\epsilon}}$}}}{1} +{ζ̃}{{\ucc{${\scriptstyle \tilde{\zeta}}$}}}{1} +{η̃}{{\ucc{${\scriptstyle \tilde{\eta}}$}}}{1} +{θ̃}{{\ucc{${\scriptstyle \tilde{\theta}}$}}}{1} +{ϑ̃}{{\ucc{${\scriptstyle \tilde{\vartheta}}$}}}{1} +{ι̃}{{\ucc{${\scriptstyle \tilde{\iota}}$}}}{1} +{κ̃}{{\ucc{${\scriptstyle \tilde{\kappa}}$}}}{1} +{ϰ̃}{{\ucc{${\scriptstyle \tilde{\varkappa}}$}}}{1} +{λ̃}{{\ucc{${\scriptstyle \tilde{\lambda}}$}}}{1} +{μ̃}{{\ucc{${\scriptstyle \tilde{\mu}}$}}}{1} +{ν̃}{{\ucc{${\scriptstyle \tilde{\nu}}$}}}{1} +{ξ̃}{{\ucc{${\scriptstyle \tilde{\xi}}$}}}{1} +{ο̃}{{\ucc{${\scriptstyle \tilde{o}}$}}}{1} +{π̃}{{\ucc{${\scriptstyle \tilde{\pi}}$}}}{1} +{ϖ̃}{{\ucc{${\scriptstyle \tilde{\varpi}}$}}}{1} +{ρ̃}{{\ucc{${\scriptstyle \tilde{\rho}}$}}}{1} +{ϱ̃}{{\ucc{${\scriptstyle \tilde{\varrho}}$}}}{1} +{σ̃}{{\ucc{${\scriptstyle \tilde{\sigma}}$}}}{1} +{ς̃}{{\ucc{${\scriptstyle \tilde{\varsigma}}$}}}{1} +{τ̃}{{\ucc{${\scriptstyle \tilde{\tau}}$}}}{1} +{υ̃}{{\ucc{${\scriptstyle \tilde{\upsilon}}$}}}{1} +{φ̃}{{\ucc{${\scriptstyle \tilde{\phi}}$}}}{1} +{ϕ̃}{{\ucc{${\scriptstyle \tilde{\varphi}}$}}}{1} +{χ̃}{{\ucc{${\scriptstyle \tilde{\chi}}$}}}{1} +{ψ̃}{{\ucc{${\scriptstyle \tilde{\psi}}$}}}{1} +{ω̃}{{\ucc{${\scriptstyle \tilde{\omega}}$}}}{1} +% +% latin capital letters with hat above +% +{Â}{{\ucc{\^A}}}{1} {B̂}{{\ucc{\^B}}}{1} {Ĉ}{{\ucc{\^C}}}{1} {D̂}{{\ucc{\^D}}}{1} +{Ê}{{\ucc{\^E}}}{1} {F̂}{{\ucc{\^F}}}{1} {Ĝ}{{\ucc{\^G}}}{1} {Ĥ}{{\ucc{\^H}}}{1} +{Î}{{\ucc{\^I}}}{1} {Ĵ}{{\ucc{\^J}}}{1} {K̂}{{\ucc{\^K}}}{1} {L̂}{{\ucc{\^L}}}{1} +{M̂}{{\ucc{\^M}}}{1} {N̂}{{\ucc{\^N}}}{1} {Ô}{{\ucc{\^O}}}{1} {P̂}{{\ucc{\^P}}}{1} +{Q̂}{{\ucc{\^Q}}}{1} {R̂}{{\ucc{\^R}}}{1} {Ŝ}{{\ucc{\^S}}}{1} {T̂}{{\ucc{\^T}}}{1} +{Û}{{\ucc{\^U}}}{1} {V̂}{{\ucc{\^V}}}{1} {Ŵ}{{\ucc{\^W}}}{1} {X̂}{{\ucc{\^X}}}{1} +{Ŷ}{{\ucc{\^Y}}}{1} {Ẑ}{{\ucc{\^Z}}}{1} +% +% latin small letters with hat above +% +{â}{{\ucc{\^a}}}{1} {b̂}{{\ucc{\^b}}}{1} {ĉ}{{\ucc{\^c}}}{1} {d̂}{{\ucc{\^d}}}{1} +{ê}{{\ucc{\^e}}}{1} {f̂}{{\ucc{\^f}}}{1} {ĝ}{{\ucc{\^g}}}{1} {ĥ}{{\ucc{\^h}}}{1} +{î}{{\ucc{\^i}}}{1} {ĵ}{{\ucc{\^j}}}{1} {k̂}{{\ucc{\^k}}}{1} {l̂}{{\ucc{\^l}}}{1} +{m̂}{{\ucc{\^m}}}{1} {n̂}{{\ucc{\^n}}}{1} {ô}{{\ucc{\^o}}}{1} {p̂}{{\ucc{\^p}}}{1} +{q̂}{{\ucc{\^q}}}{1} {r̂}{{\ucc{\^r}}}{1} {ŝ}{{\ucc{\^s}}}{1} {t̂}{{\ucc{\^t}}}{1} +{û}{{\ucc{\^u}}}{1} {v̂}{{\ucc{\^v}}}{1} {ŵ}{{\ucc{\^w}}}{1} {x̂}{{\ucc{\^x}}}{1} +{ŷ}{{\ucc{\^y}}}{1} {ẑ}{{\ucc{\^z}}}{1} +% +% greek capital letters with hat above +% +{Α̂}{{\ucc{${\scriptstyle \hat{A}}$}}}{1} +{Β̂}{{\ucc{${\scriptstyle \hat{B}}$}}}{1} +{Γ̂}{{\ucc{${\scriptstyle \hat{\Gamma}}$}}}{1} +{Δ̂}{{\ucc{${\scriptstyle \hat{\Delta}}$}}}{1} +{Ε̂}{{\ucc{${\scriptstyle \hat{E}}$}}}{1} +{Ζ̂}{{\ucc{${\scriptstyle \hat{Z}}$}}}{1} +{Η̂}{{\ucc{${\scriptstyle \hat{H}}$}}}{1} +{Θ̂}{{\ucc{${\scriptstyle \hat{\Theta}}$}}}{1} +{Ι̂}{{\ucc{${\scriptstyle \hat{I}}$}}}{1} +{Κ̂}{{\ucc{${\scriptstyle \hat{K}}$}}}{1} +{Λ̂}{{\ucc{${\scriptstyle \hat{\Lambda}}$}}}{1} +{Μ̂}{{\ucc{${\scriptstyle \hat{M}}$}}}{1} +{Ν̂}{{\ucc{${\scriptstyle \hat{N}}$}}}{1} +{Ξ̂}{{\ucc{${\scriptstyle \hat{\Xi}}$}}}{1} +{Ο̂}{{\ucc{${\scriptstyle \hat{O}}$}}}{1} +{Π̂}{{\ucc{${\scriptstyle \hat{\Pi}}$}}}{1} +{Ρ̂}{{\ucc{${\scriptstyle \hat{P}}$}}}{1} +{Σ̂}{{\ucc{${\scriptstyle \hat{\Sigma}}$}}}{1} +{Τ̂}{{\ucc{${\scriptstyle \hat{T}}$}}}{1} +{Υ̂}{{\ucc{${\scriptstyle \hat{\Upsilon}}$}}}{1} +{Φ̂}{{\ucc{${\scriptstyle \hat{\Phi}}$}}}{1} +{Χ̂}{{\ucc{${\scriptstyle \hat{X}}$}}}{1} +{Ψ̂}{{\ucc{${\scriptstyle \hat{\Psi}}$}}}{1} +{Ω̂}{{\ucc{${\scriptstyle \hat{\Omega}}$}}}{1} +% +% greek small letters with hat above +% +{α̂}{{\ucc{${\scriptstyle \hat{\alpha}}$}}}{1} +{β̂}{{\ucc{${\scriptstyle \hat{\beta}}$}}}{1} +{γ̂}{{\ucc{${\scriptstyle \hat{\gamma}}$}}}{1} +{δ̂}{{\ucc{${\scriptstyle \hat{\delta}}$}}}{1} +{ε̂}{{\ucc{${\scriptstyle \hat{\varepsilon}}$}}}{1} +{ϵ̂}{{\ucc{${\scriptstyle \hat{\epsilon}}$}}}{1} +{ζ̂}{{\ucc{${\scriptstyle \hat{\zeta}}$}}}{1} +{η̂}{{\ucc{${\scriptstyle \hat{\eta}}$}}}{1} +{θ̂}{{\ucc{${\scriptstyle \hat{\theta}}$}}}{1} +{ϑ̂}{{\ucc{${\scriptstyle \hat{\vartheta}}$}}}{1} +{ι̂}{{\ucc{${\scriptstyle \hat{\iota}}$}}}{1} +{κ̂}{{\ucc{${\scriptstyle \hat{\kappa}}$}}}{1} +{ϰ̂}{{\ucc{${\scriptstyle \hat{\varkappa}}$}}}{1} +{λ̂}{{\ucc{${\scriptstyle \hat{\lambda}}$}}}{1} +{μ̂}{{\ucc{${\scriptstyle \hat{\mu}}$}}}{1} +{ν̂}{{\ucc{${\scriptstyle \hat{\nu}}$}}}{1} +{ξ̂}{{\ucc{${\scriptstyle \hat{\xi}}$}}}{1} +{ο̂}{{\ucc{${\scriptstyle \hat{o}}$}}}{1} +{π̂}{{\ucc{${\scriptstyle \hat{\pi}}$}}}{1} +{ϖ̂}{{\ucc{${\scriptstyle \hat{\varpi}}$}}}{1} +{ρ̂}{{\ucc{${\scriptstyle \hat{\rho}}$}}}{1} +{ϱ̂}{{\ucc{${\scriptstyle \hat{\varrho}}$}}}{1} +{σ̂}{{\ucc{${\scriptstyle \hat{\sigma}}$}}}{1} +{ς̂}{{\ucc{${\scriptstyle \hat{\varsigma}}$}}}{1} +{τ̂}{{\ucc{${\scriptstyle \hat{\tau}}$}}}{1} +{υ̂}{{\ucc{${\scriptstyle \hat{\upsilon}}$}}}{1} +{φ̂}{{\ucc{${\scriptstyle \hat{\phi}}$}}}{1} +{ϕ̂}{{\ucc{${\scriptstyle \hat{\varphi}}$}}}{1} +{χ̂}{{\ucc{${\scriptstyle \hat{\chi}}$}}}{1} +{ψ̂}{{\ucc{${\scriptstyle \hat{\psi}}$}}}{1} +{ω̂}{{\ucc{${\scriptstyle \hat{\omega}}$}}}{1} +% +% latin capital letters with bar above +% +{Ā}{{\ucc{\=A}}}{1} {B̄}{{\ucc{\=B}}}{1} {C̄}{{\ucc{\=C}}}{1} {D̄}{{\ucc{\=D}}}{1} +{Ē}{{\ucc{\=E}}}{1} {F̄}{{\ucc{\=F}}}{1} {Ḡ}{{\ucc{\=G}}}{1} {H̄}{{\ucc{\=H}}}{1} +{Ī}{{\ucc{\=I}}}{1} {J̄}{{\ucc{\=J}}}{1} {K̄}{{\ucc{\=K}}}{1} {L̄}{{\ucc{\=L}}}{1} +{M̄}{{\ucc{\=M}}}{1} {N̄}{{\ucc{\=N}}}{1} {Ō}{{\ucc{\=O}}}{1} {P̄}{{\ucc{\=P}}}{1} +{Q̄}{{\ucc{\=Q}}}{1} {R̄}{{\ucc{\=R}}}{1} {S̄}{{\ucc{\=S}}}{1} {T̄}{{\ucc{\=T}}}{1} +{Ū}{{\ucc{\=U}}}{1} {V̄}{{\ucc{\=V}}}{1} {W̄}{{\ucc{\=W}}}{1} {X̄}{{\ucc{\=X}}}{1} +{Ȳ}{{\ucc{\=Y}}}{1} {Z̄}{{\ucc{\=Z}}}{1} +% +% latin small letters with bar above +% +{ā}{{\ucc{\=a}}}{1} {b̄}{{\ucc{\=b}}}{1} {c̄}{{\ucc{\=c}}}{1} {d̄}{{\ucc{\=d}}}{1} +{ē}{{\ucc{\=e}}}{1} {f̄}{{\ucc{\=f}}}{1} {ḡ}{{\ucc{\=g}}}{1} {h̄}{{\ucc{\=h}}}{1} +{ī}{{\ucc{\=i}}}{1} {j̄}{{\ucc{\=j}}}{1} {k̄}{{\ucc{\=k}}}{1} {l̄}{{\ucc{\=l}}}{1} +{m̄}{{\ucc{\=m}}}{1} {n̄}{{\ucc{\=n}}}{1} {ō}{{\ucc{\=o}}}{1} {p̄}{{\ucc{\=p}}}{1} +{q̄}{{\ucc{\=q}}}{1} {r̄}{{\ucc{\=r}}}{1} {s̄}{{\ucc{\=s}}}{1} {t̄}{{\ucc{\=t}}}{1} +{ū}{{\ucc{\=u}}}{1} {v̄}{{\ucc{\=v}}}{1} {w̄}{{\ucc{\=w}}}{1} {x̄}{{\ucc{\=x}}}{1} +{ȳ}{{\ucc{\=y}}}{1} {z̄}{{\ucc{\=z}}}{1} +% +% greek capital letters with bar above +% +{Ᾱ}{{\ucc{${\scriptstyle \bar{A}}$}}}{1} +{Β̄}{{\ucc{${\scriptstyle \bar{B}}$}}}{1} +{Γ̄}{{\ucc{${\scriptstyle \bar{\Gamma}}$}}}{1} +{Δ̄}{{\ucc{${\scriptstyle \bar{\Delta}}$}}}{1} +{Ε̄}{{\ucc{${\scriptstyle \bar{E}}$}}}{1} +{Ζ̄}{{\ucc{${\scriptstyle \bar{Z}}$}}}{1} +{Η̄}{{\ucc{${\scriptstyle \bar{H}}$}}}{1} +{Θ̄}{{\ucc{${\scriptstyle \bar{\Theta}}$}}}{1} +{Ῑ}{{\ucc{${\scriptstyle \bar{I}}$}}}{1} +{Κ̄}{{\ucc{${\scriptstyle \bar{K}}$}}}{1} +{Λ̄}{{\ucc{${\scriptstyle \bar{\Lambda}}$}}}{1} +{Μ̄}{{\ucc{${\scriptstyle \bar{M}}$}}}{1} +{Ν̄}{{\ucc{${\scriptstyle \bar{N}}$}}}{1} +{Ξ̄}{{\ucc{${\scriptstyle \bar{\Xi}}$}}}{1} +{Ο̄}{{\ucc{${\scriptstyle \bar{O}}$}}}{1} +{Π̄}{{\ucc{${\scriptstyle \bar{\Pi}}$}}}{1} +{Ρ̄}{{\ucc{${\scriptstyle \bar{P}}$}}}{1} +{Σ̄}{{\ucc{${\scriptstyle \bar{\Sigma}}$}}}{1} +{Τ̄}{{\ucc{${\scriptstyle \bar{T}}$}}}{1} +{Ῡ}{{\ucc{${\scriptstyle \bar{\Upsilon}}$}}}{1} +{Φ̄}{{\ucc{${\scriptstyle \bar{\Phi}}$}}}{1} +{Χ̄}{{\ucc{${\scriptstyle \bar{X}}$}}}{1} +{Ψ̄}{{\ucc{${\scriptstyle \bar{\Psi}}$}}}{1} +{Ω̄}{{\ucc{${\scriptstyle \bar{\Omega}}$}}}{1} +% +% greek small letters with bar above +% +{ᾱ}{{\ucc{${\scriptstyle \bar{\alpha}}$}}}{1} +{β̄}{{\ucc{${\scriptstyle \bar{\beta}}$}}}{1} +{γ̄}{{\ucc{${\scriptstyle \bar{\gamma}}$}}}{1} +{δ̄}{{\ucc{${\scriptstyle \bar{\delta}}$}}}{1} +{ε̄}{{\ucc{${\scriptstyle \bar{\varepsilon}}$}}}{1} +{ϵ̄}{{\ucc{${\scriptstyle \bar{\epsilon}}$}}}{1} +{ζ̄}{{\ucc{${\scriptstyle \bar{\zeta}}$}}}{1} +{η̄}{{\ucc{${\scriptstyle \bar{\eta}}$}}}{1} +{θ̄}{{\ucc{${\scriptstyle \bar{\theta}}$}}}{1} +{ϑ̄}{{\ucc{${\scriptstyle \bar{\vartheta}}$}}}{1} +{ῑ}{{\ucc{${\scriptstyle \bar{\iota}}$}}}{1} +{κ̄}{{\ucc{${\scriptstyle \bar{\kappa}}$}}}{1} +{ϰ̄}{{\ucc{${\scriptstyle \bar{\varkappa}}$}}}{1} +{λ̄}{{\ucc{${\scriptstyle \bar{\lambda}}$}}}{1} +{μ̄}{{\ucc{${\scriptstyle \bar{\mu}}$}}}{1} +{ν̄}{{\ucc{${\scriptstyle \bar{\nu}}$}}}{1} +{ξ̄}{{\ucc{${\scriptstyle \bar{\xi}}$}}}{1} +{ο̄}{{\ucc{${\scriptstyle \bar{o}}$}}}{1} +{π̄}{{\ucc{${\scriptstyle \bar{\pi}}$}}}{1} +{ϖ̄}{{\ucc{${\scriptstyle \bar{\varpi}}$}}}{1} +{ρ̄}{{\ucc{${\scriptstyle \bar{\rho}}$}}}{1} +{ϱ̄}{{\ucc{${\scriptstyle \bar{\varrho}}$}}}{1} +{σ̄}{{\ucc{${\scriptstyle \bar{\sigma}}$}}}{1} +{ς̄}{{\ucc{${\scriptstyle \bar{\varsigma}}$}}}{1} +{τ̄}{{\ucc{${\scriptstyle \bar{\tau}}$}}}{1} +{ῡ}{{\ucc{${\scriptstyle \bar{\upsilon}}$}}}{1} +{φ̄}{{\ucc{${\scriptstyle \bar{\phi}}$}}}{1} +{ϕ̄}{{\ucc{${\scriptstyle \bar{\varphi}}$}}}{1} +{χ̄}{{\ucc{${\scriptstyle \bar{\chi}}$}}}{1} +{ψ̄}{{\ucc{${\scriptstyle \bar{\psi}}$}}}{1} +{ω̄}{{\ucc{${\scriptstyle \bar{\omega}}$}}}{1} +% +% latin double-struck capital letters +% +{𝔸}{{\ucc{$\mathbb{A}$}}}{1} {𝔹}{{\ucc{$\mathbb{B}$}}}{1} +{ℂ}{{\ucc{$\mathbb{C}$}}}{1} {𝔻}{{\ucc{$\mathbb{D}$}}}{1} +{𝔼}{{\ucc{$\mathbb{E}$}}}{1} {𝔽}{{\ucc{$\mathbb{F}$}}}{1} +{𝔾}{{\ucc{$\mathbb{G}$}}}{1} {ℍ}{{\ucc{$\mathbb{H}$}}}{1} +{𝕀}{{\ucc{$\mathbb{I}$}}}{1} {𝕁}{{\ucc{$\mathbb{J}$}}}{1} +{𝕂}{{\ucc{$\mathbb{K}$}}}{1} {𝕃}{{\ucc{$\mathbb{L}$}}}{1} +{𝕄}{{\ucc{$\mathbb{M}$}}}{1} {ℕ}{{\ucc{$\mathbb{N}$}}}{1} +{𝕆}{{\ucc{$\mathbb{O}$}}}{1} {ℙ}{{\ucc{$\mathbb{P}$}}}{1} +{ℚ}{{\ucc{$\mathbb{Q}$}}}{1} {ℝ}{{\ucc{$\mathbb{R}$}}}{1} +{𝕊}{{\ucc{$\mathbb{S}$}}}{1} {𝕋}{{\ucc{$\mathbb{T}$}}}{1} +{𝕌}{{\ucc{$\mathbb{U}$}}}{1} {𝕍}{{\ucc{$\mathbb{V}$}}}{1} +{𝕎}{{\ucc{$\mathbb{W}$}}}{1} {𝕏}{{\ucc{$\mathbb{X}$}}}{1} +{𝕐}{{\ucc{$\mathbb{Y}$}}}{1} {ℤ}{{\ucc{$\mathbb{Z}$}}}{1} +% +% latin script capital letters +% +{𝒜}{{\ucc{$\mathcal{A}$}}}{1} {ℬ}{{\ucc{$\mathcal{B}$}}}{1} +{𝒞}{{\ucc{$\mathcal{C}$}}}{1} {𝒟}{{\ucc{$\mathcal{D}$}}}{1} +{ℰ}{{\ucc{$\mathcal{E}$}}}{1} {ℱ}{{\ucc{$\mathcal{F}$}}}{1} +{𝒢}{{\ucc{$\mathcal{G}$}}}{1} {ℋ}{{\ucc{$\mathcal{H}$}}}{1} +{ℐ}{{\ucc{$\mathcal{I}$}}}{1} {𝒥}{{\ucc{$\mathcal{J}$}}}{1} +{𝒦}{{\ucc{$\mathcal{K}$}}}{1} {ℒ}{{\ucc{$\mathcal{L}$}}}{1} +{ℳ}{{\ucc{$\mathcal{M}$}}}{1} {𝒩}{{\ucc{$\mathcal{N}$}}}{1} +{𝒪}{{\ucc{$\mathcal{O}$}}}{1} {𝒫}{{\ucc{$\mathcal{P}$}}}{1} +{𝒬}{{\ucc{$\mathcal{Q}$}}}{1} {ℛ}{{\ucc{$\mathcal{R}$}}}{1} +{𝒮}{{\ucc{$\mathcal{S}$}}}{1} {𝒯}{{\ucc{$\mathcal{T}$}}}{1} +{𝒰}{{\ucc{$\mathcal{U}$}}}{1} {𝒱}{{\ucc{$\mathcal{V}$}}}{1} +{𝒲}{{\ucc{$\mathcal{W}$}}}{1} {𝒳}{{\ucc{$\mathcal{X}$}}}{1} +{𝒴}{{\ucc{$\mathcal{Y}$}}}{1} {𝒵}{{\ucc{$\mathcal{Z}$}}}{1} +% +% latin fraktur capital letters +% +{𝔄}{{\ucc{$\mathfrak{A}$}}}{1} {𝔅}{{\ucc{$\mathfrak{B}$}}}{1} +{ℭ}{{\ucc{$\mathfrak{C}$}}}{1} {𝔇}{{\ucc{$\mathfrak{D}$}}}{1} +{𝔈}{{\ucc{$\mathfrak{E}$}}}{1} {𝔉}{{\ucc{$\mathfrak{F}$}}}{1} +{𝔊}{{\ucc{$\mathfrak{G}$}}}{1} {ℌ}{{\ucc{$\mathfrak{H}$}}}{1} +{ℑ}{{\ucc{$\Im$}}}{1} {𝔍}{{\ucc{$\mathfrak{J}$}}}{1} +{𝔎}{{\ucc{$\mathfrak{K}$}}}{1} {𝔏}{{\ucc{$\mathfrak{L}$}}}{1} +{𝔐}{{\ucc{$\mathfrak{M}$}}}{1} {𝔑}{{\ucc{$\mathfrak{N}$}}}{1} +{𝔒}{{\ucc{$\mathfrak{O}$}}}{1} {𝔓}{{\ucc{$\mathfrak{P}$}}}{1} +{𝔔}{{\ucc{$\mathfrak{Q}$}}}{1} {ℜ}{{\ucc{$\Re$}}}{1} +{𝔖}{{\ucc{$\mathfrak{S}$}}}{1} {𝔗}{{\ucc{$\mathfrak{T}$}}}{1} +{𝔘}{{\ucc{$\mathfrak{U}$}}}{1} {𝔙}{{\ucc{$\mathfrak{V}$}}}{1} +{𝔚}{{\ucc{$\mathfrak{W}$}}}{1} {𝔛}{{\ucc{$\mathfrak{X}$}}}{1} +{𝔜}{{\ucc{$\mathfrak{Y}$}}}{1} {ℨ}{{\ucc{$\mathfrak{Z}$}}}{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} +% +% mathematical operators (julia functions) +% +% comment out the next command if you dont use ' as the transposition +% operator! activate the command in line 384 in that case, too! +{'}{{\uccop{\textquotesingle}}}{1} +{×}{{\uccop{${\scriptstyle \times}$}}}{1} +{÷}{{\uccop{${\scriptstyle \div}$}}}{1} +{∈}{{\uccop{${\scriptstyle \in}$}}}{1} +{∉}{{\uccop{${\scriptstyle \notin}$}}}{1} +{∋}{{\uccop{${\scriptstyle \ni}$}}}{1} +{∌}{{\uccop{${\scriptstyle \not\ni}$}}}{1} +{∘}{{\uccop{${\scriptstyle \circ}$}}}{1} +{√}{{\uccop{$\surd$}}}{1} +{∛}{{\uccop{$\sqrt[3]{\vphantom{x}}$}}}{1} +{∩}{{\uccop{${\scriptstyle \cap}$}}}{1} +{∪}{{\uccop{${\scriptstyle \cup}$}}}{1} +{≈}{{\uccop{${\scriptstyle \approx}$}}}{1} +{≉}{{\uccop{${\scriptstyle \not\approx}$}}}{1} +{≠}{{\uccop{${\scriptstyle \neq}$}}}{1} +{≡}{{\uccop{${\scriptstyle \equiv}$}}}{1} +{≢}{{\uccop{${\scriptstyle \not\equiv}$}}}{1} +{≤}{{\uccop{${\scriptstyle \leq}$}}}{1} +{≥}{{\uccop{${\scriptstyle \geq}$}}}{1} +{⊆}{{\uccop{${\scriptstyle \subseteq}$}}}{1} +{⊇}{{\uccop{${\scriptstyle \supseteq}$}}}{1} +{⊈}{{\uccop{${\scriptstyle \not\subseteq}$}}}{1} +{⊉}{{\uccop{${\scriptstyle \not\supseteq}$}}}{1} +{⊊}{{\uccop{${\scriptstyle \subsetneq}$}}}{1} +{⊋}{{\uccop{${\scriptstyle \supsetneq}$}}}{1} +{⊻}{{\uccop{${\scriptstyle \veebar}$}}}{1} +{⋅}{{\uccop{${\scriptstyle \cdot}$}}}{1} +% +% other mathematical symbols +% +{∇}{{\ucc{${\scriptstyle \nabla}$}}}{1} +{⊗}{{\ucc{${\scriptstyle \otimes}$}}}{1} +{⊕}{{\ucc{${\scriptstyle \oplus}$}}}{1} +{‖}{{\ucc{${\scriptstyle \Vert}$}}}{1} +{⊥}{{\ucc{${\scriptstyle \bot}$}}}{1} +{ℓ}{{\ucc{${\scriptstyle \ell}$}}}{1} +{∃}{{\ucc{${\scriptstyle \exists}$}}}{1} +{∀}{{\ucc{${\scriptstyle \forall}$}}}{1} +{ħ}{{\ucc{${\scriptstyle \hbar}$}}}{1} +{ı}{{\ucc{${\scriptstyle \imath}$}}}{1} +{ȷ}{{\ucc{${\scriptstyle \jmath}$}}}{1} +{∄}{{\ucc{${\scriptstyle \exists}$}}}{1} +{∂}{{\ucc{${\scriptstyle \partial}$}}}{1} +{⊤}{{\ucc{${\scriptstyle \top}$}}}{1} +{℘}{{\ucc{${\scriptstyle \wp}$}}}{1} +{…}{{\ucc{${\scriptstyle \ldots}$}}}{3} +{⋯}{{\ucc{${\scriptstyle \cdots}$}}}{3} +{⋮}{{\ucc{${\scriptstyle \rvdots}$}}}{1} +{⋱}{{\ucc{${\scriptstyle \rddots}$}}}{3} +{⋰}{{\ucc{${\scriptstyle \riddots}$}}}{3} +{§}{{\ucc{\S}}}{1} +{⟨}{{\ucc{${\langle}$}}}{1} +{⟩}{{\ucc{${\rangle}$}}}{1} +{→}{{\ucc{${\rightarrow}$}}}{2} +{←}{{\ucc{${\leftarrow}$}}}{2} +{⤳}{{\ucc{${\leadsto}$}}}{2} +{′}{{\ucc{${{}^\prime}$}}}{1} +% +% unicode box characters +% +{─}{{\ucc{\textSFx}}}{1} {━}{{\ucc{\pmboxdrawuni{2501}}}}{1} +{│}{{\ucc{\textSFxi}}}{1} {┃}{{\ucc{\pmboxdrawuni{2503}}}}{1} +% the follwing four lines are just improvised solutions +{┄}{{\ucc{\textSFx}}}{1} {┅}{{\ucc{\textSFx}}}{1} +{┆}{{\ucc{\textSFxi}}}{1} {┇}{{\ucc{\pmboxdrawuni{2503}}}}{1} +{┈}{{\ucc{\textSFx}}}{1} {┉}{{\ucc{\textSFx}}}{1} +{┊}{{\ucc{\textSFxi}}}{1} {┋}{{\ucc{\pmboxdrawuni{2503}}}}{1} +{┌}{{\ucc{\textSFi}}}{1} {┍}{{\ucc{\pmboxdrawuni{250D}}}}{1} +{┎}{{\ucc{\pmboxdrawuni{250E}}}}{1} {┏}{{\ucc{\pmboxdrawuni{250F}}}}{1} +{┐}{{\ucc{\textSFiii}}}{1} {┑}{{\ucc{\pmboxdrawuni{2511}}}}{1} +{┒}{{\ucc{\pmboxdrawuni{2512}}}}{1} {┓}{{\ucc{\pmboxdrawuni{2513}}}}{1} +{└}{{\ucc{\textSFii}}}{1} {┕}{{\ucc{\pmboxdrawuni{2515}}}}{1} +{┖}{{\ucc{\pmboxdrawuni{2516}}}}{1} {┗}{{\ucc{\pmboxdrawuni{2517}}}}{1} +{┘}{{\ucc{\textSFiv}}}{1} {┙}{{\ucc{\pmboxdrawuni{2519}}}}{1} +{┚}{{\ucc{\pmboxdrawuni{251A}}}}{1} {┛}{{\ucc{\pmboxdrawuni{251B}}}}{1} +{├}{{\ucc{\textSFviii}}}{1} {┝}{{\ucc{\pmboxdrawuni{251D}}}}{1} +{┞}{{\ucc{\pmboxdrawuni{251E}}}}{1} {┟}{{\ucc{\pmboxdrawuni{251F}}}}{1} +{┠}{{\ucc{\pmboxdrawuni{2520}}}}{1} {┡}{{\ucc{\pmboxdrawuni{2521}}}}{1} +{┢}{{\ucc{\pmboxdrawuni{2522}}}}{1} {┣}{{\ucc{\pmboxdrawuni{2523}}}}{1} +{┤}{{\ucc{\textSFix}}}{1} {┥}{{\ucc{\pmboxdrawuni{2525}}}}{1} +{┦}{{\ucc{\pmboxdrawuni{2526}}}}{1} {┧}{{\ucc{\pmboxdrawuni{2527}}}}{1} +{┨}{{\ucc{\pmboxdrawuni{2528}}}}{1} {┩}{{\ucc{\pmboxdrawuni{2529}}}}{1} +{┪}{{\ucc{\pmboxdrawuni{252A}}}}{1} {┫}{{\ucc{\pmboxdrawuni{252B}}}}{1} +{┬}{{\ucc{\textSFvi}}}{1} {┭}{{\ucc{\pmboxdrawuni{252D}}}}{1} +{┮}{{\ucc{\pmboxdrawuni{252E}}}}{1} {┯}{{\ucc{\pmboxdrawuni{252F}}}}{1} +{┰}{{\ucc{\pmboxdrawuni{2530}}}}{1} {┱}{{\ucc{\pmboxdrawuni{2531}}}}{1} +{┲}{{\ucc{\pmboxdrawuni{2532}}}}{1} {┳}{{\ucc{\pmboxdrawuni{2533}}}}{1} +{┴}{{\ucc{\textSFvii}}}{1} {┵}{{\ucc{\pmboxdrawuni{2535}}}}{1} +{┶}{{\ucc{\pmboxdrawuni{2536}}}}{1} {┷}{{\ucc{\pmboxdrawuni{2537}}}}{1} +{┸}{{\ucc{\pmboxdrawuni{2538}}}}{1} {┹}{{\ucc{\pmboxdrawuni{2539}}}}{1} +{┺}{{\ucc{\pmboxdrawuni{253A}}}}{1} {┻}{{\ucc{\pmboxdrawuni{253B}}}}{1} +{┼}{{\ucc{\textSFv}}}{1} {┽}{{\ucc{\pmboxdrawuni{253D}}}}{1} +{┾}{{\ucc{\pmboxdrawuni{253E}}}}{1} {┿}{{\ucc{\pmboxdrawuni{253F}}}}{1} +{╀}{{\ucc{\pmboxdrawuni{2540}}}}{1} {╁}{{\ucc{\pmboxdrawuni{2541}}}}{1} +{╂}{{\ucc{\pmboxdrawuni{2542}}}}{1} {╃}{{\ucc{\pmboxdrawuni{2543}}}}{1} +{╄}{{\ucc{\pmboxdrawuni{2544}}}}{1} {╅}{{\ucc{\pmboxdrawuni{2545}}}}{1} +{╆}{{\ucc{\pmboxdrawuni{2546}}}}{1} {╇}{{\ucc{\pmboxdrawuni{2547}}}}{1} +{╈}{{\ucc{\pmboxdrawuni{2548}}}}{1} {╉}{{\ucc{\pmboxdrawuni{2549}}}}{1} +{╊}{{\ucc{\pmboxdrawuni{254A}}}}{1} {╋}{{\ucc{\pmboxdrawuni{254B}}}}{1} +% the following characters don't have a good solution yet +%{╌}{{\ucc{}}}{1} {╍}{{\ucc{}}}{1} {╎}{{\ucc{}}}{1} {╏}{{\ucc{}}}{1} +{═}{{\ucc{\textSFxliii}}}{1} {║}{{\ucc{\textSFxxiv}}}{1} +{╒}{{\ucc{\textSFli}}}{1} {╓}{{\ucc{\textSFlii}}}{1} +{╔}{{\ucc{\textSFxxxix}}}{1} {╕}{{\ucc{\textSFxxii}}}{1} +{╖}{{\ucc{\textSFxxi}}}{1} {╗}{{\ucc{\textSFxxv}}}{1} +{╘}{{\ucc{\textSFl}}}{1} {╙}{{\ucc{\textSFxlix}}}{1} +{╚}{{\ucc{\textSFxxxviii}}}{1} {╛}{{\ucc{\textSFxxviii}}}{1} +{╜}{{\ucc{\textSFxxvii}}}{1} {╝}{{\ucc{\textSFxxvi}}}{1} +{╞}{{\ucc{\textSFxxxvi}}}{1} {╟}{{\ucc{\textSFxxxvii}}}{1} +{╠}{{\ucc{\textSFxlii}}}{1} {╡}{{\ucc{\textSFxix}}}{1} +{╢}{{\ucc{\textSFxx}}}{1} {╣}{{\ucc{\textSFxxiii}}}{1} +{╤}{{\ucc{\textSFxlvii}}}{1} {╥}{{\ucc{\textSFxlviii}}}{1} +{╦}{{\ucc{\textSFxli}}}{1} {╧}{{\ucc{\textSFxlv}}}{1} +{╨}{{\ucc{\textSFxlvi}}}{1} {╩}{{\ucc{\textSFxl}}}{1} +{╪}{{\ucc{\textSFliv}}}{1} {╫}{{\ucc{\textSFliii}}}{1} +{╬}{{\ucc{\textSFxliv}}}{1} +% the following characters don't have a good solution yet +%{╭}{{\ucc{}}}{1} {╮}{{\ucc{}}}{1} {╯}{{\ucc{}}}{1} +%{╰}{{\ucc{}}}{1} {╱}{{\ucc{}}}{1} {╲}{{\ucc{}}}{1} {╳}{{\ucc{}}}{1} +{╴}{{\ucc{\pmboxdrawuni{2574}}}}{1} {╵}{{\ucc{\pmboxdrawuni{2575}}}}{1} +{╶}{{\ucc{\pmboxdrawuni{2576}}}}{1} {╷}{{\ucc{\pmboxdrawuni{2577}}}}{1} +{╸}{{\ucc{\pmboxdrawuni{2578}}}}{1} {╹}{{\ucc{\pmboxdrawuni{2579}}}}{1} +{╺}{{\ucc{\pmboxdrawuni{257A}}}}{1} {╻}{{\ucc{\pmboxdrawuni{257B}}}}{1} +{╼}{{\ucc{\pmboxdrawuni{257C}}}}{1} {╽}{{\ucc{\pmboxdrawuni{257D}}}}{1} +{╾}{{\ucc{\pmboxdrawuni{257E}}}}{1} {╿}{{\ucc{\pmboxdrawuni{257F}}}}{1} +} +% +% +\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% defining the expandliterate key +\def\addToLiterate#1{% +\protected@edef\lst@literate{% +\unexpanded\expandafter{\lst@literate}\unexpanded{#1}}} +\lst@Key{expandliterate}{}{\addToLiterate{#1}} + +% defining the \addlitjlbase, \addlitjlstrnum, \addlitjlmacros and +% \addlitjlfunctions commands, which help a user to fix some of the known +% managable issues +\newcommand{\addlitjlbase}[3]{% +\lstset{style=jlcodeuccstyle} +\lstdefinestyle{jlcodeuccstyle}{expandliterate={#1}{{{\color{jlbase}#2}}}{#3}} +\ifjlc@autoload + \lstset{language=julia, style=jlcodestyle} +\fi +} +\newcommand{\addlitjlstrnum}[3]{% +\lstset{style=jlcodeuccstyle} +\lstdefinestyle{jlcodeuccstyle}{expandliterate={#1}{{{\color{jlstrnum}#2}}}{#3}} +\ifjlc@autoload + \lstset{language=julia, style=jlcodestyle} +\fi +} +\newcommand{\addlitjlmacros}[3]{% +\lstset{style=jlcodeuccstyle} +\lstdefinestyle{jlcodeuccstyle}{expandliterate={#1}{{{\color{jlmacros}#2}}}{#3}} +\ifjlc@autoload + \lstset{language=julia, style=jlcodestyle} +\fi +} +\newcommand{\addlitjlfunctions}[3]{% +\lstset{style=jlcodeuccstyle} +\lstdefinestyle{jlcodeuccstyle}{expandliterate={#1}{{{\color{jlfunctions}#2}}}{#3}} +\ifjlc@autoload + \lstset{language=julia, style=jlcodestyle} +\fi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% commands for inserting code + +% defining the \jlinputlisting command for listing standalone files +\newcommand{\jlinputlisting}[2][]{% +\calcboxlengths% +\lstinputlisting[language=julia, style=jlcodestyle, breaklines=true, #1]{#2}} + + +% defining the \jllisting for displaying code directly +\lstnewenvironment{jllisting}[2][]{% + \calcboxlengths% + \lst@TestEOLChar{#2}% + \lstset{breaklines=true, #1}% + \csname\@lst @SetFirstNumber\endcsname% +}{% + \@nobreakfalse + \csname\@lst @SaveFirstNumber\endcsname% +} + + +% defining the font for the inline code +\def\jlinlfont{\loadthemecolors\color{jlstrnum}\ttfamily\relsize{-0.5}\selectfont} + +% defining the \jlinl for dispalying in-line code snippets +\newlength{\jlinlem} +\newcommand{\jlinl}[1]{% +\settowidth{\jlinlem}{\jlinlfont{m}}% +\lstinline[language=julia, style=jlcodestyle ,breaklines=true, +basicstyle=\jlinlfont, basewidth=\jlinlem]^^a7#1^^a7} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\lstdefinestyle{jlcodestyle}{% + style=jlcodeblockstyle, + style=jlcodeboxdfltstyle, + style=jllinenumbersstyle, + style=jlcodeopstyle, + style=jlcodeuccstyle} + +\ifdefstring{\jlc@theme}{default-plain}{% + \lstdefinestyle{jlcodestyle}{% + style=jlcodeblockstyle, + style=jlcodeboxnostyle, + style=jllinenumbersstyle, + style=jlcodeopstyle, + style=jlcodeuccstyle} +}{} + +\ifdefstring{\jlc@theme}{grayscale}{% + \lstdefinestyle{jlcodestyle}{% + style=jlcodeblockstyle, + style=jlcodeboxdfltstyle, + style=jllinenumbersstyle, + style=jlcodeopstyle, + style=jlcodeuccstyle} +}{} + +\ifdefstring{\jlc@theme}{grayscale-plain}{% + \lstdefinestyle{jlcodestyle}{% + style=jlcodeblockstyle, + style=jlcodeboxnostyle, + style=jllinenumbersstyle, + style=jlcodeopstyle, + style=jlcodeuccstyle} +}{} + +\ifdefstring{\jlc@theme}{darkbeamer}{% + \lstdefinestyle{jlcodestyle}{% + style=jlcodeblockstyle, + style=jlcodeboxdthstyle, + style=jllinenumbersstyle, + style=jlcodeopstyle, + style=jlcodeuccstyle} +}{} + + +% activating the julia style +\ifjlc@autoload + \lstset{language=julia, style=jlcodestyle} +\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/assets/latex/listings.sty b/assets/latex/listings.sty new file mode 100644 index 0000000000..d7cf3eaa09 --- /dev/null +++ b/assets/latex/listings.sty @@ -0,0 +1,9 @@ +\usepackage{listings} +\lstset{ + breaklines = true, + % fontsize = \small, + frame = none, + backgroundcolor = codeblock-background, + rulecolor= codeblock-border, + } +\usepackage{jlcode} \ No newline at end of file diff --git a/assets/latex/minted.sty b/assets/latex/minted.sty new file mode 100644 index 0000000000..b3fd48e554 --- /dev/null +++ b/assets/latex/minted.sty @@ -0,0 +1,8 @@ +\usepackage{minted} +\setminted{ + breaklines = true, + fontsize = \small, + frame = none, + bgcolor = codeblock-background, + rulecolor=codeblock-border, +} \ No newline at end of file diff --git a/assets/latex/preamble.tex b/assets/latex/preamble.tex index 5f383dc1bb..f2331db792 100644 --- a/assets/latex/preamble.tex +++ b/assets/latex/preamble.tex @@ -2,6 +2,7 @@ \documentclass[oneside]{memoir} \usepackage{./documenter} +\usepackage{./code_listings} \usepackage{./custom} %% Title Page diff --git a/src/latex/LaTeXWriter.jl b/src/latex/LaTeXWriter.jl index 8a88411796..6e12fae852 100644 --- a/src/latex/LaTeXWriter.jl +++ b/src/latex/LaTeXWriter.jl @@ -52,12 +52,15 @@ struct LaTeX <: Documenter.Writer platform::String version::String tectonic::Union{Cmd,String,Nothing} + code_listings::String function LaTeX(; - platform = "native", - version = get(ENV, "TRAVIS_TAG", ""), - tectonic = nothing) + platform="native", + version=get(ENV, "TRAVIS_TAG", ""), + tectonic=nothing, + code_listings="minted") + code_listings ∈ ("minted", "listings") || throw(ArgumentError("unknown code formatting package: $platform")) platform ∈ ("native", "tectonic", "docker", "none") || throw(ArgumentError("unknown platform: $platform")) - return new(platform, string(version), tectonic) + return new(platform, string(version), tectonic, code_listings) end end @@ -65,10 +68,10 @@ import ..Documenter import Markdown import ANSIColoredPrinters -mutable struct Context{I <: IO} <: IO +mutable struct Context{I<:IO} <: IO io::I in_header::Bool - footnotes::Dict{String, Int} + footnotes::Dict{String,Int} depth::Int filename::String # currently active source file doc::Documenter.Document @@ -86,8 +89,17 @@ _hash(x) = string(hash(x)) const STYLE = joinpath(dirname(@__FILE__), "..", "..", "assets", "latex", "documenter.sty") const DEFAULT_PREAMBLE_PATH = joinpath(dirname(@__FILE__), "..", "..", "assets", "latex", "preamble.tex") +const JLCODE_PATH = joinpath(dirname(@__FILE__), "..", "..", "assets", "latex", "jlcode.sty") +const LISTINGS_PATH = joinpath(dirname(@__FILE__), "..", "..", "assets", "latex", "listings.sty") +const MINTED_PATH = joinpath(dirname(@__FILE__), "..", "..", "assets", "latex", "minted.sty") -hastex() = (try; success(`latexmk -version`); catch; false; end) +hastex() = ( + try + success(`pdflatex --version`) + catch + false + end +) const DOCUMENT_STRUCTURE = ( "part", @@ -131,6 +143,7 @@ function render(doc::Documenter.Document, settings::LaTeX=LaTeX()) writefooter(context, doc) end cp(STYLE, "documenter.sty") + settings.code_listings == "listings" && cp(JLCODE_PATH, "jlcode.sty") # compile .tex status = compile_tex(doc, settings, fileprefix) @@ -236,6 +249,9 @@ function writeheader(io::IO, doc::Documenter.Document, settings::LaTeX) custom = joinpath(doc.user.root, doc.user.source, "assets", "custom.sty") isfile(custom) ? cp(custom, "custom.sty"; force = true) : touch("custom.sty") + cp(settings.code_listings == "minted" ? MINTED_PATH : LISTINGS_PATH, "code_listings.sty") + + custom_preamble_file = joinpath(doc.user.root, doc.user.source, "assets", "preamble.tex") if isfile(custom_preamble_file) # copy custom preamble. @@ -266,15 +282,15 @@ end # as the top-level blocks of a page, or somewhere deeper in the AST. istoplevel(n::Node) = !isnothing(n.parent) && isa(n.parent.element, MarkdownAST.Document) -latex(io::Context, node::Node) = latex(io, node, node.element) -latex(io::Context, node::Node, e) = error("$(typeof(e)) not implemented: $e") +latex(io::Context, node::Node; settings::LaTeX=LaTeX()) = latex(io, node, node.element; settings=settings) +latex(io::Context, node::Node, e; settings::LaTeX=LaTeX()) = error("$(typeof(e)) not implemented: $e") -function latex(io::Context, children; toplevel = false) +function latex(io::Context, children; toplevel=false, settings::LaTeX=LaTeX()) @assert eltype(children) <: MarkdownAST.Node for node in children otherelement = !isa(node.element, NoExtraTopLevelNewlines) toplevel && otherelement && _println(io) - latex(io, node) + latex(io, node; settings=settings) toplevel && otherelement && _println(io) end end @@ -288,21 +304,21 @@ const NoExtraTopLevelNewlines = Union{ Documenter.MetaNode, } -function latex(io::Context, node::Node, ah::Documenter.AnchoredHeader) +function latex(io::Context, node::Node, ah::Documenter.AnchoredHeader; settings::LaTeX=LaTeX()) anchor = ah.anchor # latex(io::IO, anchor::Anchor, page, doc) id = _hash(Documenter.anchor_label(anchor)) - latex(io, node.children; toplevel = istoplevel(node)) + latex(io, node.children; toplevel=istoplevel(node), settings=settings) _println(io, "\n\\label{", id, "}{}\n") end ## Documentation Nodes. -function latex(io::Context, node::Node, ::Documenter.DocsNodesBlock) - latex(io, node.children; toplevel = istoplevel(node)) +function latex(io::Context, node::Node, ::Documenter.DocsNodesBlock; settings::LaTeX=LaTeX()) + latex(io, node.children; toplevel=istoplevel(node), settings=settings) end -function latex(io::Context, node::Node, docs::Documenter.DocsNode) +function latex(io::Context, node::Node, docs::Documenter.DocsNode; settings::LaTeX=LaTeX()) node, ast = docs, node # latex(io::IO, node::Documenter.DocsNode, page, doc) id = _hash(Documenter.anchor_label(node.anchor)) @@ -313,18 +329,18 @@ function latex(io::Context, node::Node, docs::Documenter.DocsNode) _println(io, " -- {", Documenter.doccat(node.object), ".}\n") # # Body. May contain several concatenated docstrings. _println(io, "\\begin{adjustwidth}{2em}{0pt}") - latexdoc(io, ast) + latexdoc(io, ast; settings=settings) _println(io, "\n\\end{adjustwidth}") end -function latexdoc(io::IO, node::Node) +function latexdoc(io::IO, node::Node; settings::LaTeX=LaTeX()) @assert node.element isa Documenter.DocsNode # The `:results` field contains a vector of `Docs.DocStr` objects associated with # each markdown object. The `DocStr` contains data such as file and line info that # we need for generating correct source links. for (docstringast, result) in zip(node.element.mdasts, node.element.results) _println(io) - latex(io, docstringast.children) + latex(io, docstringast.children; settings=settings) _println(io) # When a source link is available then print the link. url = Documenter.source_url(io.doc, result) @@ -337,7 +353,7 @@ end ## Index, Contents, and Eval Nodes. -function latex(io::Context, node::Node, index::Documenter.IndexNode) +function latex(io::Context, node::Node, index::Documenter.IndexNode; settings::LaTeX=LaTeX()) # Having an empty itemize block in LaTeX throws an error, so we bail early # in that situation: isempty(index.elements) && (_println(io); return) @@ -354,7 +370,7 @@ function latex(io::Context, node::Node, index::Documenter.IndexNode) _println(io, "\\end{itemize}\n") end -function latex(io::Context, node::Node, contents::Documenter.ContentsNode) +function latex(io::Context, node::Node, contents::Documenter.ContentsNode; settings::LaTeX=LaTeX()) # Having an empty itemize block in LaTeX throws an error, so we bail early # in that situation: isempty(contents.elements) && (_println(io); return) @@ -387,7 +403,7 @@ function latex(io::Context, node::Node, contents::Documenter.ContentsNode) # Print the corresponding \item statement id = _hash(Documenter.anchor_label(anchor)) _print(io, "\\item \\hyperlinkref{", id, "}{") - latex(io, header.children) + latex(io, header.children; settings=settings) _println(io, "}") end # print any remaining missing \end{itemize} statements @@ -395,19 +411,19 @@ function latex(io::Context, node::Node, contents::Documenter.ContentsNode) _println(io) end -function latex(io::Context, node::Node, evalnode::Documenter.EvalNode) +function latex(io::Context, node::Node, evalnode::Documenter.EvalNode; settings::LaTeX=LaTeX()) if evalnode.result !== nothing - latex(io, evalnode.result.children, toplevel = true) + latex(io, evalnode.result.children; toplevel=true, settings=settings) end end # Select the "best" representation for LaTeX output. using Base64: base64decode -latex(io::Context, node::Node, ::Documenter.MultiOutput) = latex(io, node.children) -function latex(io::Context, node::Node, moe::Documenter.MultiOutputElement) - Base.invokelatest(latex, io, node, moe.element) +latex(io::Context, node::Node, ::Documenter.MultiOutput; settings::LaTeX=LaTeX()) = latex(io, node.children; settings=settings) +function latex(io::Context, node::Node, moe::Documenter.MultiOutputElement; settings::LaTeX=LaTeX()) + Base.invokelatest(latex, io, node, moe.element; settings=settings) end -function latex(io::Context, ::Node, d::Dict{MIME,Any}) +function latex(io::Context, ::Node, d::Dict{MIME,Any}; settings::LaTeX=LaTeX()) filename = String(rand('a':'z', 7)) if haskey(d, MIME"image/png"()) write("$(filename).png", base64decode(d[MIME"image/png"()])) @@ -446,14 +462,14 @@ function latex(io::Context, ::Node, d::Dict{MIME,Any}) elseif haskey(d, MIME"text/markdown"()) md = Markdown.parse(d[MIME"text/markdown"()]) ast = MarkdownAST.convert(MarkdownAST.Node, md) - latex(io, ast.children) + latex(io, ast.children; settings=settings) elseif haskey(d, MIME"text/plain"()) text = d[MIME"text/plain"()] out = repr(MIME"text/plain"(), ANSIColoredPrinters.PlainTextPrinter(IOBuffer(text))) # We set a "fake" language as text/plain so that the writer knows how to # deal with it. codeblock = MarkdownAST.CodeBlock("text/plain", out) - latex(io, MarkdownAST.Node(codeblock)) + latex(io, MarkdownAST.Node(codeblock); settings=settings) else error("this should never happen.") end @@ -463,13 +479,13 @@ end ## Basic Nodes. AKA: any other content that hasn't been handled yet. -function latex(io::Context, node::Node, heading::MarkdownAST.Heading) +function latex(io::Context, node::Node, heading::MarkdownAST.Heading; settings::LaTeX=LaTeX()) N = heading.level # latex(io::IO, h::Markdown.Header{N}) where N tag = DOCUMENT_STRUCTURE[min(io.depth + N - 1, length(DOCUMENT_STRUCTURE))] _print(io, "\\", tag, "{") io.in_header = true - latex(io, node.children) + latex(io, node.children; settings=settings) io.in_header = false # {sub}pagragraphs need an explicit `\indent` after them # to ensure the following text is on a new line. Others @@ -487,7 +503,7 @@ const LEXER = Set([ "text", ]) -function latex(io::Context, node::Node, code::MarkdownAST.CodeBlock) +function latex(io::Context, node::Node, code::MarkdownAST.CodeBlock; settings::LaTeX=LaTeX()) language = Documenter.codelang(code.info) if language == "julia-repl" language = "jlcon" # the julia-repl is called "jlcon" in Pygments @@ -498,6 +514,7 @@ function latex(io::Context, node::Node, code::MarkdownAST.CodeBlock) text = IOBuffer(code.code) code_code = repr(MIME"text/plain"(), ANSIColoredPrinters.PlainTextPrinter(text)) escape = '⊻' ∈ code_code + if settings.code_listings == "minted" _print(io, "\n\\begin{minted}") if escape _print(io, "[escapeinside=\\#\\%") @@ -515,10 +532,61 @@ function latex(io::Context, node::Node, code::MarkdownAST.CodeBlock) _print(io, code_code) end _println(io, "\n\\end{minted}\n") + elseif settings.code_listings == "listings" + _print(io, "\n\\begin{lstlisting}") + if escape + _print(io, "[escapeinside=\\#\\%") + end + if language == "text/plain" + _print(io, escape ? "," : "[") + # Special-case the formatting of code outputs from Julia. + _println(io, "xleftmargin=-\\fboxsep,xrightmargin=-\\fboxsep,bgcolor=white,frame=single]{text}") + elseif language == "jlcon" + _println(io, escape ? ",language=julia, style=jlcodestyle]{" : "{", language, "}") + else + _println(io, escape ? "]{" : "{", language, "}") + end + if escape + _print_code_escapes_minted(io, code_code) + else + _print(io, code_code) + end + _println(io, "\n\\end{lstlisting}\n") + + + + if language == "text/plain" + _print(io, "\n\\begin{lstlisting}") + if escape + _print(io, "[escapeinside=\\#\\%") + end + _print(io, escape ? "," : "[") + # Special-case the formatting of code outputs from Julia. + _println(io, "xleftmargin=-\\fboxsep,xrightmargin=-\\fboxsep,bgcolor=white,frame=single]{text}") + if escape + _print_code_escapes_minted(io, code_code) + else + _print(io, code_code) + end + _println(io, "\n\\end{lstlisting}\n") + elseif language == "jlcon" + _print(io, "\n\\begin{lstlisting}[language=julia, style=jlcodestyle,") + if escape + _print(io, "[escapeinside=\\#\\%") + end + _println(io, escape ? "]{" : "{", language, "}") + if escape + _print_code_escapes_minted(io, code_code) + else + _print(io, code_code) + end + _println(io, "\n\\end{lstlisting}\n") + end + end return end -latex(io::Context, node::Node, mcb::Documenter.MultiCodeBlock) = latex(io, node, join_multiblock(node)) +latex(io::Context, node::Node, mcb::Documenter.MultiCodeBlock; settings::LaTeX=LaTeX()) = latex(io, node, join_multiblock(node); settings=settings) function join_multiblock(node::Node) @assert node.element isa Documenter.MultiCodeBlock io = IOBuffer() @@ -544,7 +612,7 @@ function _print_code_escapes_minted(io, s::AbstractString) end end -function latex(io::Context, node::Node, code::MarkdownAST.Code) +function latex(io::Context, node::Node, code::MarkdownAST.Code; settings::LaTeX=LaTeX()) _print(io, "\\texttt{") _print_code_escapes_inline(io, code.code) _print(io, "}") @@ -557,18 +625,18 @@ function _print_code_escapes_inline(io, s::AbstractString) end end -function latex(io::Context, node::Node, ::MarkdownAST.Paragraph) - latex(io, node.children) +function latex(io::Context, node::Node, ::MarkdownAST.Paragraph; settings::LaTeX=LaTeX()) + latex(io, node.children; settings=settings) _println(io, "\n") end -function latex(io::Context, node::Node, ::MarkdownAST.BlockQuote) +function latex(io::Context, node::Node, ::MarkdownAST.BlockQuote; settings::LaTeX=LaTeX()) wrapblock(io, "quote") do - latex(io, node.children) + latex(io, node.children; settings=settings) end end -function latex(io::Context, node::Node, md::MarkdownAST.Admonition) +function latex(io::Context, node::Node, md::MarkdownAST.Admonition; settings::LaTeX=LaTeX()) color = "admonition-default" if md.category in ("danger", "warning", "note", "info", "tip", "compat") color = "admonition-$(md.category)" @@ -578,19 +646,19 @@ function latex(io::Context, node::Node, md::MarkdownAST.Admonition) _print(io, "title=\\textbf{") latexesc(io, md.title) _println(io, "}]") - latex(io, node.children) + latex(io, node.children; settings=settings) _println(io, "\\end{tcolorbox}") return end -function latex(io::Context, node::Node, f::MarkdownAST.FootnoteDefinition) +function latex(io::Context, node::Node, f::MarkdownAST.FootnoteDefinition; settings::LaTeX=LaTeX()) id = get(io.footnotes, f.id, 1) _print(io, "\\footnotetext[", id, "]{") - latex(io, node.children) + latex(io, node.children; settings=settings) _println(io, "}") end -function latex(io::Context, node::Node, list::MarkdownAST.List) +function latex(io::Context, node::Node, list::MarkdownAST.List; settings::LaTeX=LaTeX()) # TODO: MarkdownAST doesn't support lists starting at arbitrary numbers isordered = (list.type === :ordered) ordered = (list.type === :bullet) ? -1 : 1 @@ -611,20 +679,20 @@ function latex(io::Context, node::Node, list::MarkdownAST.List) wrapblock(io, "itemize") do for (n, item) in enumerate(node.children) _print(io, "\\item$(fmt(n)) ") - latex(io, item.children) + latex(io, item.children; settings=settings) n < length(node.children) && _println(io) end end end -function latex(io::Context, node::Node, e::MarkdownAST.ThematicBreak) +function latex(io::Context, node::Node, e::MarkdownAST.ThematicBreak; settings::LaTeX=LaTeX()) _println(io, "{\\rule{\\textwidth}{1pt}}") end # This (equation*, split) math env seems to be the only way to correctly render all the # equations in the Julia manual. However, if the equation is already wrapped in # align/align*, then there is no need to further wrap it (in fact, it will break). -function latex(io::Context, node::Node, math::MarkdownAST.DisplayMath) +function latex(io::Context, node::Node, math::MarkdownAST.DisplayMath; settings::LaTeX=LaTeX()) if occursin(r"^\\begin\{align\*?\}", math.math) _print(io, math.math) else @@ -634,7 +702,7 @@ function latex(io::Context, node::Node, math::MarkdownAST.DisplayMath) end end -function latex(io::Context, node::Node, table::MarkdownAST.Table) +function latex(io::Context, node::Node, table::MarkdownAST.Table; settings::LaTeX=LaTeX()) rows = MarkdownAST.tablerows(node) _println(io, "\n\\begin{table}[h]\n\\centering") _print(io, "\\begin{tabulary}{\\linewidth}") @@ -643,7 +711,7 @@ function latex(io::Context, node::Node, table::MarkdownAST.Table) for (i, row) in enumerate(rows) for (j, cell) in enumerate(row.children) j === 1 || _print(io, " & ") - latex(io, cell.children) + latex(io, cell.children; settings=settings) end _println(io, " \\\\") if i === 1 @@ -656,29 +724,29 @@ function latex(io::Context, node::Node, table::MarkdownAST.Table) end spec_to_align(spec::Symbol) = Symbol(first(String(spec))) -function latex(io::Context, node::Node, raw::Documenter.RawNode) +function latex(io::Context, node::Node, raw::Documenter.RawNode; settings::LaTeX=LaTeX()) raw.name === :latex ? _println(io, "\n", raw.text, "\n") : nothing end # Inline Elements. -function latex(io::Context, node::Node, e::MarkdownAST.Text) +function latex(io::Context, node::Node, e::MarkdownAST.Text; settings::LaTeX=LaTeX()) latexesc(io, e.text) end -function latex(io::Context, node::Node, e::MarkdownAST.Strong) +function latex(io::Context, node::Node, e::MarkdownAST.Strong; settings::LaTeX=LaTeX()) wrapinline(io, "textbf") do latex(io, node.children) end end -function latex(io::Context, node::Node, e::MarkdownAST.Emph) +function latex(io::Context, node::Node, e::MarkdownAST.Emph; settings::LaTeX=LaTeX()) wrapinline(io, "emph") do latex(io, node.children) end end -function latex(io::Context, node::Node, image::Documenter.LocalImage) +function latex(io::Context, node::Node, image::Documenter.LocalImage; settings::LaTeX=LaTeX()) # TODO: also print the .title field somehow wrapblock(io, "figure") do _println(io, "\\centering") @@ -687,13 +755,13 @@ function latex(io::Context, node::Node, image::Documenter.LocalImage) end _println(io) wrapinline(io, "caption") do - latex(io, node.children) + latex(io, node.children; settings=settings) end _println(io) end end -function latex(io::Context, node::Node, image::MarkdownAST.Image) +function latex(io::Context, node::Node, image::MarkdownAST.Image; settings::LaTeX=LaTeX()) # TODO: also print the .title field somehow wrapblock(io, "figure") do _println(io, "\\centering") @@ -706,22 +774,22 @@ function latex(io::Context, node::Node, image::MarkdownAST.Image) end _println(io) wrapinline(io, "caption") do - latex(io, node.children) + latex(io, node.children; settings=settings) end _println(io) end end -function latex(io::Context, node::Node, f::MarkdownAST.FootnoteLink) +function latex(io::Context, node::Node, f::MarkdownAST.FootnoteLink; settings::LaTeX=LaTeX()) id = get!(io.footnotes, f.id, length(io.footnotes) + 1) _print(io, "\\footnotemark[", id, "]") end -function latex(io::Context, node::Node, link::Documenter.PageLink) +function latex(io::Context, node::Node, link::Documenter.PageLink; settings::LaTeX=LaTeX()) # If we're in a header, we don't want to print any \hyperlinkref commands, # so we handle this here. if io.in_header - latex(io, node.children) + latex(io, node.children; settings=settings) return end # This branch is the normal case, when we're not in a header. @@ -738,11 +806,11 @@ function latex(io::Context, node::Node, link::Documenter.PageLink) end end _print(io, "{") - latex(io, node.children) + latex(io, node.children; settings=settings) _print(io, "}") end -function latex(io::Context, node::Node, link::Documenter.LocalLink) +function latex(io::Context, node::Node, link::Documenter.LocalLink; settings::LaTeX=LaTeX()) # If we're in a header, we don't want to print any \hyperlinkref commands, # so we handle this here. if io.in_header @@ -756,11 +824,11 @@ function latex(io::Context, node::Node, link::Documenter.LocalLink) latexesc(io, href) end _print(io, "{") - latex(io, node.children) + latex(io, node.children; settings=settings) _print(io, "}") end -function latex(io::Context, node::Node, link::MarkdownAST.Link) +function latex(io::Context, node::Node, link::MarkdownAST.Link; settings::LaTeX=LaTeX()) # If we're in a header, we don't want to print any \hyperlinkref commands, # so we handle this here. if io.in_header @@ -773,11 +841,11 @@ function latex(io::Context, node::Node, link::MarkdownAST.Link) latexesc(io, link.destination) end _print(io, "{") - latex(io, node.children) + latex(io, node.children; settings=settings) _print(io, "}") end -function latex(io::Context, node::Node, math::MarkdownAST.InlineMath) +function latex(io::Context, node::Node, math::MarkdownAST.InlineMath; settings::LaTeX=LaTeX()) # Handle MathJax and TeX inconsistency since the first wants `\LaTeX` wrapped # in math delims, whereas actual TeX fails when that is done. math.math == "\\LaTeX" ? _print(io, math.math) : _print(io, "\\(", math.math, "\\)") @@ -785,10 +853,10 @@ end # Metadata Nodes get dropped from the final output for every format but are needed throughout # rest of the build and so we just leave them in place and print a blank line in their place. -latex(io::Context, node::Node, ::Documenter.MetaNode) = _println(io, "\n") +latex(io::Context, node::Node, ::Documenter.MetaNode; settings::LaTeX=LaTeX()) = _println(io, "\n") # In the original AST, SetupNodes were just mapped to empty Markdown.MD() objects. -latex(io::Context, node::Node, ::Documenter.SetupNode) = nothing +latex(io::Context, node::Node, ::Documenter.SetupNode; settings::LaTeX=LaTeX()) = nothing function latex(io::Context, node::Node, value::MarkdownAST.JuliaValue) @warn(""" @@ -805,7 +873,7 @@ function latex(io::Context, node::Node, value::MarkdownAST.JuliaValue) end # TODO: Implement SoftBreak, Backslash (but they don't appear in standard library Markdown conversions) -latex(io::Context, node::Node, ::MarkdownAST.LineBreak) = _println(io, "\\\\") +latex(io::Context, node::Node, ::MarkdownAST.LineBreak; settings::LaTeX=LaTeX()) = _println(io, "\\\\") # Documenter. @@ -873,6 +941,6 @@ function files!(out, p::Pair{<:AbstractString,<:Any}, depth) return out end -files(v::Vector) = files!(Tuple{String, String, Int}[], v, 0) +files(v::Vector) = files!(Tuple{String,String,Int}[], v, 0) end diff --git a/test/examples/make.jl b/test/examples/make.jl index c1e64d7af5..263628106d 100644 --- a/test/examples/make.jl +++ b/test/examples/make.jl @@ -706,8 +706,8 @@ end examples_latex_texonly_doc = if "latex_texonly" in EXAMPLE_BUILDS @info("Building mock package docs: LaTeXWriter/latex_texonly") - @quietly makedocs( - format = Documenter.LaTeX(platform = "none"), + makedocs( + format = Documenter.LaTeX(platform = "none", code_listings="listings"), sitename = "Documenter LaTeX", root = examples_root, build = "builds/latex_texonly", diff --git a/test/runtests.jl b/test/runtests.jl index 58240e2b8e..819e653422 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -72,8 +72,8 @@ end include("latexwriter.jl") # Deployment configurations - include("deployconfig.jl") - include("deploydocs.jl") + # include("deployconfig.jl") + # include("deploydocs.jl") # Mock package docs. include("examples/tests.jl") From 978ace80c563dd1c4581afcec750f3aed77e43c9 Mon Sep 17 00:00:00 2001 From: BambOoxX <42067365+BambOoxX@users.noreply.github.com> Date: Wed, 15 Nov 2023 17:05:10 +0100 Subject: [PATCH 2/8] Add missing `settings` --- src/latex/LaTeXWriter.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/latex/LaTeXWriter.jl b/src/latex/LaTeXWriter.jl index 6e12fae852..d3a34bd37d 100644 --- a/src/latex/LaTeXWriter.jl +++ b/src/latex/LaTeXWriter.jl @@ -135,7 +135,7 @@ function render(doc::Documenter.Document, settings::LaTeX=LaTeX()) if get(page.globals.meta, :IgnorePage, :none) !== :latex context.depth = depth + (isempty(title) ? 0 : 1) context.depth > depth && _println(context, header_text) - latex(context, page.mdast.children; toplevel=true) + latex(context, page.mdast.children; toplevel=true, settings=settings) end end end @@ -736,13 +736,13 @@ end function latex(io::Context, node::Node, e::MarkdownAST.Strong; settings::LaTeX=LaTeX()) wrapinline(io, "textbf") do - latex(io, node.children) + latex(io, node.children; settings=settings) end end function latex(io::Context, node::Node, e::MarkdownAST.Emph; settings::LaTeX=LaTeX()) wrapinline(io, "emph") do - latex(io, node.children) + latex(io, node.children; settings=settings) end end @@ -814,7 +814,7 @@ function latex(io::Context, node::Node, link::Documenter.LocalLink; settings::La # If we're in a header, we don't want to print any \hyperlinkref commands, # so we handle this here. if io.in_header - latex(io, node.children) + latex(io, node.children; settings=settings) return end # This branch is the normal case, when we're not in a header. @@ -832,7 +832,7 @@ function latex(io::Context, node::Node, link::MarkdownAST.Link; settings::LaTeX= # If we're in a header, we don't want to print any \hyperlinkref commands, # so we handle this here. if io.in_header - latex(io, node.children) + latex(io, node.children; settings=settings) return end # This branch is the normal case, when we're not in a header. @@ -858,7 +858,7 @@ latex(io::Context, node::Node, ::Documenter.MetaNode; settings::LaTeX=LaTeX()) = # In the original AST, SetupNodes were just mapped to empty Markdown.MD() objects. latex(io::Context, node::Node, ::Documenter.SetupNode; settings::LaTeX=LaTeX()) = nothing -function latex(io::Context, node::Node, value::MarkdownAST.JuliaValue) +function latex(io::Context, node::Node, value::MarkdownAST.JuliaValue; settings::LaTeX=LaTeX()) @warn(""" Unexpected Julia interpolation in the Markdown. This probably means that you have an unbalanced or un-escaped \$ in the text. From f64d50749921abe50d5a61f5e85073361a0e572b Mon Sep 17 00:00:00 2001 From: BambOoxX <42067365+BambOoxX@users.noreply.github.com> Date: Wed, 15 Nov 2023 17:18:12 +0100 Subject: [PATCH 3/8] Add `latex_listings_texonly` example - Revert modification of `latex_texonly` --- test/examples/make.jl | 50 +++- .../references/latex_simple_listings.tex | 257 ++++++++++++++++++ test/examples/tests.jl | 11 + 3 files changed, 316 insertions(+), 2 deletions(-) create mode 100644 test/examples/references/latex_simple_listings.tex diff --git a/test/examples/make.jl b/test/examples/make.jl index 263628106d..7002b4c2ec 100644 --- a/test/examples/make.jl +++ b/test/examples/make.jl @@ -20,7 +20,7 @@ else ["html", "html-meta-custom", "html-mathjax2-custom", "html-mathjax3", "html-mathjax3-custom", "html-local", "html-draft", "html-repo-git", "html-repo-nothing", "html-repo-error", "html-sizethreshold-defaults-fail", "html-sizethreshold-success", "html-sizethreshold-ignore-success", "html-sizethreshold-override-fail", "html-sizethreshold-ignore-success", "html-sizethreshold-ignore-fail", - "latex_texonly", "latex_simple_texonly", "latex_showcase_texonly", "html-pagesonly"] + "latex_texonly", "latex_simple_texonly","latex_listings_texonly", "latex_showcase_texonly", "html-pagesonly"] end # Modules `Mod` and `AutoDocs` @@ -707,7 +707,7 @@ end examples_latex_texonly_doc = if "latex_texonly" in EXAMPLE_BUILDS @info("Building mock package docs: LaTeXWriter/latex_texonly") makedocs( - format = Documenter.LaTeX(platform = "none", code_listings="listings"), + format = Documenter.LaTeX(platform = "none"), sitename = "Documenter LaTeX", root = examples_root, build = "builds/latex_texonly", @@ -750,6 +750,52 @@ else nothing end +examples_latex_listings_texonly_doc = if "latex_listings_texonly" in EXAMPLE_BUILDS + @info("Building mock package docs: LaTeXWriter/latex_listings_texonly") + makedocs( + format=Documenter.LaTeX(platform="none", code_listings="listings"), + sitename="Documenter LaTeX", + root=examples_root, + build="builds/latex_listings_texonly", + pages=Any[ + "General"=>[ + "index.md", + "latex.md", + "unicode.md", + hide("hidden.md"), + "example-output.md", + "linenumbers.md", + ], + # SVG images nor code blocks in footnotes are allowed in LaTeX + # "Manual" => [ + # "man/tutorial.md", + # "man/style.md", + # ], + hide("Hidden Pages" => "hidden/index.md", Any[ + "Page X"=>"hidden/x.md", + "hidden/y.md", + "hidden/z.md", + ]), + "Library"=>[ + "lib/functions.md", + "lib/autodocs.md", + ], + "Expandorder"=>[ + "expandorder/00.md", + "expandorder/01.md", + "expandorder/AA.md", + ], + ], + doctest=false, + debug=true, + warnonly=[:footnote, :cross_references, :example_block, :eval_block], + ) +else + @info "Skipping build: LaTeXWriter/latex_listings_texonly" + @debug "Controlling variables:" EXAMPLE_BUILDS get(ENV, "DOCUMENTER_TEST_EXAMPLES", nothing) + nothing +end + examples_latex_simple_texonly_doc = if "latex_simple_texonly" in EXAMPLE_BUILDS @info("Building mock package docs: LaTeXWriter/latex_simple_texonly") @quietly makedocs( diff --git a/test/examples/references/latex_simple_listings.tex b/test/examples/references/latex_simple_listings.tex new file mode 100644 index 0000000000..c7b83bba3d --- /dev/null +++ b/test/examples/references/latex_simple_listings.tex @@ -0,0 +1,257 @@ +% Useful variables +\newcommand{\DocMainTitle}{Documenter LaTeX Simple Non-Docker} +\newcommand{\DocVersion}{1.2.3} +\newcommand{\DocAuthors}{} +\newcommand{\JuliaVersion}{1.9.3} + +% ---- Insert preamble +\input{preamble.tex} + + +\part{Main section} + + +\chapter{Simple LaTeX build} + + + +\label{12986824182765986604}{} + + +This build only contains a single paragraph of text to make sure that a near-empty LaTeX builds passes. + + + + +\begin{minted}{jlcon} +julia> 127 % Int8 +127 +\end{minted} + + + +\section{Issue 1119} + + + +\label{496847156375218796}{} + + + +\begin{minted}[escapeinside=\#\%]{julia} +1 #%% 2 +1 #\unicodeveebar% 2 +1 | 2 +\end{minted} + + + +\section{Escaping: {\textasciitilde}, {\textasciicircum}, {\textbackslash}, {\textquotesingle}, {\textquotedbl}, \_, \&, \%, {\textbackslash}, \$, \#, \{ and \}.} + + + +\label{13534704973354818981}{} + + +{\textasciitilde}, {\textasciicircum}, {\textbackslash}, {\textquotesingle}, {\textquotedbl}, \_, \&, \%, {\textbackslash}, \$, \#, \{ and \}. + + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-info!50!white,colframe=admonition-info,title=\textbf{{\textasciitilde}, {\textasciicircum}, {\textbackslash}, {\textquotesingle}, {\textquotedbl}, \_, \&, \%, {\textbackslash}, \$, \#, \{ and \}.}] +{\textasciitilde}, {\textasciicircum}, {\textbackslash}, {\textquotesingle}, {\textquotedbl}, \_, \&, \%, {\textbackslash}, \$, \#, \{ and \}. + +\end{tcolorbox} + + +\section{Issue 1392} + + + +\label{987107409634109244}{} + + + +\begin{minted}{jlcon} +julia> function foo end; +\end{minted} + + + +\section{Issue 1401: rendering custom LaTeX} + + + +\label{1766923436598802013}{} + + +\subsection{@example block / show with \texttt{text/latex} MIME} + + + +\label{12212591717920375664}{} + + + +\begin{minted}{julia} +struct Table end + +Base.show(io, ::MIME"text/latex", ::Table) = write(io, raw""" +\begin{tabular}{r|ccc} + & i & y & z\\ + \hline + & Int64 & Char & Int64\\ + \hline + 1 & 1 & 'A' & 5 \\ + 2 & 2 & 'B' & 6 \\ + 3 & 3 & 'C' & 7 \\ + 4 & 4 & 'D' & 8 \\ +\end{tabular} +""") + +Table() +\end{minted} + +\begin{table}[h] +\centering +\adjustbox{max width=\linewidth}{ +\begin{tabular}{r|ccc} + & i & y & z\\ + \hline + & Int64 & Char & Int64\\ + \hline + 1 & 1 & 'A' & 5 \\ + 2 & 2 & 'B' & 6 \\ + 3 & 3 & 'C' & 7 \\ + 4 & 4 & 'D' & 8 \\ +\end{tabular} +}\end{table} + + +\subsection{@raw block} + + + +\label{12968435574917214693}{} + + + +\begin{tabular}{r|ccc} + & i & y & z\\ + \hline + & Int64 & Char & Int64\\ + \hline + 1 & 1 & 'A' & 5 \\ + 2 & 2 & 'B' & 6 \\ + 3 & 3 & 'C' & 7 \\ + 4 & 4 & 'D' & 8 \\ +\end{tabular} + + + +\subsection{Inline LaTeX} + + + +\label{7647595013011656041}{} + + +\emph{Note: this should render as just text, not as a table.} + + + +{\textbackslash}begin\{tabular\}\{r|ccc\} \& i \& y \& z{\textbackslash} + {\textbackslash}hline \& Int64 \& Char \& Int64{\textbackslash} + {\textbackslash}hline 1 \& 1 \& {\textquotesingle}A{\textquotesingle} \& 5 {\textbackslash} + 2 \& 2 \& {\textquotesingle}B{\textquotesingle} \& 6 {\textbackslash} + 3 \& 3 \& {\textquotesingle}C{\textquotesingle} \& 7 {\textbackslash} + 4 \& 4 \& {\textquotesingle}D{\textquotesingle} \& 8 {\textbackslash} +{\textbackslash}end\{tabular\} + + + +\section{Printing LaTeX from Julia} + + + +\label{10914504187442884412}{} + + +To pretty-print LaTeX from Julia, overload \texttt{Base.show} for the \texttt{MIME{\textquotedbl}text/latex{\textquotedbl}} type. For example: + + + + +\begin{minted}{julia} +struct LaTeXEquation + content::String +end + +function Base.show(io::IO, ::MIME"text/latex", x::LaTeXEquation) + # Wrap in $$ for display math printing + return print(io, "\$\$ " * x.content * " \$\$") +end + +LaTeXEquation(raw""" + \left[\begin{array}{c} + x \\ + y + \end{array}\right] +""") +\end{minted} + +$$ \left[\begin{array}{c} + x \\ + y + \end{array}\right] + $$ + + +\begin{minted}{julia} +struct LaTeXEquation2 + content::String +end + +function Base.show(io::IO, ::MIME"text/latex", x::LaTeXEquation2) + # Wrap in \[...\] for display math printing + return print(io, "\\[ " * x.content * " \\]") +end + +LaTeXEquation2(raw""" + \left[\begin{array}{c} + x \\ + y + \end{array}\right] +""") +\end{minted} + +\[ \left[\begin{array}{c} + x \\ + y + \end{array}\right] + \] + +\section{\texttt{LineBreak} node} + + + +\label{18112929726868774212}{} + + +This sentence\\ +should be over \textbf{multiple\\ +lines}. + + + +\section{Issue 2300} + + + +\label{5494601647308340695}{} + + +You~Shall~Not~Break!~You~Shall~Not~Break!~You~Shall~Not~Break! + + + +\end{document} diff --git a/test/examples/tests.jl b/test/examples/tests.jl index b01201f4b5..0a0e95ea9c 100644 --- a/test/examples/tests.jl +++ b/test/examples/tests.jl @@ -337,6 +337,17 @@ end end end + @testset "PDF/LaTeX: simple listings (TeX only)" begin + doc = Main.examples_latex_listings_texonly_doc + @test isa(doc, Documenter.Documenter.Document) + let build_dir = joinpath(examples_root, "builds", "latex_listings_texonly") + @test joinpath(build_dir, "documenter.sty") |> isfile + texfile = joinpath(build_dir, latex_filename(doc)) + @test isfile(texfile) + @test compare_files(texfile, joinpath(@__DIR__, "references", "latex_simple_listings.tex")) + end + end + @testset "PDF/LaTeX: showcase (TeX only)" begin doc = Main.examples_latex_showcase_texonly_doc @test isa(doc, Documenter.Documenter.Document) From d157febde213549ed0d45c894f0651560da477d3 Mon Sep 17 00:00:00 2001 From: BambOoxX <42067365+BambOoxX@users.noreply.github.com> Date: Wed, 15 Nov 2023 18:23:45 +0100 Subject: [PATCH 4/8] Supress doubled implementation --- src/latex/LaTeXWriter.jl | 42 +++++----------------------------------- 1 file changed, 5 insertions(+), 37 deletions(-) diff --git a/src/latex/LaTeXWriter.jl b/src/latex/LaTeXWriter.jl index d3a34bd37d..b682c7cede 100644 --- a/src/latex/LaTeXWriter.jl +++ b/src/latex/LaTeXWriter.jl @@ -534,17 +534,15 @@ function latex(io::Context, node::Node, code::MarkdownAST.CodeBlock; settings::L _println(io, "\n\\end{minted}\n") elseif settings.code_listings == "listings" _print(io, "\n\\begin{lstlisting}") - if escape - _print(io, "[escapeinside=\\#\\%") - end + _print(io, escape ? "[escapeinside=\\#\\%," : "[") if language == "text/plain" - _print(io, escape ? "," : "[") + # _print(io, escape ? "," : "[") # Special-case the formatting of code outputs from Julia. - _println(io, "xleftmargin=-\\fboxsep,xrightmargin=-\\fboxsep,bgcolor=white,frame=single]{text}") + _println(io, "]") elseif language == "jlcon" - _println(io, escape ? ",language=julia, style=jlcodestyle]{" : "{", language, "}") + _println(io,"language=julia, style=jlcodestyle]") else - _println(io, escape ? "]{" : "{", language, "}") + _println(io, "]") end if escape _print_code_escapes_minted(io, code_code) @@ -552,36 +550,6 @@ function latex(io::Context, node::Node, code::MarkdownAST.CodeBlock; settings::L _print(io, code_code) end _println(io, "\n\\end{lstlisting}\n") - - - - if language == "text/plain" - _print(io, "\n\\begin{lstlisting}") - if escape - _print(io, "[escapeinside=\\#\\%") - end - _print(io, escape ? "," : "[") - # Special-case the formatting of code outputs from Julia. - _println(io, "xleftmargin=-\\fboxsep,xrightmargin=-\\fboxsep,bgcolor=white,frame=single]{text}") - if escape - _print_code_escapes_minted(io, code_code) - else - _print(io, code_code) - end - _println(io, "\n\\end{lstlisting}\n") - elseif language == "jlcon" - _print(io, "\n\\begin{lstlisting}[language=julia, style=jlcodestyle,") - if escape - _print(io, "[escapeinside=\\#\\%") - end - _println(io, escape ? "]{" : "{", language, "}") - if escape - _print_code_escapes_minted(io, code_code) - else - _print(io, code_code) - end - _println(io, "\n\\end{lstlisting}\n") - end end return end From 81a14bc253b161923e91c3835f1aa5cd33f4a25c Mon Sep 17 00:00:00 2001 From: BambOoxX <42067365+BambOoxX@users.noreply.github.com> Date: Sun, 19 Nov 2023 19:58:11 +0100 Subject: [PATCH 5/8] Update of reference test case for listings --- .../references/latex_simple_listings.tex | 3575 ++++++++++++++++- 1 file changed, 3440 insertions(+), 135 deletions(-) diff --git a/test/examples/references/latex_simple_listings.tex b/test/examples/references/latex_simple_listings.tex index c7b83bba3d..07e2463e96 100644 --- a/test/examples/references/latex_simple_listings.tex +++ b/test/examples/references/latex_simple_listings.tex @@ -1,256 +1,3561 @@ % Useful variables -\newcommand{\DocMainTitle}{Documenter LaTeX Simple Non-Docker} -\newcommand{\DocVersion}{1.2.3} +\newcommand{\DocMainTitle}{Documenter LaTeX} +\newcommand{\DocVersion}{} \newcommand{\DocAuthors}{} -\newcommand{\JuliaVersion}{1.9.3} +\newcommand{\JuliaVersion}{1.9.0} % ---- Insert preamble \input{preamble.tex} -\part{Main section} +\part{General} -\chapter{Simple LaTeX build} +\chapter{Documentation} -\label{12986824182765986604}{} +\label{15370268649601208206}{} -This build only contains a single paragraph of text to make sure that a near-empty LaTeX builds passes. +\section{Index Page} +\label{717217368905959711}{} -\begin{minted}{jlcon} -julia> 127 % Int8 -127 -\end{minted} +\begin{itemize} +\item \hyperlinkref{15370268649601208206}{Documentation} +\begin{itemize} +\item \hyperlinkref{717217368905959711}{Index Page} +\item \hyperlinkref{10013362338599846780}{Functions Contents} +\item \hyperlinkref{408188879749078986}{Tutorial Contents} +\item \hyperlinkref{6663683553518785561}{Index} +\begin{itemize} +\item \hyperlinkref{6314011214927757498}{Embedded \texttt{@ref} links headers: \hyperlinkref{14245046751182637566}{\texttt{ccall}}} +\end{itemize} +\item \hyperlinkref{13874303023969489032}{Raw Blocks} +\end{itemize} +\item \hyperlinkref{3875383913997789590}{Symbols in doctests} +\item \hyperlinkref{11490516876546290289}{Named doctests} +\item \hyperlinkref{8183647306788600377}{Filtered doctests} +\begin{itemize} +\item \hyperlinkref{17096412050555070472}{Global} +\item \hyperlinkref{2476711236624669647}{Local} +\item \hyperlinkref{2821521703884307412}{Errors} +\end{itemize} +\item \hyperlinkref{6180046600625199060}{Doctest keyword arguments} +\begin{itemize} +\item \hyperlinkref{11517531047354431104}{World age issue for show} +\end{itemize} +\item \hyperlinkref{10742780047906711446}{Sanitise module names} +\item \hyperlinkref{2549498190252584856}{Issue398} +\item \hyperlinkref{1744747689002493869}{Issue653} +\item \hyperlinkref{12101809483198928652}{Issue418} +\item \hyperlinkref{142823677432440190}{Issue \#793} +\begin{itemize} +\item \hyperlinkref{15766399429363808344}{Issue \#1148} +\end{itemize} +\item \hyperlinkref{18320015255820629047}{Issue513} +\item \hyperlinkref{11837074900083153011}{Filtering of \texttt{Main.}} +\item \hyperlinkref{14560696320878109942}{Anonymous function declaration} +\item \hyperlinkref{2704106513432579326}{Assigning symbols example} +\item \hyperlinkref{4891343357159032293}{Bad links (Windows)} +\item \hyperlinkref{6848322038670609146}{Rendering text/markdown} +\item \hyperlinkref{12121464878615854585}{Empty heading} +\begin{itemize} +\item \hyperlinkref{13633231208144796923}{} +\end{itemize} +\item \hyperlinkref{987107409634109244}{Issue 1392} +\item \hyperlinkref{16901975118583039516}{Issue 890} +\item \hyperlinkref{12500314249427487157}{Module scrubbing from \texttt{@repl} and \texttt{@example}} +\begin{itemize} +\item \hyperlinkref{10276939801399720769}{Headings in block context} +\end{itemize} +\item \hyperlinkref{8207632397694604507}{JuliaValue} +\item \hyperlinkref{1916796393499649241}{Admonitions} +\begin{itemize} +\item \hyperlinkref{16032070393363005082}{\texttt{@example} outputs to file} +\end{itemize} +\end{itemize} + + +\section{Functions Contents} + + + +\label{10013362338599846780}{} + + + +\section{Tutorial Contents} -\section{Issue 1119} +\label{408188879749078986}{} -\label{496847156375218796}{} +\section{Index} -\begin{minted}[escapeinside=\#\%]{julia} -1 #%% 2 -1 #\unicodeveebar% 2 -1 | 2 -\end{minted} +\label{6663683553518785561}{} +\begin{itemize} +\item \hyperlinkref{11302554442225637105}{\texttt{AutoDocs}} +\item \hyperlinkref{14171230956575570013}{\texttt{Main.AutoDocs.A}} +\item \hyperlinkref{11339106303250130801}{\texttt{Main.AutoDocs.B}} +\item \hyperlinkref{17379154232303623334}{\texttt{Main.AutoDocs.A.K}} +\item \hyperlinkref{3291598769099158785}{\texttt{Main.AutoDocs.B.K}} +\item \hyperlinkref{15441025252371609530}{\texttt{Main.AutoDocs.K}} +\item \hyperlinkref{1070558433006397272}{\texttt{Main.AutoDocs.A.T}} +\item \hyperlinkref{16943270388934614325}{\texttt{Main.AutoDocs.B.T}} +\item \hyperlinkref{6785702989282266947}{\texttt{Main.AutoDocs.Filter.Major}} +\item \hyperlinkref{11704274081303557511}{\texttt{Main.AutoDocs.Filter.Minor1}} +\item \hyperlinkref{4245242374026494985}{\texttt{Main.AutoDocs.Filter.Minor2}} +\item \hyperlinkref{14143981418775697458}{\texttt{Main.AutoDocs.Pages.E.T\_1}} +\item \hyperlinkref{4871421601485935264}{\texttt{Main.AutoDocs.Pages.E.T\_2}} +\item \hyperlinkref{3237252152661731042}{\texttt{Main.AutoDocs.Pages.E.T\_3}} +\item \hyperlinkref{14050452459487205641}{\texttt{Main.AutoDocs.Pages.T}} +\item \hyperlinkref{17100384742613090383}{\texttt{Main.AutoDocs.Pages.T}} +\item \hyperlinkref{5246990970960098088}{\texttt{Main.AutoDocs.Pages.T}} +\item \hyperlinkref{12338358314596597808}{\texttt{Main.AutoDocs.T}} +\item \hyperlinkref{1885743281855441478}{\texttt{Main.Mod.T}} +\item \hyperlinkref{12333874902364664348}{\texttt{Documenter.hide}} +\item \hyperlinkref{8047994080897963665}{\texttt{Main.AutoDocs.A.f}} +\item \hyperlinkref{1354818346142581698}{\texttt{Main.AutoDocs.B.f}} +\item \hyperlinkref{2996493907818938116}{\texttt{Main.AutoDocs.Pages.E.f\_1}} +\item \hyperlinkref{6076055157300971596}{\texttt{Main.AutoDocs.Pages.E.f\_2}} +\item \hyperlinkref{3503352570886681808}{\texttt{Main.AutoDocs.Pages.E.f\_3}} +\item \hyperlinkref{18335012651218585665}{\texttt{Main.AutoDocs.Pages.E.g\_1}} +\item \hyperlinkref{12590794246865857269}{\texttt{Main.AutoDocs.Pages.E.g\_2}} +\item \hyperlinkref{3152146771453799051}{\texttt{Main.AutoDocs.Pages.E.g\_3}} +\item \hyperlinkref{18287295168891819021}{\texttt{Main.AutoDocs.Pages.f}} +\item \hyperlinkref{9950366858879376632}{\texttt{Main.AutoDocs.Pages.f}} +\item \hyperlinkref{16694402067483188119}{\texttt{Main.AutoDocs.Pages.f}} +\item \hyperlinkref{14053004641171891989}{\texttt{Main.AutoDocs.f}} +\item \hyperlinkref{16791148087951682840}{\texttt{Main.Mod.func}} +\item \hyperlinkref{15818938160560313688}{\texttt{Main.Mod.long\_equations\_in\_docstrings}} +\item \hyperlinkref{4796942656392369899}{\texttt{Base.@assert}} +\item \hyperlinkref{8029752041511656628}{\texttt{Base.@time}} +\item \hyperlinkref{7256264955516068825}{\texttt{Main.AutoDocs.@m}} +\item \hyperlinkref{1819148365468180190}{\texttt{Main.AutoDocs.A.@m}} +\item \hyperlinkref{10335956018691630658}{\texttt{Main.AutoDocs.B.@m}} +\end{itemize} -\section{Escaping: {\textasciitilde}, {\textasciicircum}, {\textbackslash}, {\textquotesingle}, {\textquotedbl}, \_, \&, \%, {\textbackslash}, \$, \#, \{ and \}.} +\subsection{Embedded \texttt{@ref} links headers: \texttt{ccall}} -\label{13534704973354818981}{} +\label{6314011214927757498}{} -{\textasciitilde}, {\textasciicircum}, {\textbackslash}, {\textquotesingle}, {\textquotedbl}, \_, \&, \%, {\textbackslash}, \$, \#, \{ and \}. +\href{https://github.com/BambOoxX/Documenter.jl/issues/60}{\#60} \href{https://github.com/BambOoxX/Documenter.jl/issues/61}{\#61} -\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-info!50!white,colframe=admonition-info,title=\textbf{{\textasciitilde}, {\textasciicircum}, {\textbackslash}, {\textquotesingle}, {\textquotedbl}, \_, \&, \%, {\textbackslash}, \$, \#, \{ and \}.}] -{\textasciitilde}, {\textasciicircum}, {\textbackslash}, {\textquotesingle}, {\textquotedbl}, \_, \&, \%, {\textbackslash}, \$, \#, \{ and \}. + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> zeros(5, 5) +5×5 Matrix{Float64}: + 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 + +julia> zeros(50, 50) +50×50 Matrix{Float64}: + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + ⋮ ⋮ ⋱ ⋮ + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +\end{lstlisting} + + + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> [1.0, 2.0, 3.0] +3-element Array{Float64,1}: + 1.0 + 2.0 + 3.0 + +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> println(" "^5) + +julia> "\nfoo\n\nbar\n\n\nbaz" +"\nfoo\n\nbar\n\n\nbaz" + +julia> println(ans) + +foo + +bar + + +baz +\end{lstlisting} + + + +\begin{itemize} +\item \texttt{one} two three + + +\item four \texttt{five} six + + +\item +\begin{lstlisting}[] +one +\end{lstlisting} + +\end{itemize} + + +\section{Raw Blocks} + + + +\label{13874303023969489032}{} + + + + + +\begin{verbatim} + + + + +\end{verbatim} + + + +\chapter{Symbols in doctests} + + + +\label{3875383913997789590}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> a = :undefined +:undefined + +julia> a +:undefined +\end{lstlisting} + + + +\chapter{Named doctests} + + + +\label{11490516876546290289}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> a = 1 +1 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> a + 1 +2 +\end{lstlisting} + + + +\chapter{Filtered doctests} + + + +\label{8183647306788600377}{} + + +\section{Global} + + + +\label{17096412050555070472}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> print("Ptr{0x123456}") +Ptr{0x654321} +\end{lstlisting} + + + +\section{Local} + + + +\label{2476711236624669647}{} + + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> print("foobar") +foobuu +\end{lstlisting} + + + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> print("foobar123") +foobuu456 +\end{lstlisting} + + + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> print("foobar") +foobuu +\end{lstlisting} + + + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> print("foobar") +foobar +\end{lstlisting} + + + + + +\section{Errors} + + + +\label{2821521703884307412}{} + + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> error() +ERROR: +Stacktrace: + [1] error() at ./thisfiledoesnotexist.jl:123456789 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> error() +ERROR: +Stacktrace: +[...] +\end{lstlisting} + + + + + +\chapter{Doctest keyword arguments} + + + +\label{6180046600625199060}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> f(2) +4 + +julia> g(2) +2 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> f(2) +ERROR: UndefVarError: f not defined +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> f(2) +4 + +julia> g(2) +2 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> f(2) +4 + +julia> g(2) +2 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> print("foobar") +foobuu +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> print("foobar123") +foobuu456 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> print("foobar") +foobuu +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> f() +foobuu +\end{lstlisting} + + + + +\begin{lstlisting}[] +foo(a, b) = a * b +foo(2, 3) +\end{lstlisting} + + + +\section{World age issue for show} + + + +\label{11517531047354431104}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> @enum Color red blue green + +julia> instances(Color) +(red, blue, green) +\end{lstlisting} + + + +\chapter{Sanitise module names} + + + +\label{10742780047906711446}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> struct T end + +julia> t = T() +T() + +julia> fullname(@__MODULE__) +(:Main,) + +julia> fullname(Base.Broadcast) +(:Base, :Broadcast) + +julia> @__MODULE__ +Main +\end{lstlisting} + + + +\chapter{Issue398} + + + +\label{2549498190252584856}{} + + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> @define_show_and_make_object q "abcd" +abcd +\end{lstlisting} + + + + + +\chapter{Issue653} + + + +\label{1744747689002493869}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> struct MyException <: Exception + msg::AbstractString + end + +julia> function Base.showerror(io::IO, err::MyException) + print(io, "MyException: ") + print(io, err.msg) + end + +julia> err = MyException("test exception") +MyException("test exception") + +julia> sprint(showerror, err) +"MyException: test exception" + +julia> throw(MyException("test exception")) +ERROR: MyException: test exception +\end{lstlisting} + + + +\chapter{Issue418} + + + +\label{12101809483198928652}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> f(x::Float64) = x +f (generic function with 1 method) + +julia> f("") +ERROR: MethodError: no method matching f(::String) +Closest candidates are: + f(!Matched::Float64) at none:1 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> a = 1 +1 + +julia> b = 2 +2 + +julia> ex = :(a + b) +:(a + b) + +julia> eval(ex) +3 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> ex = :(1 + 5) +:(1 + 5) + +julia> eval(ex) +6 +\end{lstlisting} + + + + +\begin{lstlisting}[] +ex = :(1 + 5) +eval(ex) +\end{lstlisting} + + +\begin{lstlisting}[] +6 +\end{lstlisting} + + + + +\begin{lstlisting}[] +a = 1 +:(a + 1) +\end{lstlisting} + + +\begin{lstlisting}[] +:(a + 1) +\end{lstlisting} + + + +\chapter{Issue \#793} + + + +\label{142823677432440190}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> write("issue793.jl", "\"Hello!\""); + +julia> include("issue793.jl") +"Hello!" + +julia> rm("issue793.jl"); +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> write("issue793.jl", "\"Hello!\"") +8 + +julia> include("issue793.jl") +"Hello!" + +julia> rm("issue793.jl") + +\end{lstlisting} + + + + +\begin{lstlisting}[] +write("issue793.jl", "\"Hello!\"") +r = include("issue793.jl") +rm("issue793.jl") +r +\end{lstlisting} + + +\begin{lstlisting}[] +"Hello!" +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> a = 1 +1 + +julia> ans +1 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> "hello"; "world" +"world" + +julia> ans +"world" +\end{lstlisting} + + + +\section{Issue \#1148} + + + +\label{15766399429363808344}{} + + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> x +1148 + +julia> @assert x == 1148 + +\end{lstlisting} + + + +\chapter{Issue513} + + + +\label{18320015255820629047}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> a = 1 +1 + +julia> ans +1 +\end{lstlisting} + + + +\chapter{Filtering of \texttt{Main.}} + + + +\label{11837074900083153011}{} + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> struct Point end; + +julia> println(Point) +Point + +julia> sqrt(100) +10.0 + +julia> sqrt = 4 +ERROR: cannot assign variable Base.sqrt from module Main +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> g(x::Float64, y) = 2x + y +g (generic function with 1 method) + +julia> g(x, y::Float64) = x + 2y +g (generic function with 2 methods) + +julia> g(2.0, 3) +7.0 + +julia> g(2, 3.0) +8.0 + +julia> g(2.0, 3.0) +ERROR: MethodError: g(::Float64, ::Float64) is ambiguous. Candidates: + g(x, y::Float64) in Main at none:1 + g(x::Float64, y) in Main at none:1 +Possible fix, define + g(::Float64, ::Float64) +\end{lstlisting} + + + +\chapter{Anonymous function declaration} + + + +\label{14560696320878109942}{} + + + +\begin{lstlisting}[] +julia> x->x # ignore error on 0.7 +#1 (generic function with 1 method) +\end{lstlisting} + + + +\chapter{Assigning symbols example} + + + +\label{2704106513432579326}{} + + + +\begin{lstlisting}[] +r = :a +\end{lstlisting} + + +\begin{lstlisting}[] +:a +\end{lstlisting} + + + +\chapter{Bad links (Windows)} + + + +\label{4891343357159032293}{} + + +\begin{itemize} +\item \href{some:path}{Colons not allowed on Windows – \texttt{some:path}} + + +\item \href{:path}{No {\textquotedbl}drive{\textquotedbl} – \texttt{:path}} + + +\item \href{X:{\textbackslash}some{\textbackslash}path}{Absolute Windows paths – \texttt{X:{\textbackslash}some{\textbackslash}path}} + +\end{itemize} + + +\chapter{Rendering text/markdown} + + + +\label{6848322038670609146}{} + + + +\begin{lstlisting}[] +struct MarkdownOnly + value::String +end +Base.show(io::IO, ::MIME"text/markdown", mo::MarkdownOnly) = print(io, mo.value) + +MarkdownOnly(""" +**bold** output from MarkdownOnly +""") +\end{lstlisting} + +\textbf{bold} output from MarkdownOnly + + + +\chapter{Empty heading} + + + +\label{12121464878615854585}{} + + +\section{} + + + +\label{13633231208144796923}{} + + +\chapter{Issue 1392} + + + +\label{987107409634109244}{} + + + +\begin{lstlisting}[] +julia> function foo end; +\end{lstlisting} + + + +\chapter{Issue 890} + + + +\label{16901975118583039516}{} + + +I will pay \$1 if \(x^2\) is displayed correctly. People may also write \$s or even money bag\$\$. + + + +\chapter{Module scrubbing from \texttt{@repl} and \texttt{@example}} + + + +\label{12500314249427487157}{} + + +None of these expressions should result in the gensym{\textquotesingle}d module in the output + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> @__MODULE__ +Main + +julia> println("@__MODULE__ is ", @__MODULE__) # sandbox printed to stdout +@__MODULE__ is Main + +julia> function f() + println("@__MODULE__ is ", @__MODULE__) + @warn "Main as the module for this log message" + @__MODULE__ + end +f (generic function with 1 method) + +julia> f() +@__MODULE__ is Main +┌ Warning: Main as the module for this log message +└ @ Main REPL[3]:3 +Main + +julia> @warn "Main as the module for this log message" +┌ Warning: Main as the module for this log message +└ @ Main REPL[5]:1 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> module A + function f() + println("@__MODULE__ is ", @__MODULE__) + @warn "Main.A as the module for this log message" + @__MODULE__ + end + end +Main.A + +julia> A.f() +@__MODULE__ is Main.A +┌ Warning: Main.A as the module for this log message +└ @ Main.A REPL[1]:4 +Main.A +\end{lstlisting} + + + + +\begin{lstlisting}[] +@__MODULE__ # sandbox as return value +\end{lstlisting} + + +\begin{lstlisting}[] +Main +\end{lstlisting} + + + + +\begin{lstlisting}[] +println("@__MODULE__ is ", @__MODULE__) # sandbox printed to stdout +\end{lstlisting} + + +\begin{lstlisting}[] +@__MODULE__ is Main +\end{lstlisting} + + + + +\begin{lstlisting}[] +function f() + println("@__MODULE__ is ", @__MODULE__) +end +f() +\end{lstlisting} + + +\begin{lstlisting}[] +@__MODULE__ is Main +\end{lstlisting} + + + + +\begin{lstlisting}[] +function f() + @__MODULE__ +end +f() +\end{lstlisting} + + +\begin{lstlisting}[] +Main +\end{lstlisting} + + + + +\begin{lstlisting}[] +@warn "Main as the module for this log message" +\end{lstlisting} + + +\begin{lstlisting}[] +┌ Warning: Main as the module for this log message +└ @ Main index.md:528 +\end{lstlisting} + + + + +\begin{lstlisting}[] +module A + function f() + println("@__MODULE__ is ", @__MODULE__) + @warn "Main.A as the module for this log message" + @__MODULE__ + end +end +\end{lstlisting} + + +\begin{lstlisting}[] +Main.A +\end{lstlisting} + + + + +\begin{lstlisting}[] +A.f() +\end{lstlisting} + + +\begin{lstlisting}[] +Main.A +\end{lstlisting} + + + +\section{Headings in block context} + + + +\label{10276939801399720769}{} + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-default!50!white,colframe=admonition-default,title=\textbf{Blocks in block context}] + +\begin{lstlisting}[] +x^2 +\end{lstlisting} + +Headings: + +\chapter{Heading 1} + +\section{Heading 2} + +\subsection{Heading 3} + +\subsubsection{Heading 4} + +\paragraph{Heading 5}\indent + +\subparagraph{Heading 6}\indent + +\end{tcolorbox} + + +Also in block quotes: + + + +\begin{quote} + +\begin{lstlisting}[] +x^2 +\end{lstlisting} + +Headings: + +\chapter{Heading 1} + +\section{Heading 2} + +\subsection{Heading 3} + +\subsubsection{Heading 4} + +\paragraph{Heading 5}\indent + +\subparagraph{Heading 6}\indent + +\end{quote} + + +\chapter{JuliaValue} + + + +\label{8207632397694604507}{} + + +It is possible to create pseudo-interpolations with the \texttt{Markdown} parser: foo. + + + +[1 2 3; 4 5 6] + + + +They do not get evaluated. + + + +\chapter{Admonitions} + + + +\label{1916796393499649241}{} + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-note!50!white,colframe=admonition-note,title=\textbf{{\textquotesingle}note{\textquotesingle} admonition}] +Admonitions look like this. This is a \texttt{!!! note}-type admonition. + +Note that admonitions themselves can contain other block-level elements too, such as code blocks. E.g. + + +\begin{lstlisting}[] +f(x) = x^2 +\end{lstlisting} + +However, you \textbf{can not} have at-blocks, docstrings, doctests etc. in an admonition. + +Headings are OK though: + +\chapter{Heading 1} + +\section{Heading 2} + +\subsection{Heading 3} + +\subsubsection{Heading 4} + +\paragraph{Heading 5}\indent + +\subparagraph{Heading 6}\indent + +\end{tcolorbox} + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-info!50!white,colframe=admonition-info,title=\textbf{{\textquotesingle}info{\textquotesingle} admonition}] +This is a \texttt{!!! info}-type admonition. + +\end{tcolorbox} + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-tip!50!white,colframe=admonition-tip,title=\textbf{{\textquotesingle}tip{\textquotesingle} admonition}] +This is a \texttt{!!! tip}-type admonition. + +\end{tcolorbox} + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-warning!50!white,colframe=admonition-warning,title=\textbf{{\textquotesingle}warning{\textquotesingle} admonition}] +This is a \texttt{!!! warning}-type admonition. + +\end{tcolorbox} + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-danger!50!white,colframe=admonition-danger,title=\textbf{{\textquotesingle}danger{\textquotesingle} admonition}] +This is a \texttt{!!! danger}-type admonition. + +\end{tcolorbox} + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-compat!50!white,colframe=admonition-compat,title=\textbf{{\textquotesingle}compat{\textquotesingle} admonition}] +This is a \texttt{!!! compat}-type admonition. + +\end{tcolorbox} + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-default!50!white,colframe=admonition-default,title=\textbf{{\textquotesingle}details{\textquotesingle} admonition}] +This is a \texttt{!!! details}-type admonition. + +\end{tcolorbox} + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-default!50!white,colframe=admonition-default,title=\textbf{Unknown admonition class}] +Admonition with an unknown admonition class. + +\end{tcolorbox} + + +\section{\texttt{@example} outputs to file} + + + +\label{16032070393363005082}{} + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("png", :big)] +\end{lstlisting} + +\begin{figure}[H] +\centering +\includegraphics[max width=\linewidth]{kihvxeu} +\end{figure} + + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("png", :tiny)] +\end{lstlisting} + +\begin{figure}[H] +\centering +\includegraphics[max width=\linewidth]{rorjzav} +\end{figure} + + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("webp", :big)] +\end{lstlisting} + + +\begin{lstlisting}[] +MIMEBytes{MIME{Symbol("image/webp")}}(UInt8[0x52, 0x49, 0x46, 0x46, 0x98, 0x51, 0x00, 0x00, 0x57, 0x45 … 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], "d3d30ae9") +\end{lstlisting} + + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("webp", :tiny)] +\end{lstlisting} + + +\begin{lstlisting}[] +MIMEBytes{MIME{Symbol("image/webp")}}(UInt8[0x52, 0x49, 0x46, 0x46, 0xc8, 0x01, 0x00, 0x00, 0x57, 0x45 … 0xe8, 0xe4, 0x31, 0x47, 0x66, 0xd0, 0x11, 0xd4, 0x00, 0x00], "d0a50f8a") +\end{lstlisting} + + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("gif", :big)] +\end{lstlisting} + + +\begin{lstlisting}[] +MIMEBytes{MIME{Symbol("image/gif")}}(UInt8[0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x20, 0x03, 0xb5, 0x02 … 0xcd, 0xd7, 0x7d, 0xed, 0xd7, 0x23, 0x11, 0x10, 0x00, 0x3b], "02bbc9de") +\end{lstlisting} + + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("jpeg", :tiny)] +\end{lstlisting} + +\begin{figure}[H] +\centering +\includegraphics[max width=\linewidth]{ucljeiy} +\end{figure} + + + +\chapter{LaTeX MWEs} + + + +\label{1925292743794655301}{} + + +\section{\texttt{ContentsNode} level jumps} + + + +\label{15118955462992457116}{} + +\begin{itemize} +\item \hyperlinkref{1925292743794655301}{LaTeX MWEs} +\begin{itemize} +\item \hyperlinkref{15118955462992457116}{\texttt{ContentsNode} level jumps} +\begin{itemize} +\item ~ +\begin{itemize} +\item \hyperlinkref{16707865978221737672}{Level 4} +\end{itemize} +\end{itemize} +\item \hyperlinkref{16667177169392038189}{Level 2 again} +\begin{itemize} +\item \hyperlinkref{1607357897553791978}{Level 3} +\end{itemize} +\item \hyperlinkref{8268966452746558956}{Empty \texttt{ContentsNode} and \texttt{IndexNode}} +\end{itemize} +\end{itemize} + + +\subsubsection{Level 4} + + + +\label{16707865978221737672}{} + + +\section{Level 2 again} + + + +\label{16667177169392038189}{} + + +\subsection{Level 3} + + + +\label{1607357897553791978}{} + + +\section{Empty \texttt{ContentsNode} and \texttt{IndexNode}} + + + +\label{8268966452746558956}{} + + + + +\chapter{Unicode} + + + +\label{14828929048168676331}{} + + +Some unicode tests here. + + + +In main sans-serif font: + + + +\begin{itemize} +\item Checkmark: {\textquotedbl}✓{\textquotedbl} + + +\item Cicled plus: {\textquotedbl}⊕{\textquotedbl} + + +\item XOR: {\textquotedbl}⊻{\textquotedbl} + + +\item Exists: {\textquotedbl}∀{\textquotedbl}, forall: {\textquotedbl}∃{\textquotedbl} + +\end{itemize} + + +\texttt{{\textbackslash}begin\{lstlisting\}} is used for non-highlighted blocks: + + + + +\begin{lstlisting}[escapeinside=\#\%,] +xor: #\unicodeveebar% +forall: ∀ +exists: ∃ +check: ✓ +oplus: ⊕ + +What about the other edge cases: \ #%% \#%% #%%\ #%%#%% #%%\#%%#%% +\end{lstlisting} + + + +\texttt{{\textbackslash}begin\{minted\}} is used for highlighted blocks: + + + + +\begin{lstlisting}[escapeinside=\#\%,] +xor: #\unicodeveebar% +forall: ∀ +exists: ∃ +check: ✓ +oplus: ⊕ +\end{lstlisting} + + + +Inlines: + + + +\texttt{xor: \unicodeveebar{} -> \%{\textbackslash}unicodeveebar\% <-} + + + +\texttt{forall: ∀, exists: ∃, check: ✓} + + + +\texttt{\%{\textbackslash}\%\%{\textbackslash}unicodeveebar, oplus: ⊕} + + + +\section{Drawings etc} + + + +\label{4569512277787935494}{} + + + +\begin{lstlisting}[] +┌────────────────────────────────────────────────────────────────────────────┐ +│ ┌───────────────┐ │ +│ HTTP.request(method, uri, headers, body) -> │ HTTP.Response ├──────────────┼┐ +│ │ └───────────────┘ ││ +│ │ ││ +│ │ ┌──────────────────────────────────────┐ ┌──────────────────┐ ││ +│ └───▶│ request(RedirectLayer, ...) │ │ HTTP.StatusError │ ││ +│ └─┬────────────────────────────────────┴─┐ └─────────▲────────┘ ││ +│ │ request(BasicAuthLayer, ...) │ │ ││ +│ └─┬────────────────────────────────────┴─┐ │ ││ +│ │ request(CookieLayer, ...) │ │ ││ +│ └─┬────────────────────────────────────┴─┐ │ ││ +│ │ request(CanonicalizeLayer, ...) │ │ ││ +│ └─┬────────────────────────────────────┴─┐ │ ││ +│ │ request(MessageLayer, ...) ├─────────┼──────┐ ││ +\end{lstlisting} + + + + +\begin{lstlisting}[] + ┌──────────────────────────────────────────────────────────────────────┐ +1 │ ▗▄▞▀▀▀▀▀▀▀▄▄ │ + │ ▄▞▘ ▀▄▖ │ + │ ▄▀ ▝▚▖ │ + │ ▗▞ ▝▄ │ + │ ▞▘ ▝▚▖ │ + │ ▗▀ ▝▚ │ + │ ▞▘ ▀▖ │ + │ ▗▞ ▝▄ │ + │ ▄▘ ▚▖ │ + │ ▗▞ ▝▄ │ + │ ▄▘ ▚▖ │ + │ ▗▀ ▝▚ │ + │ ▗▞▘ ▀▄ │ + │ ▄▀▘ ▀▚▖ │ +0 │ ▄▄▄▄▀▀ ▝▀▚▄▄▄▖│ + └──────────────────────────────────────────────────────────────────────┘ + 0 70 +\end{lstlisting} + + + + +\begin{lstlisting}[] +2×4 DataFrames.DataFrame +│ Row │ a │ b │ c │ d │ +│ │ Int64 │ Float64 │ Int64 │ String │ +├─────┼───────┼─────────┼───────┼────────┤ +│ 1 │ 2 │ 2.0 │ 2 │ John │ +│ 2 │ 2 │ 2.0 │ 2 │ Sally │ +\end{lstlisting} + + + + +\begin{lstlisting}[] +function map_filter_iterators(xs, init) + ret = iterate(xs) + ret === nothing && return + acc = init + @goto filter + local state, x + while true + while true # input + ret = iterate(xs, state) # + ret === nothing && return acc # + @label filter # + x, state = ret # + iseven(x) && break # filter : + end # : + y = 2x # imap : : + acc += y # + : : : + end # : : : : + # + <-- imap <-------- filter <-- input + return acc +end +\end{lstlisting} + + + +\chapter{Hidden (toplevel)} + + + +\label{6313475699066143527}{} + + +\section{Section} + + + +\label{17839007067547789498}{} + + +\chapter{Example stdout} + + + +\label{5127638645760162431}{} + + +Checking that \texttt{@example} output is contained in a specific HTML class. + + + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-warning!50!white,colframe=admonition-warning,title=\textbf{Warning}] +This file should contain exactly one \texttt{@example} for the test to work. + +\end{tcolorbox} + + + +\begin{lstlisting}[] +println("hello") +\end{lstlisting} + + +\begin{lstlisting}[] +hello +\end{lstlisting} + + + +\section{\texttt{@example} outputs to file} + + + +\label{16032070393363005082}{} + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("png", :big)] +\end{lstlisting} + +\begin{figure}[H] +\centering +\includegraphics[max width=\linewidth]{bygqpeb} +\end{figure} + + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("png", :tiny)] +\end{lstlisting} + +\begin{figure}[H] +\centering +\includegraphics[max width=\linewidth]{cpvoych} +\end{figure} + + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("webp", :big)] +\end{lstlisting} + + +\begin{lstlisting}[] +MIMEBytes{MIME{Symbol("image/webp")}}(UInt8[0x52, 0x49, 0x46, 0x46, 0x98, 0x51, 0x00, 0x00, 0x57, 0x45 … 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], "d3d30ae9") +\end{lstlisting} + + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("webp", :tiny)] +\end{lstlisting} + + +\begin{lstlisting}[] +MIMEBytes{MIME{Symbol("image/webp")}}(UInt8[0x52, 0x49, 0x46, 0x46, 0xc8, 0x01, 0x00, 0x00, 0x57, 0x45 … 0xe8, 0xe4, 0x31, 0x47, 0x66, 0xd0, 0x11, 0xd4, 0x00, 0x00], "d0a50f8a") +\end{lstlisting} + + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("gif", :big)] +\end{lstlisting} + + +\begin{lstlisting}[] +MIMEBytes{MIME{Symbol("image/gif")}}(UInt8[0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x20, 0x03, 0xb5, 0x02 … 0xcd, 0xd7, 0x7d, 0xed, 0xd7, 0x23, 0x11, 0x10, 0x00, 0x3b], "02bbc9de") +\end{lstlisting} + + + + +\begin{lstlisting}[] +Main.AT_EXAMPLE_FILES[("jpeg", :tiny)] +\end{lstlisting} + +\begin{figure}[H] +\centering +\includegraphics[max width=\linewidth]{rzsrxiu} +\end{figure} + + + +\subsection{SVG output} + + + +\label{7074750330941949804}{} + + + +\begin{lstlisting}[] +Main.SVG_BIG +\end{lstlisting} + + +\begin{lstlisting}[] +MIMEBytes{MIME{Symbol("image/svg+xml")}}(UInt8[0x3c, 0x3f, 0x78, 0x6d, 0x6c, 0x20, 0x76, 0x65, 0x72, 0x73 … 0x0d, 0x0a, 0x3c, 0x2f, 0x73, 0x76, 0x67, 0x3e, 0x0d, 0x0a], "e162f65e") +\end{lstlisting} + + + +\subsection{\texttt{text/html} fallbacks} + + + +\label{8096659708007340917}{} + + +SVG with just \texttt{text/html} output (in practice, \texttt{DataFrame}s and such would fall into this category): + + + + +\begin{lstlisting}[] +Main.SVG_HTML +\end{lstlisting} + + +\begin{lstlisting}[] +MIMEBytes{MIME{Symbol("text/html")}}(UInt8[0x3c, 0x3f, 0x78, 0x6d, 0x6c, 0x20, 0x76, 0x65, 0x72, 0x73 … 0x0d, 0x0a, 0x3c, 0x2f, 0x73, 0x76, 0x67, 0x3e, 0x0d, 0x0a], "e162f65e") +\end{lstlisting} + + + +SVG with both \texttt{text/html} and \texttt{image/svg+xml} MIME, in which case we expect to pick the image one (because text is too big) and write it to a file. + + + + +\begin{lstlisting}[] +Main.SVG_MULTI +\end{lstlisting} + + +\begin{lstlisting}[] +MultiMIMESVG(UInt8[0x3c, 0x3f, 0x78, 0x6d, 0x6c, 0x20, 0x76, 0x65, 0x72, 0x73 … 0x0d, 0x0a, 0x3c, 0x2f, 0x73, 0x76, 0x67, 0x3e, 0x0d, 0x0a], "e162f65e") +\end{lstlisting} + + + +\chapter{\texttt{@repl}, \texttt{@example}, and \texttt{@eval} have correct \texttt{LineNumberNode}s inserted} + + + +\label{14177920617661754068}{} + + +Add new things at the bottom!! + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> println("@__FILE__ should be REPL[1]: ", @__FILE__) +@__FILE__ should be REPL[1]: REPL[1] + +julia> println("@__FILE__ should be REPL[2]: ", @__FILE__) +@__FILE__ should be REPL[2]: REPL[2] + +julia> println("@__LINE__ should be 1: ", @__LINE__) +@__LINE__ should be 1: 1 + +julia> @warn "@__FILE__ should be REPL[4] and @__LINE__ 1" +┌ Warning: @__FILE__ should be REPL[4] and @__LINE__ 1 +└ @ Main REPL[4]:1 + +julia> begin + println("@__FILE__ should be REPL[5]: ", @__FILE__) + println("@__FILE__ should be REPL[5]: ", @__FILE__) + println("@__LINE__ should be 4: ", @__LINE__) + @warn "@__FILE__ should be REPL[5] and @__LINE__ 5" + end +@__FILE__ should be REPL[5]: REPL[5] +@__FILE__ should be REPL[5]: REPL[5] +@__LINE__ should be 4: 4 +┌ Warning: @__FILE__ should be REPL[5] and @__LINE__ 5 +└ @ Main REPL[5]:5 +\end{lstlisting} + + + + +\begin{lstlisting}[] +println("@__FILE__ should be linenumbers.md: ", @__FILE__) +println("@__LINE__ should be 20: ", @__LINE__) +@warn "@__FILE__ should be linenumbers.md and @__LINE__ 21" +begin + println("@__FILE__ should be linenumbers.md: ", @__FILE__) + println("@__LINE__ should be 24: ", @__LINE__) + @warn "@__FILE__ should be linenumbers.md and @__LINE__ 25" +end +\end{lstlisting} + + +\begin{lstlisting}[] +@__FILE__ should be linenumbers.md: linenumbers.md +@__LINE__ should be 20: 20 +┌ Warning: @__FILE__ should be linenumbers.md and @__LINE__ 21 +└ @ Main linenumbers.md:21 +@__FILE__ should be linenumbers.md: linenumbers.md +@__LINE__ should be 24: 24 +┌ Warning: @__FILE__ should be linenumbers.md and @__LINE__ 25 +└ @ Main linenumbers.md:25 +\end{lstlisting} + + + + +\begin{lstlisting}[] +$(@__FILE__):$(@__LINE__) should be linenumbers.md:32: linenumbers.md:32 +$(@__FILE__):$(@__LINE__) should be linenumbers.md:33: linenumbers.md:33 +\end{lstlisting} + + + +\part{Hidden Pages} + + +\chapter{Hidden pages} + + + +\label{17674588485938683954}{} + + +Pages can be hidden with the \hyperlinkref{12333874902364664348}{\texttt{hide}} function. + + + +\section{List of hidden pages} + + + +\label{11617838668139858457}{} + + +\begin{itemize} +\item \href{hidden{\textbackslash}x.md}{Hidden page 1} + + +\item \href{hidden{\textbackslash}y.md}{Hidden page 2} + + +\item \href{hidden{\textbackslash}z.md}{Hidden page 3} + +\end{itemize} + + +\section{Docs for \texttt{hide}} + + + +\label{1400566111489432392}{} + +\hypertarget{12333874902364664348}{\texttt{Documenter.hide}} -- {Function.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +hide(page) + +\end{lstlisting} + +Allows a page to be hidden in the navigation menu. It will only show up if it happens to be the current page. The hidden page will still be present in the linear page list that can be accessed via the previous and next page links. The title of the hidden page can be overridden using the \texttt{=>} operator as usual. + +\textbf{Usage} + + +\begin{lstlisting}[] +makedocs( + ..., + pages = [ + ..., + hide("page1.md"), + hide("Title" => "page2.md") + ] +) +\end{lstlisting} + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/src/makedocs.jl#L282}{\texttt{source}} + + + +\begin{lstlisting}[] +hide(root, children) + +\end{lstlisting} + +Allows a subsection of pages to be hidden from the navigation menu. \texttt{root} will be linked to in the navigation menu, with the title determined as usual. \texttt{children} should be a list of pages (note that it \textbf{can not} be hierarchical). + +\textbf{Usage} + + +\begin{lstlisting}[] +makedocs( + ..., + pages = [ + ..., + hide("Hidden section" => "hidden_index.md", [ + "hidden1.md", + "Hidden 2" => "hidden2.md" + ]), + hide("hidden_index.md", [...]) + ] +) +\end{lstlisting} + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/src/makedocs.jl#L306}{\texttt{source}} + + +\end{adjustwidth} + +\chapter{Page X} + + +\section{Hidden 1} + + + +\label{1027738413916218921}{} + + +\subsection{First heading} + + + +\label{15441515940141321147}{} + + +\subsection{Second heading} + + + +\label{4961812884660315121}{} + + +\chapter{Hidden 2} + + + +\label{14698839771105993437}{} + + +\chapter{Hidden 3} + + + +\label{4462048914964654574}{} + + +\part{Library} + + + + +\chapter{Function Index} + + + +\label{9596384704859398879}{} + + + +\chapter{Functions} + + + +\label{13536066633202303496}{} + + +\hyperlinkref{14245046751182637566}{\texttt{ccall}}, \hyperlinkref{16791148087951682840}{\texttt{func(x)}}, \hyperlinkref{1885743281855441478}{\texttt{T}}, \hyperlinkref{9105224580875818383}{\texttt{for}}, and \hyperlinkref{15133348314455964692}{\texttt{while}}. + + +\hypertarget{16791148087951682840}{\texttt{Main.Mod.func}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +func(x) +\end{lstlisting} + +\hyperlinkref{1885743281855441478}{\texttt{T}} + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L28-L32}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{1885743281855441478}{\texttt{Main.Mod.T}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +T +\end{lstlisting} + +\hyperlinkref{16791148087951682840}{\texttt{func(x)}} + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L35-L39}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{14245046751182637566}{\texttt{ccall}} -- {Keyword.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +ccall((function_name, library), returntype, (argtype1, ...), argvalue1, ...) +ccall(function_name, returntype, (argtype1, ...), argvalue1, ...) +ccall(function_pointer, returntype, (argtype1, ...), argvalue1, ...) +\end{lstlisting} + +Call a function in a C-exported shared library, specified by the tuple \texttt{(function\_name, library)}, where each component is either a string or symbol. Instead of specifying a library, one can also use a \texttt{function\_name} symbol or string, which is resolved in the current process. Alternatively, \texttt{ccall} may also be used to call a function pointer \texttt{function\_pointer}, such as one returned by \texttt{dlsym}. + +Note that the argument type tuple must be a literal tuple, and not a tuple-valued variable or expression. + +Each \texttt{argvalue} to the \texttt{ccall} will be converted to the corresponding \texttt{argtype}, by automatic insertion of calls to \texttt{unsafe\_convert(argtype, cconvert(argtype, argvalue))}. (See also the documentation for \href{@ref Base.unsafe\_convert}{\texttt{unsafe\_convert}} and \href{@ref Base.cconvert}{\texttt{cconvert}} for further details.) In most cases, this simply results in a call to \texttt{convert(argtype, argvalue)}. + + + +\href{https://github.com/JuliaLang/julia/blob/8e630552924eac54c809aa7bc30871c7df1582d3/base/docs/basedocs.jl#L1219-L1237}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{9105224580875818383}{\texttt{for}} -- {Keyword.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +for +\end{lstlisting} + +\texttt{for} loops repeatedly evaluate a block of statements while iterating over a sequence of values. + +The iteration variable is always a new variable, even if a variable of the same name exists in the enclosing scope. Use \href{@ref}{\texttt{outer}} to reuse an existing local variable for iteration. + +\textbf{Examples} + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> for i in [1, 4, 0] + println(i) + end +1 +4 +0 +\end{lstlisting} + + + +\href{https://github.com/JuliaLang/julia/blob/8e630552924eac54c809aa7bc30871c7df1582d3/base/docs/basedocs.jl#L906-L925}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{15133348314455964692}{\texttt{while}} -- {Keyword.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +while +\end{lstlisting} + +\texttt{while} loops repeatedly evaluate a conditional expression, and continue evaluating the body of the while loop as long as the expression remains true. If the condition expression is false when the while loop is first reached, the body is never evaluated. + +\textbf{Examples} + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> i = 1 +1 + +julia> while i < 5 + println(i) + global i += 1 + end +1 +2 +3 +4 +\end{lstlisting} + + + +\href{https://github.com/JuliaLang/julia/blob/8e630552924eac54c809aa7bc30871c7df1582d3/base/docs/basedocs.jl#L928-L949}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{8029752041511656628}{\texttt{Base.@time}} -- {Macro.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +@time expr +@time "description" expr +\end{lstlisting} + +A macro to execute an expression, printing the time it took to execute, the number of allocations, and the total number of bytes its execution caused to be allocated, before returning the value of the expression. Any time spent garbage collecting (gc), compiling new code, or recompiling invalidated code is shown as a percentage. + +Optionally provide a description string to print before the time report. + +In some cases the system will look inside the \texttt{@time} expression and compile some of the called code before execution of the top-level expression begins. When that happens, some compilation time will not be counted. To include this time you can run \texttt{@time @eval ...}. + +See also \href{@ref}{\texttt{@showtime}}, \href{@ref}{\texttt{@timev}}, \href{@ref}{\texttt{@timed}}, \href{@ref}{\texttt{@elapsed}}, \href{@ref}{\texttt{@allocated}}, and \href{@ref}{\texttt{@allocations}}. + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-note!50!white,colframe=admonition-note,title=\textbf{Note}] +For more serious benchmarking, consider the \texttt{@btime} macro from the BenchmarkTools.jl package which among other things evaluates the function multiple times in order to reduce noise. + +\end{tcolorbox} +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-compat!50!white,colframe=admonition-compat,title=\textbf{Julia 1.8}] +The option to add a description was introduced in Julia 1.8. + +Recompilation time being shown separately from compilation time was introduced in Julia 1.8 + +\end{tcolorbox} + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> x = rand(10,10); + +julia> @time x * x; + 0.606588 seconds (2.19 M allocations: 116.555 MiB, 3.75% gc time, 99.94% compilation time) + +julia> @time x * x; + 0.000009 seconds (1 allocation: 896 bytes) + +julia> @time begin + sleep(0.3) + 1+1 + end + 0.301395 seconds (8 allocations: 336 bytes) +2 + +julia> @time "A one second sleep" sleep(1) +A one second sleep: 1.005750 seconds (5 allocations: 144 bytes) + +julia> for loop in 1:3 + @time loop sleep(1) + end +1: 1.006760 seconds (5 allocations: 144 bytes) +2: 1.001263 seconds (5 allocations: 144 bytes) +3: 1.003676 seconds (5 allocations: 144 bytes) +\end{lstlisting} + + + +\href{https://github.com/JuliaLang/julia/blob/8e630552924eac54c809aa7bc30871c7df1582d3/base/timing.jl#L206-L260}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{4796942656392369899}{\texttt{Base.@assert}} -- {Macro.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +@assert cond [text] +\end{lstlisting} + +Throw an \href{@ref}{\texttt{AssertionError}} if \texttt{cond} is \texttt{false}. Preferred syntax for writing assertions. Message \texttt{text} is optionally displayed upon assertion failure. + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-warning!50!white,colframe=admonition-warning,title=\textbf{Warning}] +An assert might be disabled at various optimization levels. Assert should therefore only be used as a debugging tool and not used for authentication verification (e.g., verifying passwords), nor should side effects needed for the function to work correctly be used inside of asserts. + +\end{tcolorbox} +\textbf{Examples} + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> @assert iseven(3) "3 is an odd number!" +ERROR: AssertionError: 3 is an odd number! + +julia> @assert isodd(3) "What even are numbers?" +\end{lstlisting} + + + +\href{https://github.com/JuliaLang/julia/blob/8e630552924eac54c809aa7bc30871c7df1582d3/base/error.jl#L197-L217}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{6220747639501087335}{\texttt{Main.Mod.func}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +func(x) +\end{lstlisting} + +\hyperlinkref{1885743281855441478}{\texttt{T}} + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L28-L32}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{1083418990168050645}{\texttt{Main.Mod.T}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +T +\end{lstlisting} + +\hyperlinkref{16791148087951682840}{\texttt{func(x)}} + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L35-L39}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{2479356769239817337}{\texttt{ccall}} -- {Keyword.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +ccall((function_name, library), returntype, (argtype1, ...), argvalue1, ...) +ccall(function_name, returntype, (argtype1, ...), argvalue1, ...) +ccall(function_pointer, returntype, (argtype1, ...), argvalue1, ...) +\end{lstlisting} + +Call a function in a C-exported shared library, specified by the tuple \texttt{(function\_name, library)}, where each component is either a string or symbol. Instead of specifying a library, one can also use a \texttt{function\_name} symbol or string, which is resolved in the current process. Alternatively, \texttt{ccall} may also be used to call a function pointer \texttt{function\_pointer}, such as one returned by \texttt{dlsym}. + +Note that the argument type tuple must be a literal tuple, and not a tuple-valued variable or expression. + +Each \texttt{argvalue} to the \texttt{ccall} will be converted to the corresponding \texttt{argtype}, by automatic insertion of calls to \texttt{unsafe\_convert(argtype, cconvert(argtype, argvalue))}. (See also the documentation for \href{@ref Base.unsafe\_convert}{\texttt{unsafe\_convert}} and \href{@ref Base.cconvert}{\texttt{cconvert}} for further details.) In most cases, this simply results in a call to \texttt{convert(argtype, argvalue)}. + + + +\href{https://github.com/JuliaLang/julia/blob/8e630552924eac54c809aa7bc30871c7df1582d3/base/docs/basedocs.jl#L1219-L1237}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{12962926564300866742}{\texttt{for}} -- {Keyword.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +for +\end{lstlisting} + +\texttt{for} loops repeatedly evaluate a block of statements while iterating over a sequence of values. + +The iteration variable is always a new variable, even if a variable of the same name exists in the enclosing scope. Use \href{@ref}{\texttt{outer}} to reuse an existing local variable for iteration. + +\textbf{Examples} + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> for i in [1, 4, 0] + println(i) + end +1 +4 +0 +\end{lstlisting} + + + +\href{https://github.com/JuliaLang/julia/blob/8e630552924eac54c809aa7bc30871c7df1582d3/base/docs/basedocs.jl#L906-L925}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{4254378774946180703}{\texttt{while}} -- {Keyword.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +while +\end{lstlisting} + +\texttt{while} loops repeatedly evaluate a conditional expression, and continue evaluating the body of the while loop as long as the expression remains true. If the condition expression is false when the while loop is first reached, the body is never evaluated. + +\textbf{Examples} + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> i = 1 +1 + +julia> while i < 5 + println(i) + global i += 1 + end +1 +2 +3 +4 +\end{lstlisting} + + + +\href{https://github.com/JuliaLang/julia/blob/8e630552924eac54c809aa7bc30871c7df1582d3/base/docs/basedocs.jl#L928-L949}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{16039636267419312856}{\texttt{Base.@time}} -- {Macro.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +@time expr +@time "description" expr +\end{lstlisting} + +A macro to execute an expression, printing the time it took to execute, the number of allocations, and the total number of bytes its execution caused to be allocated, before returning the value of the expression. Any time spent garbage collecting (gc), compiling new code, or recompiling invalidated code is shown as a percentage. + +Optionally provide a description string to print before the time report. + +In some cases the system will look inside the \texttt{@time} expression and compile some of the called code before execution of the top-level expression begins. When that happens, some compilation time will not be counted. To include this time you can run \texttt{@time @eval ...}. + +See also \href{@ref}{\texttt{@showtime}}, \href{@ref}{\texttt{@timev}}, \href{@ref}{\texttt{@timed}}, \href{@ref}{\texttt{@elapsed}}, \href{@ref}{\texttt{@allocated}}, and \href{@ref}{\texttt{@allocations}}. + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-note!50!white,colframe=admonition-note,title=\textbf{Note}] +For more serious benchmarking, consider the \texttt{@btime} macro from the BenchmarkTools.jl package which among other things evaluates the function multiple times in order to reduce noise. + +\end{tcolorbox} +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-compat!50!white,colframe=admonition-compat,title=\textbf{Julia 1.8}] +The option to add a description was introduced in Julia 1.8. + +Recompilation time being shown separately from compilation time was introduced in Julia 1.8 + +\end{tcolorbox} + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> x = rand(10,10); + +julia> @time x * x; + 0.606588 seconds (2.19 M allocations: 116.555 MiB, 3.75% gc time, 99.94% compilation time) + +julia> @time x * x; + 0.000009 seconds (1 allocation: 896 bytes) + +julia> @time begin + sleep(0.3) + 1+1 + end + 0.301395 seconds (8 allocations: 336 bytes) +2 + +julia> @time "A one second sleep" sleep(1) +A one second sleep: 1.005750 seconds (5 allocations: 144 bytes) + +julia> for loop in 1:3 + @time loop sleep(1) + end +1: 1.006760 seconds (5 allocations: 144 bytes) +2: 1.001263 seconds (5 allocations: 144 bytes) +3: 1.003676 seconds (5 allocations: 144 bytes) +\end{lstlisting} + + + +\href{https://github.com/JuliaLang/julia/blob/8e630552924eac54c809aa7bc30871c7df1582d3/base/timing.jl#L206-L260}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{1046448939276307341}{\texttt{Base.@assert}} -- {Macro.} + +\begin{adjustwidth}{2em}{0pt} + + +\begin{lstlisting}[] +@assert cond [text] +\end{lstlisting} + +Throw an \href{@ref}{\texttt{AssertionError}} if \texttt{cond} is \texttt{false}. Preferred syntax for writing assertions. Message \texttt{text} is optionally displayed upon assertion failure. + +\begin{tcolorbox}[toptitle=-1mm,bottomtitle=1mm,colback=admonition-warning!50!white,colframe=admonition-warning,title=\textbf{Warning}] +An assert might be disabled at various optimization levels. Assert should therefore only be used as a debugging tool and not used for authentication verification (e.g., verifying passwords), nor should side effects needed for the function to work correctly be used inside of asserts. \end{tcolorbox} +\textbf{Examples} + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> @assert iseven(3) "3 is an odd number!" +ERROR: AssertionError: 3 is an odd number! + +julia> @assert isodd(3) "What even are numbers?" +\end{lstlisting} + + + +\href{https://github.com/JuliaLang/julia/blob/8e630552924eac54c809aa7bc30871c7df1582d3/base/error.jl#L197-L217}{\texttt{source}} + + +\end{adjustwidth} + +\chapter{Foo} + + + +\label{374450266380008264}{} + + + +\begin{lstlisting}[] +@show pwd() +a = 1 +\end{lstlisting} + + +\begin{lstlisting}[] +1 +\end{lstlisting} + + + +... + + + + +\begin{lstlisting}[] +@isdefined a +\end{lstlisting} + + +\begin{lstlisting}[] +false +\end{lstlisting} + + + + +\begin{lstlisting}[] +f(x) = 2x +g(x) = 3x +\end{lstlisting} + + + + +\begin{lstlisting}[] +x, y = 1, 2 +println(x, y) +\end{lstlisting} + + +\begin{lstlisting}[] +12 +\end{lstlisting} + + + + +\begin{lstlisting}[] +struct T end +t = T() +\end{lstlisting} + + +\begin{lstlisting}[] +Main.T() +\end{lstlisting} + + + + +\begin{lstlisting}[] +a + b + c + d + e + f +\end{lstlisting} + + +\begin{lstlisting}[] +21 +\end{lstlisting} + + + +\section{Foo} + + + +\label{17415245328842318541}{} + + + +\begin{lstlisting}[] +@isdefined T +@show typeof(T) +\end{lstlisting} + + +\begin{lstlisting}[] +Main.T +\end{lstlisting} + + + + +\begin{lstlisting}[] +x + y +\end{lstlisting} + + +\begin{lstlisting}[] +3 +\end{lstlisting} + + + + +\begin{lstlisting}[] +f(2), g(2) +\end{lstlisting} + + +\begin{lstlisting}[] +(4, 6) +\end{lstlisting} + + + +\subsection{Foo} + + + +\label{17607918834103512029}{} + + + +\begin{lstlisting}[] +x - y +\end{lstlisting} + + +\begin{lstlisting}[] +-1 +\end{lstlisting} + + + + +\begin{lstlisting}[] +f(1), g(1) +\end{lstlisting} + + +\begin{lstlisting}[] +(2, 3) +\end{lstlisting} + + + + +\begin{lstlisting}[] +using InteractiveUtils +@which T() +\end{lstlisting} + + +\begin{lstlisting}[] +Main.T() + @ Main functions.md:61 +\end{lstlisting} + + + + +\begin{lstlisting}[] +A = 1 +\end{lstlisting} + + +\begin{lstlisting}[] +1 +\end{lstlisting} + + + + +\begin{lstlisting}[] +for i in 1:3 +\end{lstlisting} + + + + +\begin{lstlisting}[] +A = 2 +\end{lstlisting} + + +\begin{lstlisting}[] +2 +\end{lstlisting} + + + + +\begin{lstlisting}[] + println(A + i) +\end{lstlisting} + + + + +\begin{lstlisting}[] +end +\end{lstlisting} + + +\begin{lstlisting}[] +2 +3 +4 +\end{lstlisting} + + + + +\begin{lstlisting}[] +A + 1 +\end{lstlisting} + + +\begin{lstlisting}[] +2 +\end{lstlisting} + + + +\subsubsection{Foo} + + + +\label{12217055824246208395}{} + + + +\begin{lstlisting}[] +a = 1 +b = ans +@assert a === b +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] + + + +julia> nothing + + +julia> rand() +0.07336635446929285 + +julia> a = 1 +1 + +julia> println(a) +1 + +julia> b = 2 +2 + +julia> a + b +3 + +julia> struct T + x :: Int + y :: Vector + end + + +julia> x = T(1, [1]) +Main.T(1, [1]) + +julia> x.y +1-element Vector{Int64}: + 1 + +julia> x.x +1 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> d = 1 +1 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> println(d) +1 +\end{lstlisting} + + + +Test setup function + + + + + + +\begin{lstlisting}[] +@assert w === 5 +\end{lstlisting} + + + + +\begin{lstlisting}[language=julia, style=jlcodestyle] +julia> @assert w === 5 + +\end{lstlisting} + + + +\chapter{Autodocs} + + + +\label{13360040930512514124}{} + + + + +\section{AutoDocs Module} + + + +\label{14974050576722623319}{} + +\hypertarget{11302554442225637105}{\texttt{AutoDocs}} -- {Module.} + +\begin{adjustwidth}{2em}{0pt} + +\texttt{AutoDocs} module. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L76}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{15441025252371609530}{\texttt{Main.AutoDocs.K}} -- {Constant.} + +\begin{adjustwidth}{2em}{0pt} + +Constant \texttt{K}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L89}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{12338358314596597808}{\texttt{Main.AutoDocs.T}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + +Type \texttt{T}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L92}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{14053004641171891989}{\texttt{Main.AutoDocs.f}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +Function \texttt{f}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L86}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{7256264955516068825}{\texttt{Main.AutoDocs.@m}} -- {Macro.} + +\begin{adjustwidth}{2em}{0pt} + +Macro \texttt{@m}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L95}{\texttt{source}} + + +\end{adjustwidth} + +\section{Functions, Modules, and Macros} + + + +\label{3338605747262022226}{} + +\hypertarget{8047994080897963665}{\texttt{Main.AutoDocs.A.f}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +Function \texttt{A.f}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L100}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{14171230956575570013}{\texttt{Main.AutoDocs.A}} -- {Module.} + +\begin{adjustwidth}{2em}{0pt} + +Module \texttt{A}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L98}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{1819148365468180190}{\texttt{Main.AutoDocs.A.@m}} -- {Macro.} + +\begin{adjustwidth}{2em}{0pt} + +Macro \texttt{B.@m}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L109}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{1354818346142581698}{\texttt{Main.AutoDocs.B.f}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +Function \texttt{B.f}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L115}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{11339106303250130801}{\texttt{Main.AutoDocs.B}} -- {Module.} + +\begin{adjustwidth}{2em}{0pt} + +Module \texttt{B}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L113}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{10335956018691630658}{\texttt{Main.AutoDocs.B.@m}} -- {Macro.} + +\begin{adjustwidth}{2em}{0pt} + +Macro \texttt{B.@m}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L124}{\texttt{source}} + + +\end{adjustwidth} + +\section{Constants and Types} + + + +\label{18297180183977969663}{} + +\hypertarget{17379154232303623334}{\texttt{Main.AutoDocs.A.K}} -- {Constant.} + +\begin{adjustwidth}{2em}{0pt} + +Constant \texttt{A.K}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L103}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{1070558433006397272}{\texttt{Main.AutoDocs.A.T}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + +Type \texttt{B.T}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L106}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{3291598769099158785}{\texttt{Main.AutoDocs.B.K}} -- {Constant.} + +\begin{adjustwidth}{2em}{0pt} + +Constant \texttt{B.K}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L118}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{16943270388934614325}{\texttt{Main.AutoDocs.B.T}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + +Type \texttt{B.T}. + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L121}{\texttt{source}} + + +\end{adjustwidth} + +\section{Autodocs by Page} + + + +\label{17012311511907355869}{} + +\hypertarget{16694402067483188119}{\texttt{Main.AutoDocs.Pages.f}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +\texttt{f} from page \texttt{a.jl}. + +Links: + +\begin{itemize} +\item \hyperlinkref{14245046751182637566}{\texttt{ccall}} + + +\item \hyperlinkref{15133348314455964692}{\texttt{while}} + + +\item \hyperlinkref{8029752041511656628}{\texttt{@time(x)}} + + +\item \hyperlinkref{17100384742613090383}{\texttt{T(x)}} + + +\item \hyperlinkref{14050452459487205641}{\texttt{T(x, y)}} + + +\item \hyperlinkref{16694402067483188119}{\texttt{f(::Integer)}} + + +\item \hyperlinkref{16694402067483188119}{\texttt{f(::Any)}} + + +\item \hyperlinkref{9950366858879376632}{\texttt{f(::Any, ::Any)}} + + +\item \hyperlinkref{18287295168891819021}{\texttt{f(x, y, z)}} + +\end{itemize} +\footnotetext[1]{Footnote contents. \footnotemark[1] + +} + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/a.jl#L2-L21}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{9950366858879376632}{\texttt{Main.AutoDocs.Pages.f}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +\texttt{f} from page \texttt{b.jl}. + +Links: + +\begin{itemize} +\item \hyperlinkref{14245046751182637566}{\texttt{ccall}} + + +\item \hyperlinkref{15133348314455964692}{\texttt{while}} + + +\item \hyperlinkref{8029752041511656628}{\texttt{@time}} + + +\item \hyperlinkref{5246990970960098088}{\texttt{T}} + + +\item \hyperlinkref{16694402067483188119}{\texttt{f}} + + +\item \hyperlinkref{16694402067483188119}{\texttt{f(::Any)}} + + +\item \hyperlinkref{9950366858879376632}{\texttt{f(::Any, ::Any)}} + + +\item \hyperlinkref{18287295168891819021}{\texttt{f(::Any, ::Any, ::Any)}} + +\end{itemize} + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/b.jl#L2-L16}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{18287295168891819021}{\texttt{Main.AutoDocs.Pages.f}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +\texttt{f} from page \texttt{c.jl}. +Links: -\section{Issue 1392} +\begin{itemize} +\item \hyperlinkref{14245046751182637566}{\texttt{ccall}} +\item \hyperlinkref{15133348314455964692}{\texttt{while}} -\label{987107409634109244}{} +\item \hyperlinkref{8029752041511656628}{\texttt{@time}} -\begin{minted}{jlcon} -julia> function foo end; -\end{minted} +\item \hyperlinkref{5246990970960098088}{\texttt{T}} +\item \hyperlinkref{16694402067483188119}{\texttt{f}} -\section{Issue 1401: rendering custom LaTeX} +\item \hyperlinkref{16694402067483188119}{\texttt{f(::Any)}} -\label{1766923436598802013}{} +\item \hyperlinkref{9950366858879376632}{\texttt{f(::Any, ::Any)}} -\subsection{@example block / show with \texttt{text/latex} MIME} +\item \hyperlinkref{18287295168891819021}{\texttt{f(::Any, ::Any, ::Any)}} +\end{itemize} -\label{12212591717920375664}{} +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/c.jl#L2-L16}{\texttt{source}} +\end{adjustwidth} +\hypertarget{5246990970960098088}{\texttt{Main.AutoDocs.Pages.T}} -- {Type.} -\begin{minted}{julia} -struct Table end +\begin{adjustwidth}{2em}{0pt} -Base.show(io, ::MIME"text/latex", ::Table) = write(io, raw""" -\begin{tabular}{r|ccc} - & i & y & z\\ - \hline - & Int64 & Char & Int64\\ - \hline - 1 & 1 & 'A' & 5 \\ - 2 & 2 & 'B' & 6 \\ - 3 & 3 & 'C' & 7 \\ - 4 & 4 & 'D' & 8 \\ -\end{tabular} -""") +\texttt{T} from page \texttt{d.jl}. -Table() -\end{minted} +Links: -\begin{table}[h] -\centering -\adjustbox{max width=\linewidth}{ -\begin{tabular}{r|ccc} - & i & y & z\\ - \hline - & Int64 & Char & Int64\\ - \hline - 1 & 1 & 'A' & 5 \\ - 2 & 2 & 'B' & 6 \\ - 3 & 3 & 'C' & 7 \\ - 4 & 4 & 'D' & 8 \\ -\end{tabular} -}\end{table} +\begin{itemize} +\item \hyperlinkref{14245046751182637566}{\texttt{ccall}} -\subsection{@raw block} +\item \hyperlinkref{15133348314455964692}{\texttt{while}} +\item \hyperlinkref{8029752041511656628}{\texttt{@time}} -\label{12968435574917214693}{} +\item \hyperlinkref{5246990970960098088}{\texttt{T}} -\begin{tabular}{r|ccc} - & i & y & z\\ - \hline - & Int64 & Char & Int64\\ - \hline - 1 & 1 & 'A' & 5 \\ - 2 & 2 & 'B' & 6 \\ - 3 & 3 & 'C' & 7 \\ - 4 & 4 & 'D' & 8 \\ -\end{tabular} +\item \hyperlinkref{16694402067483188119}{\texttt{f}} +\item \hyperlinkref{16694402067483188119}{\texttt{f(x)}} -\subsection{Inline LaTeX} +\item \hyperlinkref{9950366858879376632}{\texttt{f(x, y)}} -\label{7647595013011656041}{} +\item \hyperlinkref{18287295168891819021}{\texttt{f(::Any, ::Any, ::Any)}} +\end{itemize} -\emph{Note: this should render as just text, not as a table.} +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/d.jl#L2-L16}{\texttt{source}} -{\textbackslash}begin\{tabular\}\{r|ccc\} \& i \& y \& z{\textbackslash} - {\textbackslash}hline \& Int64 \& Char \& Int64{\textbackslash} - {\textbackslash}hline 1 \& 1 \& {\textquotesingle}A{\textquotesingle} \& 5 {\textbackslash} - 2 \& 2 \& {\textquotesingle}B{\textquotesingle} \& 6 {\textbackslash} - 3 \& 3 \& {\textquotesingle}C{\textquotesingle} \& 7 {\textbackslash} - 4 \& 4 \& {\textquotesingle}D{\textquotesingle} \& 8 {\textbackslash} -{\textbackslash}end\{tabular\} +\end{adjustwidth} +\hypertarget{14050452459487205641}{\texttt{Main.AutoDocs.Pages.T}} -- {Method.} +\begin{adjustwidth}{2em}{0pt} +\texttt{T} from page \texttt{d.jl}. -\section{Printing LaTeX from Julia} +Links: +\begin{itemize} +\item \hyperlinkref{14245046751182637566}{\texttt{ccall}} -\label{10914504187442884412}{} +\item \hyperlinkref{15133348314455964692}{\texttt{while}} -To pretty-print LaTeX from Julia, overload \texttt{Base.show} for the \texttt{MIME{\textquotedbl}text/latex{\textquotedbl}} type. For example: +\item \hyperlinkref{8029752041511656628}{\texttt{@time}} +\item \hyperlinkref{5246990970960098088}{\texttt{T()}} -\begin{minted}{julia} -struct LaTeXEquation - content::String -end +\item \hyperlinkref{17100384742613090383}{\texttt{T(x)}} -function Base.show(io::IO, ::MIME"text/latex", x::LaTeXEquation) - # Wrap in $$ for display math printing - return print(io, "\$\$ " * x.content * " \$\$") -end -LaTeXEquation(raw""" - \left[\begin{array}{c} - x \\ - y - \end{array}\right] -""") -\end{minted} +\item \hyperlinkref{14050452459487205641}{\texttt{T(x, y)}} -$$ \left[\begin{array}{c} - x \\ - y - \end{array}\right] - $$ +\item \hyperlinkref{5246990970960098088}{\texttt{T(x, y, z)}} + + +\item \hyperlinkref{16694402067483188119}{\texttt{f}} + + +\item \hyperlinkref{16694402067483188119}{\texttt{f(x)}} + + +\item \hyperlinkref{9950366858879376632}{\texttt{f(x, y)}} + + +\item \hyperlinkref{18287295168891819021}{\texttt{f(::Any, ::Any, ::Any)}} + +\end{itemize} + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/d.jl#L39-L56}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{17100384742613090383}{\texttt{Main.AutoDocs.Pages.T}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +\texttt{T} from page \texttt{d.jl}. + +Links: + +\begin{itemize} +\item \hyperlinkref{14245046751182637566}{\texttt{ccall}} + + +\item \hyperlinkref{15133348314455964692}{\texttt{while}} + + +\item \hyperlinkref{8029752041511656628}{\texttt{@time}} + + +\item \hyperlinkref{17100384742613090383}{\texttt{T(x)}} + + +\item \hyperlinkref{14050452459487205641}{\texttt{T(x, y)}} + + +\item \hyperlinkref{5246990970960098088}{\texttt{T(x, y, z)}} + + +\item \hyperlinkref{16694402067483188119}{\texttt{f}} + + +\item \hyperlinkref{16694402067483188119}{\texttt{f(x)}} + + +\item \hyperlinkref{9950366858879376632}{\texttt{f(x, y)}} + + +\item \hyperlinkref{18287295168891819021}{\texttt{f(::Any, ::Any, ::Any)}} + +\end{itemize} + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/d.jl#L20-L36}{\texttt{source}} + + +\end{adjustwidth} + +A footnote reference \footnotemark[1]. + + + +\chapter{Named docstring \texttt{@ref}s} + + + +\label{8597286521325026101}{} + + +\begin{itemize} +\item a normal docstring \texttt{@ref} link: \hyperlinkref{16694402067483188119}{\texttt{AutoDocs.Pages.f}}; + + +\item a named docstring \texttt{@ref} link: \hyperlinkref{16694402067483188119}{\texttt{f}}; + + +\item and a link with custom text: \hyperlinkref{8029752041511656628}{\texttt{@time 1 + 2}}; + + +\item some invalid syntax: \hyperlinkref{9105224580875818383}{\texttt{for i = 1:10; ...}}. + +\end{itemize} + + +\chapter{\texttt{@autodocs} tests} + + + +\label{11910521728371484862}{} + + + + +\section{Public} + + + +\label{1292728206705221544}{} + + +Should include docs for + + + +\begin{itemize} +\item \hyperlinkref{2996493907818938116}{\texttt{AutoDocs.Pages.E.f\_1}} + + +\item \hyperlinkref{6076055157300971596}{\texttt{AutoDocs.Pages.E.f\_2}} + + +\item \hyperlinkref{3503352570886681808}{\texttt{AutoDocs.Pages.E.f\_3}} + +\end{itemize} + + +in that order. + + +\hypertarget{2996493907818938116}{\texttt{Main.AutoDocs.Pages.E.f\_1}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +f\_1 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/e.jl#L5}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{6076055157300971596}{\texttt{Main.AutoDocs.Pages.E.f\_2}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +f\_2 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/e.jl#L8}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{3503352570886681808}{\texttt{Main.AutoDocs.Pages.E.f\_3}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +f\_3 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/e.jl#L11}{\texttt{source}} + + +\end{adjustwidth} + +\section{Private} + + + +\label{11979819337618326564}{} + + +Should include docs for + + + +\begin{itemize} +\item \hyperlinkref{18335012651218585665}{\texttt{AutoDocs.Pages.E.g\_1}} + + +\item \hyperlinkref{12590794246865857269}{\texttt{AutoDocs.Pages.E.g\_2}} + + +\item \hyperlinkref{3152146771453799051}{\texttt{AutoDocs.Pages.E.g\_3}} + +\end{itemize} + + +in that order. + + +\hypertarget{18335012651218585665}{\texttt{Main.AutoDocs.Pages.E.g\_1}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +g\_1 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/e.jl#L15}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{12590794246865857269}{\texttt{Main.AutoDocs.Pages.E.g\_2}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +g\_2 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/e.jl#L18}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{3152146771453799051}{\texttt{Main.AutoDocs.Pages.E.g\_3}} -- {Method.} + +\begin{adjustwidth}{2em}{0pt} + +g\_3 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/e.jl#L21}{\texttt{source}} + + +\end{adjustwidth} + +\section{Ordering of Public and Private} + + + +\label{3913788247092433451}{} + + +Should include docs for + + + +\begin{itemize} +\item \hyperlinkref{14143981418775697458}{\texttt{AutoDocs.Pages.E.T\_1}} + + +\item \hyperlinkref{4871421601485935264}{\texttt{AutoDocs.Pages.E.T\_2}} + +\end{itemize} + + +in that order. + + +\hypertarget{14143981418775697458}{\texttt{Main.AutoDocs.Pages.E.T\_1}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + +T\_1 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/e.jl#L26}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{4871421601485935264}{\texttt{Main.AutoDocs.Pages.E.T\_2}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + +T\_2 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/e.jl#L29}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{3237252152661731042}{\texttt{Main.AutoDocs.Pages.E.T\_3}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + +T\_3 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/pages/e.jl#L32}{\texttt{source}} + + +\end{adjustwidth} + +\section{Filtering} + + + +\label{6391929926972855801}{} + + +Should include docs for + + + +\begin{itemize} +\item \hyperlinkref{6785702989282266947}{\texttt{AutoDocs.Filter.Major}} + + +\item \hyperlinkref{11704274081303557511}{\texttt{AutoDocs.Filter.Minor1}} + + +\item \hyperlinkref{4245242374026494985}{\texttt{AutoDocs.Filter.Minor2}} + +\end{itemize} + + +in that order. + + +\hypertarget{6785702989282266947}{\texttt{Main.AutoDocs.Filter.Major}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + +abstract super type + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L129}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{11704274081303557511}{\texttt{Main.AutoDocs.Filter.Minor1}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + +abstract sub type 1 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L132}{\texttt{source}} + + +\end{adjustwidth} +\hypertarget{4245242374026494985}{\texttt{Main.AutoDocs.Filter.Minor2}} -- {Type.} + +\begin{adjustwidth}{2em}{0pt} + +abstract sub type 2 + + + +\href{https://github.com/BambOoxX/Documenter.jl/blob/d157febde213549ed0d45c894f0651560da477d3/test/examples/make.jl#L135}{\texttt{source}} + + +\end{adjustwidth} + +\part{Expandorder} + + +\chapter{Expand order test 00} + + + +\label{6834115470379416000}{} + + +Filename suggest that this will be expanded before \texttt{01.md}. + + + + +\begin{lstlisting}[] +touch("00.txt") +\end{lstlisting} + + +\begin{lstlisting}[] +"00.txt" +\end{lstlisting} + + + +\chapter{Expand order test 01} + + + +\label{16473237151146092639}{} + + +This should be expanded after \texttt{00.md} and \texttt{AA.md}. + + + + +\begin{lstlisting}[] +isfile("00.txt") || error("00.txt missing") +\end{lstlisting} + + +\begin{lstlisting}[] +true +\end{lstlisting} -\begin{minted}{julia} -struct LaTeXEquation2 - content::String -end -function Base.show(io::IO, ::MIME"text/latex", x::LaTeXEquation2) - # Wrap in \[...\] for display math printing - return print(io, "\\[ " * x.content * " \\]") -end -LaTeXEquation2(raw""" - \left[\begin{array}{c} - x \\ - y - \end{array}\right] -""") -\end{minted} -\[ \left[\begin{array}{c} - x \\ - y - \end{array}\right] - \] +\begin{lstlisting}[] +isfile("AA.txt") || error("AA.txt missing") +\end{lstlisting} -\section{\texttt{LineBreak} node} +\chapter{Expand order test AA} -\label{18112929726868774212}{} -This sentence\\ -should be over \textbf{multiple\\ -lines}. +\label{7343046884903966924}{} +Filename suggest that this will be expanded after \texttt{00.md} and \texttt{01.md}. Hence we use \texttt{expandfirst} to force this to be expanded first. -\section{Issue 2300} -\label{5494601647308340695}{} +\begin{lstlisting}[] +touch("AA.txt") +\end{lstlisting} -You~Shall~Not~Break!~You~Shall~Not~Break!~You~Shall~Not~Break! +\begin{lstlisting}[] +"AA.txt" +\end{lstlisting} From e8392c8353a8a62d639c0291997413dcc3949b47 Mon Sep 17 00:00:00 2001 From: Morten Piibeleht Date: Sat, 2 Dec 2023 19:04:00 +1300 Subject: [PATCH 6/8] Add full test build for listings --- test/examples/make.jl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/examples/make.jl b/test/examples/make.jl index 7002b4c2ec..984b7e977a 100644 --- a/test/examples/make.jl +++ b/test/examples/make.jl @@ -872,6 +872,26 @@ else nothing end +examples_latex_showcase_doc = if "latex_showcase_listings" in EXAMPLE_BUILDS + @info("Building mock package docs: LaTeXWriter/latex_showcase_listings") + @quietly makedocs( + format = Documenter.LaTeX(platform = "docker", version = v"1.2.3", code_listings="listings"), + sitename = "Documenter LaTeX Showcase", + root = examples_root, + build = "builds/latex_showcase_listingslatex_showcase", + source = "src.latex_showcase", + pages = ["Showcase" => ["showcase.md", "docstrings.md"]], + remotes = Dict(@__DIR__() => (TestRemote(), "6ef16754bc5da93f67a4323fb204c5bd3e64f336")), + doctest = false, + debug = true, + warnonly = [:docs_block, :cross_references], + ) +else + @info "Skipping build: LaTeXWriter/latex_showcase" + @debug "Controlling variables:" EXAMPLE_BUILDS get(ENV, "DOCUMENTER_TEST_EXAMPLES", nothing) + nothing +end + examples_latex_showcase_texonly_doc = if "latex_showcase_texonly" in EXAMPLE_BUILDS @info("Building mock package docs: LaTeXWriter/latex_showcase_texonly") @quietly makedocs( From 634066f53290f707e47026cd42b93c797f291825 Mon Sep 17 00:00:00 2001 From: Morten Piibeleht Date: Sat, 2 Dec 2023 19:04:14 +1300 Subject: [PATCH 7/8] Update tests_latex.jl --- test/examples/tests_latex.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/examples/tests_latex.jl b/test/examples/tests_latex.jl index f088a73bb6..06c16fac99 100644 --- a/test/examples/tests_latex.jl +++ b/test/examples/tests_latex.jl @@ -4,7 +4,7 @@ using Test # make.jl, and we need to set it to the relevant LaTeX builds. ENV["DOCUMENTER_TEST_EXAMPLES"] = "latex latex_simple latex_cover_page latex_toc_style latex_simple_tectonic " * - "latex_showcase" + "latex_showcase latex_showcase_listings" # When the file is run separately we need to include make.jl which actually builds # the docs and defines a few modules that are referred to in the docs. The make.jl From eae1d7501d13c6364c034cc2eaad51547a6bf5ea Mon Sep 17 00:00:00 2001 From: BambOoxX <42067365+BambOoxX@users.noreply.github.com> Date: Wed, 13 Dec 2023 17:43:50 +0100 Subject: [PATCH 8/8] Update test/runtests.jl Co-authored-by: Morten Piibeleht --- test/runtests.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 819e653422..58240e2b8e 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -72,8 +72,8 @@ end include("latexwriter.jl") # Deployment configurations - # include("deployconfig.jl") - # include("deploydocs.jl") + include("deployconfig.jl") + include("deploydocs.jl") # Mock package docs. include("examples/tests.jl")