Skip to content

Commit 32ae7ee

Browse files
committed
Improvements for tables
1 parent 4ece6c7 commit 32ae7ee

3 files changed

Lines changed: 53 additions & 24 deletions

File tree

Mathematica/Autoload/PackageUtils/PackageUtils.wl

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,17 @@ CreateObj[style_String,capstyle_String,tag_:Automatic,captionFirst_:False]:=Bloc
130130
tagt=TagInput[style,tag];
131131
c=NotebookFind[EvaluationNotebook[],tagt,All,CellTags];
132132
tmp=c===$Failed;
133-
If[tmp,FrontEnd`NotebookWrite[EvaluationNotebook[],
133+
If[tmp,If[captionFirst,FrontEnd`NotebookWrite[EvaluationNotebook[],CellPrint[TextCell["\[Placeholder]",capstyle,CellAutoOverwrite->False]
134+
],All,AutoScroll->False];
135+
FrontEnd`NotebookWrite[EvaluationNotebook[],
134136
CellPrint[Cell[BoxData[FormBox["\[Placeholder]",TraditionalForm]],style,CellAutoOverwrite->False,CellTags->tagt]
135-
],All,AutoScroll->False];FrontEnd`NotebookWrite[EvaluationNotebook[],CellPrint[TextCell["\[Placeholder]",capstyle,CellAutoOverwrite->False]
137+
],All,AutoScroll->False];
138+
,FrontEnd`NotebookWrite[EvaluationNotebook[],
139+
CellPrint[Cell[BoxData[FormBox["\[Placeholder]",TraditionalForm]],style,CellAutoOverwrite->False,CellTags->tagt]
140+
],All,AutoScroll->False];
141+
FrontEnd`NotebookWrite[EvaluationNotebook[],CellPrint[TextCell["\[Placeholder]",capstyle,CellAutoOverwrite->False]
136142
],All,AutoScroll->False]];
143+
];
137144
c=NotebookFind[EvaluationNotebook[],tagt,All,CellTags];
138145
tmp
139146
];
@@ -146,17 +153,21 @@ Paste[EvaluationNotebook[],content];
146153
SelectionMove[EvaluationNotebook[],Next,Cell,1,AutoScroll->False];
147154
SelectionMove[EvaluationNotebook[],After,CellContents,1,AutoScroll->False];
148155
];
149-
(*Board[content_,tag_:Automatic,row_:True,opts___]:=Block[{createdNew},
150-
createdNew=CreateObj["Board",If[tag===Automatic&&Head@Unevaluated@content===Symbol,SymbolName[Unevaluated[content]],tag],True];
151-
SelectionMove[EvaluationNotebook[],After,CellContents,AutoScroll->False];
156+
Board[content_,tag_:Automatic,row_:True,opts___]:=Block[{createdNew},
157+
createdNew=CreateObj["Table","TableTitle",If[tag===Automatic&&Head@Unevaluated@content===Symbol,SymbolName[Unevaluated[content]],tag],True];
158+
Paste[EvaluationNotebook[],TableForm[content,opts]];
159+
SelectionMove[EvaluationNotebook[],Previous,Cell,1,AutoScroll->False];
160+
SelectionMove[EvaluationNotebook[],Before,CellContents,1,AutoScroll->False];
161+
(*SelectionMove[EvaluationNotebook[],After,CellContents,AutoScroll->False];*)
162+
(*
152163
SelectionMove[EvaluationNotebook[],Previous,Line,1,AutoScroll->False];
153164
If[!createdNew,SelectionMove[EvaluationNotebook[],All,Expression,AutoScroll->False],Unevaluated[Sequence[]]];
154165
NotebookWrite[EvaluationNotebook[],GridBox[content,opts,GridBoxAlignment->{"Columns"->{{Left}},"ColumnsIndexed"->{},"Rows"->{{Center}},"RowsIndexed"->{}},GridBoxDividers->{"Columns"->{False,If[!row,AbsoluteThickness[1],Nothing],{False},False},"ColumnsIndexed"->{},"Rows"->{AbsoluteThickness[2],If[row,AbsoluteThickness[1],Nothing],{False},AbsoluteThickness[2]},"RowsIndexed"->{}},GridBoxItemSize->{"Columns"->{{All}},"ColumnsIndexed"->{},"Rows"->{{1.2}},"RowsIndexed"->{}},GridDefaultElement:>"\[Placeholder]"]];
155-
SelectionMove[EvaluationNotebook[],Previous,Expression,2,AutoScroll->False];
166+
SelectionMove[EvaluationNotebook[],Previous,Expression,2,AutoScroll->False];*)
156167
];
157168
ExtFT[cs_,cont_]:=If[cs==="Board",Replace[cont,{FormBox[GridBox[{_,{C___},{D___}},E___],F___]:>FormBox[GridBox[{{C},{D}},E],F]},Infinity],If[cs==="Figure",Replace[cont,{FormBox[GridBox[{{C___},_,{D___}},E___],F___]:>FormBox[GridBox[{{C},{D}},E],F]},Infinity],cont]];
158169
BoardColumn[content_,tag_:Automatic,opts___]:=Board[content,tag,False,opts];
159-
*)
170+
160171

161172
DuplicateNotebook[]:=NotebookPut@NotebookGet[EvaluationNotebook[]];
162173
TranslateSpecialCellStyleNames[name_]:=If[AbsoluteCurrentValue["Language"] == "Polish",Switch[name,"Example","Przyk\[LSlash]ad","Exercise","Zadanie","Solution","Rozwi\:0105zanie","Question","Pytanie","Remark","Uwaga","Comment","Komentarz",
@@ -356,7 +367,7 @@ ShowStatus["PDF exported successfully"];
356367

357368
Options[ExportToTeX]={TeXExportToPDF->False,TeXEmbedRefrencesBeforeExport->False,TeXWriteTOC->False,TeXBibFile->"",
358369
TeXWriteAuthors->False,TeXWriteDate->False,TeXWriteTitle->True,TeXCustomCommands->"",TeXLanguage->None,TeXLineSpread->"1.0",
359-
TeXShowLabels->False,TeXSetMargin->"0.8in",TeXPlotScale->"0.7",TeXFitEquations->True,TeXAlignEquations->True};
370+
TeXShowLabels->False,TeXSetMargin->"0.8in",TeXPlotScale->"0.7",TeXFitEquations->False,TeXAlignEquations->True};
360371
ExportToTeX[opt:OptionsPattern[]]:=Module[{cells,base,prolog,epilog,styles,title, author, abstract, affil,tmps},
361372
ShowStatus["Initializing TeX export..."];
362373
PrintToConsole["TeXExportToPDF is " <> ToString[OptionValue[TeXExportToPDF]]];
@@ -636,10 +647,18 @@ ShowStatus["Postprocessing cells..."];
636647
(*fix figure captions*)
637648
base=StringReplace[base,"\\label{"~~Shortest[t___]~~"}\\end{figure}"~~Whitespace~~"\\caption{"~~Shortest[c___]~~"}"/; (StringCount[c,"\\("]==StringCount[c,"\\)"]&&StringCount[c,"{"]==StringCount[c,"}"]&&StringFreeQ[t,"}"](*&&(!StringContainsQ[c,"\\ref"]||((StringCount[c,"{"]==StringCount[c,"\\ref"])&&(StringCount[c,"}"]==StringCount[c,"\\ref"])))*)(*&&StringFreeQ[t,"}"]*)) :>"\\caption{ "<>c<>" }\\label{"<>t<>"}\\end{figure} "];
638649
(*alignment*)
639-
PutAlignMark[st_String]:=If[Length[StringSplit[st,"\\\\"]]>1,(StringRiffle[(tmps=If[StringContainsQ[#,"="],StringReplace[#,StartOfString ~~Shortest[t___]~~"="~~u___~~EndOfString/; (StringCount[t,"{"]==StringCount[t,"}"]):> t<>"&="<>u],StringReplace[#,StartOfString ~~Shortest[t___]~~Pattern[z,Blank[]]~~u___~~EndOfString /; ((z==="+"||z==="-")&&StringCount[t,"{"]==StringCount[t,"}"]) :> t<>"&"<>z<>u]]; If[StringContainsQ[tmps,"&"],tmps,"&"<>tmps]) &/@StringSplit[st,"\\\\"],"\\\\\n"]),st];
650+
PutAlignMark[st_String]:=If[Length[StringSplit[st,"\\\\"]]>1,(StringRiffle[(tmps=If[StringContainsQ[#,"="],StringReplace[#,StartOfString ~~Shortest[t___]~~"="~~u___~~EndOfString/; (StringCount[t,"{"]==StringCount[t,"}"]):> t<>" &="<>u],StringReplace[#,StartOfString ~~Shortest[t___]~~Pattern[z,Blank[]]~~u___~~EndOfString /; ((z==="+"||z==="-")&&StringCount[t,"{"]==StringCount[t,"}"]) :> t<>" &"<>z<>u]]; If[StringContainsQ[tmps,"&"],tmps," &"<>tmps]) &/@StringSplit[st,"\\\\"],"\\\\\n"]),st];
640651
base=StringReplace[base,"\\\\"~~Whitespace~~"\\end{aligned}" ->"\\end{aligned}"];
641652
base=StringReplace[base,"\\begin{aligned}"~~Shortest[t___]~~"\\end{aligned}" /;!StringContainsQ[t,"\\begin{array}"]:>"\\begin{aligned}"<>PutAlignMark[t]<>"\\end{aligned} "];
642653
base=StringReplace[base,"\\begin{aligned}\\begin{array}{l}"~~Shortest[t___]~~"\\end{array}\\end{aligned}" /;!StringContainsQ[t,"\\begin{array}"]:>"\\begin{aligned}"<>PutAlignMark[t]<>"\\end{aligned} "];
654+
(*fix double superscript error connected with primed variables*)
655+
base=StringReplace[base,"'^"~~t_ /;!(StringContainsQ[t,"{"]):>("^{\\prime "<>t<>"}")];
656+
base=StringReplace[base,"'^{"~~Shortest[t___]~~"}" /;StringCount[t,"{"]==StringCount[t,"}"]:>("^{\\prime "<>t<>"}")];
657+
base=StringReplace[base,"''^"~~t_ /;!(StringContainsQ[t,"{"]):>("^{\\prime \\prime "<>t<>"}")];
658+
base=StringReplace[base,"''^{"~~Shortest[t___]~~"}" /;StringCount[t,"{"]==StringCount[t,"}"]:>("^{\\prime \\prime "<>t<>"}")];
659+
660+
base=StringReplace[base,"'"~~Whitespace~~"^"~~t_ /;!(StringContainsQ[t,"{"]):>("^{\\prime "<>t<>"}")];
661+
base=StringReplace[base,"'"~~Whitespace~~"^{"~~Shortest[t___]~~"}" /;StringCount[t,"{"]==StringCount[t,"}"]:>("^{\\prime "<>t<>"}")];
643662
(*cleanup*)
644663
base=StringReplace[base,{"\\end{equation*}"~~Whitespace~~"\\begin{equation*}"->"\\end{equation*}\n\\begin{equation*}","\\end{equation}"~~Whitespace~~"\\begin{equation}"->"\\end{equation}\n\\begin{equation}","\\end{equation}"~~Whitespace~~"\\begin{equation*}"->"\\end{equation}\n\\begin{equation*}"}];
645664
(*remove spacing for glueing TeX ref*)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
(* ::Package:: *)
2+
3+
Get["StrongFieldUtils`StrongFieldUtils`"];

Mathematica/Autoload/StrongFieldUtils/StrongFieldUtils.wl

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,26 +27,33 @@ BeginPackage["StrongFieldUtils`"];
2727
(*Essenatials*)
2828

2929

30+
(*physical constants in Atomic Units*)
3031
fsAtomic::usage="One femtosecond in atomic units";
3132
cAtomic::usage="Speed of light in atomic units";
3233
IpAtomic::usage="IpAtomic[atom,n] returns n'th (def. n) ionization energy of \"atom\" in atomic units.";
33-
EfromIAtomic::usage="EfromIAtomic[I] takes Quantity I of intensity (usually W/\!\(\*SuperscriptBox[\(cm\), \(2\)]\)) and transforms it to electric field intensity in atomic units.";
34-
\[Lambda]to\[Omega]::usage="Given number of nm turns into \[Omega] in AtomicUnits";
35-
\[Omega]toT::usage="Given \[Omega] [a.u.] turns it into period [a.u.]";
36-
\[Omega]toTfs::usage="Given \[Omega] [a.u.] turns it into period [fs]";
37-
Quiver::usage="Quiver[E,\[Omega]] returns E/\!\(\*SuperscriptBox[\(\[Omega]\), \(2\)]\).";
38-
Pondero::usage="Pondero[E,\[Omega]] returns \!\(\*SuperscriptBox[\(E\), \(2\)]\)/(2\[Omega]\!\(\*SuperscriptBox[\()\), \(2\)]\)";
34+
3935
Begin["`Private`"];
4036
fsAtomic=QuantityMagnitude@UnitConvert[Quantity[1,"fs"],"AtomicUnitOfTime"];
41-
cAtomic=UnitConvert[Quantity["ReducedPlanckConstant"]/( Quantity["FineStructureConstant"] Quantity["BohrRadius"] Quantity["ElectronMass"]),"AtomicUnitOfVelocity"];
42-
IpAtomic[atom_,n_:1]:=QuantityMagnitude[UnitConvert[ElementData[atom,"IonizationEnergies"]/Quantity["AvogadroConstant"],"Hartrees"][[n]]];
43-
EfromIAtomic[I_Quantity]:=UnitConvert[Sqrt[I/(1/2*Quantity[1,"ElectricConstant"]*cAtomic)]*Quantity[1,"ElementaryCharge"]*Quantity[1,"BohrRadius"],"Hartrees"];
44-
IfromEAtomic[E_]:=UnitConvert[(Quantity[E,"Hartrees"]/(Quantity[1,"ElementaryCharge"]*Quantity[1,"BohrRadius"]))^2 (1/2*Quantity[1,"ElectricConstant"]*cAtomic),"W/cm^2"];
45-
\[Lambda]to\[Omega][nm_]:=UnitConvert[Quantity[1,"SpeedOfLight"]Quantity[1,"PlanckConstant"]/Quantity[nm,"nm"],"Hartrees"];
46-
\[Omega]toT[\[Omega]_Quantity]:=UnitConvert[ Quantity[1,"PlanckConstant"]/\[Omega],"AtomicUnitOfTime"];
47-
\[Omega]toTfs[\[Omega]_Quantity]:=UnitConvert[ Quantity[1,"PlanckConstant"]/\[Omega],"fs"];
48-
Quiver[E_,\[Omega]_]:=E/\[Omega]^2;
49-
Pondero[E_,\[Omega]_]:=E^2/(2\[Omega])^2;
37+
cAtomic=QuantityMagnitude@UnitConvert[Quantity["ReducedPlanckConstant"]/( Quantity["FineStructureConstant"] Quantity["BohrRadius"] Quantity["ElectronMass"]),"AtomicUnitOfVelocity"];
38+
IpAtomic[atom_String,n_:1]:=QuantityMagnitude[UnitConvert[ElementData[atom,"IonizationEnergies"]/Quantity["AvogadroConstant"],"Hartrees"][[n]]];
39+
End[];
40+
41+
42+
(*useful conversions for Strong Field physics*)
43+
EfromIAtomic::usage="EfromIAtomic[I] takes intensity (in W/cm^2) and transforms it to electric field intensity in atomic units.";
44+
IfromEAtomic::usage="IfromEAtomic[E] takes electric field in atomic units and transforms it to intensity in W/cm^2.";
45+
\[Omega]from\[Lambda]Atomic::usage="Given number of nm tu`rns into \[Omega] in AtomicUnits";
46+
Tfrom\[Omega]Atomic::usage="Given \[Omega] [a.u.] turns it into period [a.u.]";
47+
QuiverAtomic::usage="Quiver[E,\[Omega]] returns E/\!\(\*SuperscriptBox[\(\[Omega]\), \(2\)]\).";
48+
PonderoAtomic::usage="Pondero[E,\[Omega]] returns \!\(\*SuperscriptBox[\(E\), \(2\)]\)/(2\[Omega]\!\(\*SuperscriptBox[\()\), \(2\)]\)";
49+
50+
Begin["`Private`"];
51+
EfromIAtomic[I_]:=QuantityMagnitude@UnitConvert[Sqrt[Quantity[I,"W/cm^2"]/(1/2*Quantity[1,"ElectricConstant"]*Quantity[cAtomic,"AtomicUnitOfVelocity"])]*Quantity[1,"ElementaryCharge"]*Quantity[1,"BohrRadius"],"Hartrees"];
52+
IfromEAtomic[E_]:=QuantityMagnitude@UnitConvert[(Quantity[E,"Hartrees"]/(Quantity[1,"ElementaryCharge"]*Quantity[1,"BohrRadius"]))^2 (1/2*Quantity[1,"ElectricConstant"]*Quantity[cAtomic,"AtomicUnitOfVelocity"]),"W/cm^2"];
53+
\[Omega]from\[Lambda]Atomic[nm_]:=QuantityMagnitude@UnitConvert[Quantity[1,"SpeedOfLight"]Quantity[1,"PlanckConstant"]/Quantity[nm,"nm"],"Hartrees"];
54+
Tfrom\[Omega]Atomic[\[Omega]_]:=QuantityMagnitude@UnitConvert[ Quantity[1,"PlanckConstant"]/Quantity[\[Omega],"Hartrees"],"AtomicUnitOfTime"];
55+
QuiverAtomic[E_,\[Omega]_]:=E/\[Omega]^2;
56+
PonderoAtomic[E_,\[Omega]_]:=E^2/(2\[Omega])^2;
5057
End[];
5158

5259

0 commit comments

Comments
 (0)