%This language support file for julia for the package Tcode is incomplete. \newcount\catcodebeforejulia \catcodebeforejulia=\catcode`@ \input Tcode.tex %The core \ThisIsLanguage{julia} %Only needed if julia is mixed with other languages in the same document \input Tutils-fastfonts-2.tex %In case this is used with Latex, for considerably faster font switch in the snippets. Comment this out %if you don't like it. We use the "2" version because we are using also bold (\Cbold below). %%--------------------------------------------------------------------------------------------- \DeclareCommentChar{#} \DeclareString %This makes "some text" be recognised as a String. \DeclareStringLike{'}{CharLiteral} %Macros begin with @. \def\OtherCharsInIdent{\catcode`@=11 } \def\testjuliamacro#1@#2\if{\def\temp{#1}\ifx\temp\empty} %Recognise @macros, functions( and .modules (the latter can be deactivated) \def\PrePrintLongHook@julia#1{% \ifx\FormatToApply\undefined \exP\testjuliamacro\the\WordToPrint @\if \@FormatToApply{Macro} \else\ifx(#1\@FormatToApply{Function}% \else\ifx.#1\ifx\FormatjuliaBeforeDot\empty\else \@FormatToApply{\FormatjuliaBeforeDot}\fi \fi\fi\fi \fi \PrePrintHook } \def\FormatjuliaBeforeDot{Module} %By default, module %\def\FormatjuliaBeforeDot{} %If you don't want those words to be recognized as modules. %Allow a ! within names, but only if it is not the first character \def\Ncode@Word@julia{\catcode`!=11 \Ncode@Word@kernel} \def\NcodeEndWord@julia{\catcode`!=12 \NcodeEndWord@kernel} \def\ReloadLang@julia{%Only needed if several languages are used in the same document and changes are not local \let\PrePrintLongHook\PrePrintLongHook@julia \let\Ncode@Word\Ncode@Word@julia \let\NcodeEndWord\NcodeEndWord@julia } \ReloadLang@julia %But we must execute those \let here, of course. \catcode`@=\catcodebeforejulia \unless\ifdefined\color \input pdfcolor-rg.tex %Comment out if you prefer to include a colour package later \fi %%--------------------------------------------------------------------------------------------- %\input juliahighlighting_1.tex %Rather than writing the definitions directly here \input highlighting_common.tex %Selects \DefineColor according to what colour package (or none) has been loaded \DefineColor{julia-comment}{0.4, 0.52, 0.4} %We name colours like this in order to avoid clashes with other language packages \DefineColor{julia-module}{0.3, 0.06, 0} \DefineColor{julia-type}{0, 0, 0.5} \DefineColor{julia-function}{0.45, 0.1, 0.6} \DefineColor{julia-macro}{0.34, 0.07, 0.45} %Assume red is already defined \TcodeDefineFormat{Comment}{\color{julia-comment}} \TcodeDefineFormat{String}{\color{red}} \TcodeDefineFormat{CharLiteral}{\color{red}} \TcodeDefineFormat{Keyword}{\Cbold} \TcodeDefineFormat{Module}{\color{julia-module}} \TcodeDefineFormat{Type}{\color{julia-type}} \TcodeDefineFormat{Function}{\color{julia-function}} \TcodeDefineFormat{Macro}{\Cbold\color{julia-macro}} %Now define \Cbold \unless\ifdefined\Cbold % If we are in Latex, Tutils-fastfonts-2.tex above already defines it. \ifdefined\bfseries \let\Cbold\bfseries \else \let\Cbold\bf \fi \fi %%--------------------------------------------------------------------------------------------- %\input juliawords.tex %Rather than write them directly here \MakeWord{baremodule}{Keyword} \MakeWord{begin}{Keyword} \MakeWord{break}{Keyword} \MakeWord{catch}{Keyword} \MakeWord{const}{Keyword} \MakeWord{continue}{Keyword} \MakeWord{do}{Keyword} \MakeWord{else}{Keyword} \MakeWord{elseif}{Keyword} \MakeWord{end}{Keyword} \MakeWord{export}{Keyword} \MakeWord{false}{Keyword} \MakeWord{finally}{Keyword} \MakeWord{for}{Keyword} \MakeWord{function}{Keyword} \MakeWord{global}{Keyword} \MakeWord{if}{Keyword} \MakeWord{import}{Keyword} \MakeWord{let}{Keyword} \MakeWord{local}{Keyword} \MakeWord{macro}{Keyword} \MakeWord{module}{Keyword} \MakeWord{quote}{Keyword} \MakeWord{return}{Keyword} \MakeWord{struct}{Keyword} \MakeWord{true}{Keyword} \MakeWord{try}{Keyword} \MakeWord{using}{Keyword} \MakeWord{while}{Keyword} \MakeWord{abstract}{Keyword} \MakeWord{mutable}{Keyword} \MakeWord{primitive}{Keyword} \MakeWord{type}{Keyword} \MakeWord{is}{Keyword} \MakeWord{isa}{Keyword} \MakeWord{where}{Keyword} \MakeWord{public}{Keyword} \MakeWord{outer}{Keyword} \MakeWord{as}{Keyword} %Besides those listed here, by default any word followed by a . is recognized as Module, as in MyModule.disc(). %This may be cancelled by writing \let\FormatjuliaBeforeDot\undefined. \MakeWord{Main}{Module} \MakeWord{Core}{Module} \MakeWord{Base}{Module} % \MakeWord{Broadcast}{Module} \MakeWord{Docs}{Module} \MakeWord{Iterators}{Module} \MakeWord{Libc}{Module} \MakeWord{Meta}{Module} \MakeWord{StackTraces}{Module} \MakeWord{Sys}{Module} \MakeWord{Threads}{Module} \MakeWord{GC}{Module} \MakeWord{Bool}{Type} \MakeWord{Int8}{Type} \MakeWord{Int16}{Type} \MakeWord{Int32}{Type} \MakeWord{Int64}{Type} \MakeWord{Int128}{Type} \MakeWord{BigInt}{Type} \MakeWord{UInt8}{Type} \MakeWord{UInt16}{Type} \MakeWord{UInt32}{Type} \MakeWord{UInt64}{Type} \MakeWord{UInt128}{Type} \MakeWord{BigUInt}{Type} \MakeWord{Float16}{Type} \MakeWord{Float32}{Type} \MakeWord{Float64}{Type} \MakeWord{BigFloat}{Type} % \MakeWord{Complex}{Type} \MakeWord{Rational}{Type} \MakeWord{Irrational}{Type} \MakeWord{Int}{Type} %Alias \MakeWord{Uint}{Type} %Alias %Abstract types \MakeWord{Number}{Type} \MakeWord{Real}{Type} \MakeWord{AbstractFloat}{Type} \MakeWord{Integer}{Type} \MakeWord{Signed}{Type} \MakeWord{Unsigned}{Type} \MakeWord{AbstractIrrational}{Type}