User guide

Simply evaluate this notebook at start of your Mathematica session on its own. Then use TeXForm as you normally would.

ClearAll["Global`*"]

Code to make TeXForm general special function names in full

Thanks to CallWolf code from https://mathematica.stackexchange.com/questions/270972/bad-latex-generated-when-using-texform-with-another-answer-solution

(*SetOptions[EvaluationNotebook[],CodeAssistOptions->{"FloatingElementEnable"->False}]*)

(*this is needed for arcsin and arccos and arctan to work*)
Initial/:Verbatim[TagSetDelayed][Initial[sym_],lhs_,rhs_]:=With[{new=Block[{sym},TagSetDelayed[sym,lhs,rhs];
First@Language`ExtendedDefinition[sym,"ExcludedContexts"->{}]],protect=Unprotect[sym]},sym;
Replace[new,Rule[values_,n:Except[{}]]:>(values[sym]=Prepend[values[sym],n]),{2}];
Protect@protect;]
Initial[Convert`TeX`ExpressionToTeX]/:Convert`TeX`ExpressionToTeX[e__]/;!TrueQ@$TeX:=Block[{$TeX=True},Convert`TeX`ExpressionToTeX[e]]

System`Convert`TeXFormDump`maketex[TemplateBox[a_,tag_?fullformQ]]:=System`Convert`TeXFormDump`maketex[RowBox[{operatorName[tag],"(",RowBox[Riffle[a,","]],")"}]]
System`Convert`TeXFormDump`maketex[operatorName[tag_]]:="\\operatorname{"<>tag<>"}"
fullformQ[_]=False;

fullformQ["Erfi"]=True;
fullformQ["FresnelC"]=True;
fullformQ["CosIntegral"]=True;
fullformQ["FresnelS"]=True;
fullformQ["AiryAiPrime"]=True;
fullformQ["AiryAi"]=True;
fullformQ["BesselI"]=True;
fullformQ["BesselJZero"]=True;
fullformQ["BesselJ"]=True;
fullformQ["ExpIntegralEi"]=True;
fullformQ["LaguerreL"]=True;
fullformQ["HermiteH"]=True;
fullformQ["Hypergeometric2F1"]=True;
fullformQ["Hypergeometric1F1"]=True;
fullformQ["HypergeometricPFQ"]=True;
fullformQ["HypergeometricU"]=True;
fullformQ["ExpIntegralE"]=True;
fullformQ["ParabolicCylinderD"]=True;
fullformQ["ProductLog"]=True;
fullformQ["DawsonF"]=True;
fullformQ["EllipticF"]=True;
fullformQ["EllipticE"]=True;
fullformQ["EllipticExpPrime"]=True;
fullformQ["EllipticExp"]=True;
fullformQ["EllipticK"]=True;
fullformQ["Gamma"]=True;
fullformQ["LogIntegral"]=True;
fullformQ["PolyLog"]=True;
fullformQ["ProductLog"]=True;
fullformQ["JacobiAmplitude"]=True;
fullformQ["AppellF1"]=True;
fullformQ["MathieuCharacteristicA"]=True;
fullformQ["MathieuCharacteristicB"]=True;
fullformQ["DirichletL"]=True;
fullformQ["DirichletEta"]=True;
fullformQ["DirichletBeta"]=True;
fullformQ["GammaRegularized"]=True;
fullformQ["PolyGamma"]=True;

Unprotect[ArcSin];
ArcSin/:MakeBoxes[ArcSin[x_],TraditionalForm]/;$TeX:=RowBox[{"arcsin","(",MakeBoxes[x,TraditionalForm],")"}]
Protect[ArcSin];

Unprotect[ArcCos];
ArcCos/:MakeBoxes[ArcCos[x_],TraditionalForm]/;$TeX:=RowBox[{"arccos","(",MakeBoxes[x,TraditionalForm],")"}]
Protect[ArcCos];

Unprotect[ArcTan];
ArcTan/:MakeBoxes[ArcTan[x_],TraditionalForm]/;$TeX:=RowBox[{"arctan","(",MakeBoxes[x,TraditionalForm],")"}]
Protect[ArcTan];

Unprotect[ArcSinh];
ArcSinh/:MakeBoxes[ArcSinh[x_],TraditionalForm]/;$TeX:=RowBox[{"arcsinh","(",MakeBoxes[x,TraditionalForm],")"}]
Protect[ArcSinh];

Unprotect[ArcCosh];
ArcCosh/:MakeBoxes[ArcCosh[x_],TraditionalForm]/;$TeX:=RowBox[{"arccosh","(",MakeBoxes[x,TraditionalForm],")"}]
Protect[ArcCosh];

Unprotect[ArcTanh];
ArcTanh/:MakeBoxes[ArcTanh[x_],TraditionalForm]/;$TeX:=RowBox[{"arctanh","(",MakeBoxes[x,TraditionalForm],")"}]
Protect[ArcTanh];