Commit eff7e46fa5d49e3ffce2e3d0f1b21248ebac75bf

Authored by Olivier Duvernois
1 parent 10e1e751

*** empty log message ***

anubis_dev/library/tools/latex.anubis
... ... @@ -163,8 +163,10 @@ define String
163 163 + "\\usepackage{longtable}\n"
164 164 + "\\usepackage{fancyhdr}\n"
165 165 + "\\fancyhead{}\n"
166   - + "\\fancyhead[LE]{\\thepage \\ \\ \\ \\textsl{Section \\leftmark} \\hfill}\n"
167   - + "\\fancyhead[RO]{\\hfill \\textsl{\\rightmark} \\ \\ \\ \\thepage}\n"
  166 + //+ "\\fancyhead[LE]{\\thepage \\ \\ \\ \\textsl{Section \\leftmark} \\hfill}\n"
  167 + + "\\fancyhead[LE]{\\thepage \\hfill \\textsl{Section \\leftmark}}\n"
  168 + //+ "\\fancyhead[RO]{\\hfill \\textsl{\\rightmark} \\ \\ \\ \\thepage}\n"
  169 + + "\\fancyhead[RO]{\\textsl{\\rightmark} \\hfill \\thepage}\n"
168 170 + "\\fancyfoot{}\n"
169 171 + "\\pagestyle{fancy}\n"
170 172 + "\\renewcommand{\\headrulewidth}{0.4pt}\n\n"
... ... @@ -172,23 +174,58 @@ define String
172 174 + "\n\n".
173 175  
174 176  
  177 +
  178 + Titre du document
  179 + -----------------
  180 +
  181 + Le titre du document, dans la mesure où il en existe un, peut être défini de 2 façons :
  182 + .(1) en utilisant la commande \maketitle de LaTeX.
  183 + .(2) en définissant soi-même le contenu de la page 'titre'.
  184 +
  185 + Dans les deux cas, la page titre constituera la première page du document.
  186 +
  187 +public type LaTeXTitle:
  188 + no_title,
  189 + predefined (String title,
  190 + Maybe(String) mb_author),
  191 + free_title (String).
  192 +
  193 +
  194 +
  195 +
175 196 Définition du fichier LaTeX
176 197 ---------------------------
177 198  
178 199 public define String
179 200 latex_page
180 201 (
181   - String more_ahead,
182   - Bool exist_title,
183   - String text_from_maml,
184   - Bool table_of_contents,
185   - String colors,
  202 + String more_ahead,
  203 + LaTeXTitle title,
  204 + String text_from_maml,
  205 + Bool table_of_contents,
  206 + String colors,
186 207 ) =
187   - latex_head(more_ahead)
  208 + latex_head(more_ahead
  209 + + if title is
  210 + {
  211 + no_title then "",
  212 + predefined(t,mb_a) then "\\title{"+t+"}\n"
  213 + + if mb_a is
  214 + {
  215 + failure then "",
  216 + success(a) then "\\author{"+a+"}\n"
  217 + },
  218 + free_title(_) then ""
  219 + })
188 220 + "\\begin{document}\n\n"
189 221 + colors
190 222 + "\\begin{sloppypar}\n\n"
191   - + (if exist_title then "\\maketitle \n \\thispagestyle{empty} \n \\newpage \n " else "")
  223 + + if title is
  224 + {
  225 + no_title then "",
  226 + predefined(_,_) then "\\maketitle \n \\thispagestyle{empty} \n \\newpage \n ",
  227 + free_title(t) then t+" \n \\thispagestyle{empty} \n \\newpage \n "
  228 + }
192 229 + (if table_of_contents then "\\tableofcontents \n \\newpage \n" else "")
193 230 + text_from_maml
194 231 + "\n\n"
... ... @@ -217,7 +254,7 @@ define Bool
217 254 else execute_control(ec,max_time),
218 255 abnormal_termination then print("abnormal_termination \n"); false
219 256 finished(i) then
220   - if i = 0 then true else print("Error: finished <> 0 \n"); false
  257 + if i = 0 then true else print("Error: finished /= 0 \n"); false
221 258 }.
222 259  
223 260  
... ...
anubis_dev/library/tools/maml.anubis
... ... @@ -559,7 +559,7 @@ public define String
559 559 maml_LaTeX_colors
560 560 =
561 561 "\\definecolor{my_green}{rgb}{0.27,0.51,0.27}\n"
562   - + "\\definecolor{my_grey}{gray}{0.25}\n".
  562 + + "\\definecolor{my_grey}{gray}{0.50}\n".
563 563  
564 564  
565 565 Prise en compte de la balise 'big' de MAML
... ... @@ -666,13 +666,25 @@ define Text
666 666  
667 667 La commande de la boîte sera donnée à la lecture de chacune des balises concernées lors
668 668 de la lecture du MAML par 'code_to_LaTeX()'
  669 +
  670 +
  671 + Par ailleurs, pour obtenir le même effet, le code LaTeX est susceptible de différer
  672 + selon les environnements. Il est donc nécessaire, à ces momemts, de se souvenir de
  673 + l'environnement actif. La fonction de transformation en LaTeX aura donc comme
  674 + composant une List(Environment) qui permettra d'adapter le codage LaTeX à
  675 + l'environnement actif.
  676 +
  677 +public type Environment:
  678 + center,
  679 + textcolor.
669 680  
670 681  
671 682 define String
672 683 format_code_to_LaTeX
673 684 (
674   - List(Int8) l,
675   - Maybe(String) do_paragraph
  685 + List(Int8) l,
  686 + Maybe(String) do_paragraph,
  687 + List(Environment) lenv
676 688 ) =
677 689 if l is
678 690 {
... ... @@ -685,8 +697,35 @@ define String
685 697 failure then "\\\\ ",
686 698 success(s) then "} \\\\ "+s
687 699 }
  700 + else if member(lenv,textcolor)
  701 + then transform_schar(h,latex_schar)
  702 + else transform_schar(h,latex_schar))
  703 + //else "\\textcolor{my_grey}{"+transform_schar(h,latex_schar)+"} ")
  704 + + format_code_to_LaTeX(t,do_paragraph,lenv)
  705 + }.
  706 +
  707 +
  708 +define String
  709 + format_code_to_LaTeX
  710 + (
  711 + List(Int8) l,
  712 + Maybe(String) do_paragraph,
  713 + String begin_code_color,
  714 + String end_code_color,
  715 + ) =
  716 + if l is
  717 + {
  718 + [] then end_code_color,
  719 + [h . t] then
  720 + (if h = ' ' then "\\ " else
  721 + if h = '\n' then
  722 + if do_paragraph is // {
  723 + {
  724 + failure then end_code_color+"\\\\ "+begin_code_color,
  725 + success(s) then end_code_color+"} \\\\ "+begin_code_color+s
  726 + }
688 727 else transform_schar(h,latex_schar))
689   - + format_code_to_LaTeX(t,do_paragraph)
  728 + + format_code_to_LaTeX(t,do_paragraph,begin_code_color,end_code_color)
690 729 }.
691 730  
692 731  
... ... @@ -695,15 +734,20 @@ define String
695 734 define Text
696 735 code_to_LaTeX
697 736 (
698   - Text text,
699   - Maybe(String) do_paragraph
  737 + Text text,
  738 + Maybe(String) do_paragraph,
  739 + List(Environment) lenv
700 740 ) =
701 741 if text is
702 742 {
703 743 t then t,
704   - Text te - String s then code_to_LaTeX(te,do_paragraph)
705   - - format_code_to_LaTeX(explode(s),do_paragraph),
706   - Text t1 - Text t2 then code_to_LaTeX(t1,do_paragraph) - code_to_LaTeX(t2,do_paragraph)
  744 + Text te - String s then
  745 + code_to_LaTeX(te,do_paragraph,lenv)
  746 + - if member(lenv,textcolor)
  747 + then format_code_to_LaTeX(explode(s),do_paragraph,"","")
  748 + else ("\\textcolor{my_grey}{"
  749 + + format_code_to_LaTeX(explode(s),do_paragraph," \\textcolor{my_grey}{","}")),
  750 + Text t1 - Text t2 then code_to_LaTeX(t1,do_paragraph,lenv) - code_to_LaTeX(t2,do_paragraph,lenv)
707 751 }.
708 752  
709 753  
... ... @@ -715,62 +759,70 @@ define Text
715 759 MAML m,
716 760 Maybe(String) do_paragraph,
717 761 String site_name,
718   - String public_dir
  762 + String public_dir,
  763 + List(Environment) lenv
719 764 ) =
720 765 if m is
721 766 {
722   - text(Text t) then code_to_LaTeX(t,do_paragraph),
  767 + text(Text t) then code_to_LaTeX(t,do_paragraph,lenv),
723 768 mark(String name) then to_text(name),
724 769 mark(String name,MAML m1) then
725 770 if name = "bold" then t-"{\\bf "
726   - -code_to_LaTeX(m1,success("\\bf"),site_name,public_dir)-"}" else
  771 + -code_to_LaTeX(m1,success("\\bf"),site_name,public_dir,lenv)-"}" else
727 772 if name = "italic" then t-"{\\it "
728   - -code_to_LaTeX(m1,success("\\it"),site_name,public_dir)-"}" else
  773 + -code_to_LaTeX(m1,success("\\it"),site_name,public_dir,lenv)-"}" else
729 774 if name = "yellow" then
730 775 t-"\\textcolor{yellow}{"
731   - -code_to_LaTeX(m1,success("\\textcolor{yellow}{"),site_name,public_dir)-"}" else
  776 + -code_to_LaTeX(m1,success("\\textcolor{yellow}{"),site_name,public_dir,[textcolor . lenv])
  777 + -"}" else
732 778 if name = "red" then
733 779 t-"\\textcolor{red}{"
734   - -code_to_LaTeX(m1,success("\\textcolor{red}{"),site_name,public_dir)-"}" else
  780 + -code_to_LaTeX(m1,success("\\textcolor{red}{"),site_name,public_dir,[textcolor . lenv])-"}"
  781 + else
735 782 if name = "grey" then
736 783 t-"\\textcolor{my_grey}{"
737   - -code_to_LaTeX(m1,success("\\textcolor{my_grey}{"),site_name,public_dir)-"}" else
  784 + -code_to_LaTeX(m1,success("\\textcolor{my_grey}{"),site_name,public_dir,[textcolor . lenv])-"}"
  785 + else
738 786 if name = "green" then
739 787 t-"\\textcolor{my_green}{"
740   - -code_to_LaTeX(m1,success("\\textcolor{my_green}{"),site_name,public_dir)-"}" else
  788 + -code_to_LaTeX(
  789 + m1,success("\\textcolor{my_green}{"),site_name,public_dir,[textcolor . lenv])-"}" else
741 790 if name = "blue" then
742 791 t-"\\textcolor{blue}{"
743   - -code_to_LaTeX(m1,success("\\textcolor{blue}{"),site_name,public_dir)-"}" else
  792 + -code_to_LaTeX(m1,success("\\textcolor{blue}{"),site_name,public_dir,[textcolor . lenv])-"}"
  793 + else
744 794 if name = "big" then (if big_to_LaTeX(1,m1) is (string_latex,next_maml) then
745 795 t-("{"+string_latex)
746   - -code_to_LaTeX(next_maml,success(string_latex),site_name,public_dir)-"}") else
  796 + -code_to_LaTeX(next_maml,success(string_latex),site_name,public_dir,lenv)-"}") else
747 797 if name = "image" then
748   - image_to_LaTeX(m1,(MAML ma) |-> code_to_LaTeX(ma,failure,site_name,public_dir),
  798 + image_to_LaTeX(m1,(MAML ma) |-> code_to_LaTeX(ma,failure,site_name,public_dir,lenv),
749 799 site_name,public_dir) else
750 800 if name = "code" then
751   - t-"\n\n {\\tt \\setlongtables \\begin{longtable}[l]{l}\n"
752   - -code_to_LaTeX(m1,do_paragraph,site_name,public_dir)
  801 + t-("\n\n {\\tt \\setlongtables "
  802 + +"\\begin{longtable}["+(if member(lenv,center)then "c" else "l")+"]{l}\n")
  803 + -code_to_LaTeX(m1,do_paragraph,site_name,public_dir,lenv)
753 804 -" \\end{longtable}}\n\n \\vspace{0.5cm}" else
754 805 if name = "center" then t-"\\begin{center} "
755   - -code_to_LaTeX(m1,do_paragraph,site_name,public_dir)
  806 + -code_to_LaTeX(m1,do_paragraph,site_name,public_dir,[center . lenv])
756 807 -"\\end{center}" else
757 808 if name = "link" then t-"{\\tt "
758   - -code_to_LaTeX(m1,do_paragraph,site_name,public_dir)-"}" else
  809 + -code_to_LaTeX(m1,do_paragraph,site_name,public_dir,lenv)-"}" else
759 810 if name = "list" then t-"\\begin{itemize} "
760   - -code_to_LaTeX(m1,do_paragraph,site_name,public_dir)
  811 + -code_to_LaTeX(m1,do_paragraph,site_name,public_dir,lenv)
761 812 -"\\end{itemize}" else
762 813 if name = "sub" then
763   - t-"\\mbox{$_{"-code_to_LaTeX(m1,do_paragraph,site_name,public_dir)-"}$}" else
  814 + t-"\\mbox{$_{"-code_to_LaTeX(m1,do_paragraph,site_name,public_dir,lenv)-"}$}" else
764 815 if name = "sup" then
765   - t-"\\mbox{\\textsuperscript{"-code_to_LaTeX(m1,do_paragraph,site_name,public_dir)-"}}" else
  816 + t-"\\mbox{\\textsuperscript{"
  817 + -code_to_LaTeX(m1,do_paragraph,site_name,public_dir,lenv)-"}}" else
766 818 if name = "tt" then
767   - t-"{\\tt "-code_to_LaTeX(m1,success("\\tt"),site_name,public_dir)-"}" else
  819 + t-"{\\tt "-code_to_LaTeX(m1,success("\\tt"),site_name,public_dir,lenv)-"}" else
768 820 alert,
769 821 mark(String n,MAML m1,MAML m2) then alert,
770 822 mark(String n,MAML m1,MAML m2,MAML m3) then alert,
771 823 m1 + m2 then
772   - code_to_LaTeX(m1,do_paragraph,site_name,public_dir)
773   - - code_to_LaTeX(m2,do_paragraph,site_name,public_dir)
  824 + code_to_LaTeX(m1,do_paragraph,site_name,public_dir,lenv)
  825 + - code_to_LaTeX(m2,do_paragraph,site_name,public_dir,lenv)
774 826 }.
775 827  
776 828  
... ... @@ -783,9 +835,10 @@ define Text
783 835 public define Text
784 836 to_LaTeX
785 837 (
786   - MAML m,
787   - String site_name,
788   - String public_dir
  838 + MAML m,
  839 + String site_name,
  840 + String public_dir,
  841 + List(Environment) lenv
789 842 ) =
790 843 if m is
791 844 {
... ... @@ -794,38 +847,60 @@ public define Text
794 847 mark(String name) then to_text(name),
795 848  
796 849 mark(String name,MAML a1) then
797   - if name = "bold" then t-"{\\bf "-to_LaTeX(a1,site_name,public_dir)-"}" else
798   - if name = "italic" then t-"{\\it "-to_LaTeX(a1,site_name,public_dir)-"}" else
799   - if name = "yellow" then t-"\\textcolor{yellow}{" -to_LaTeX(a1,site_name,public_dir)-"}" else
800   - if name = "red" then t-"\\textcolor{red}{" -to_LaTeX(a1,site_name,public_dir)-"}" else
801   - if name = "grey" then t-"\\textcolor{my_grey}{"-to_LaTeX(a1,site_name,public_dir)-"}" else
802   - if name = "green" then t-"\\textcolor{my_green}{" -to_LaTeX(a1,site_name,public_dir)-"}" else
803   - if name = "blue" then t-"\\textcolor{blue}{" -to_LaTeX(a1,site_name,public_dir)-"}" else
804   - if name = "big" then (if big_to_LaTeX(1,a1) is (string_latex,next_maml) then
805   - t-("{"+string_latex)-to_LaTeX(next_maml,site_name,public_dir)-"}") else
  850 + if name = "bold" then
  851 + t-"{\\bf "-to_LaTeX(a1,site_name,public_dir,lenv)-"}" else
  852 + if name = "italic" then
  853 + t-"{\\it "-to_LaTeX(a1,site_name,public_dir,lenv)-"}" else
  854 + if name = "yellow" then
  855 + t-"\\textcolor{yellow}{" -to_LaTeX(a1,site_name,public_dir,lenv)-"}" else
  856 + if name = "red" then
  857 + t-"\\textcolor{red}{" -to_LaTeX(a1,site_name,public_dir,lenv)-"}" else
  858 + if name = "grey" then
  859 + t-"\\textcolor{my_grey}{"-to_LaTeX(a1,site_name,public_dir,lenv)-"}" else
  860 + if name = "green" then
  861 + t-"\\textcolor{my_green}{" -to_LaTeX(a1,site_name,public_dir,lenv)-"}" else
  862 + if name = "blue" then
  863 + t-"\\textcolor{blue}{" -to_LaTeX(a1,site_name,public_dir,lenv)-"}" else
  864 + if name = "big" then
  865 + (if big_to_LaTeX(1,a1) is (string_latex,next_maml) then
  866 + t-("{"+string_latex)-to_LaTeX(next_maml,site_name,public_dir,lenv)-"}") else
806 867 if name = "image" then
807   - image_to_LaTeX(a1,(MAML ma) |-> to_LaTeX(ma,site_name,public_dir),site_name,public_dir) else
  868 + image_to_LaTeX
  869 + (a1,(MAML ma) |-> to_LaTeX(ma,site_name,public_dir,lenv),site_name,public_dir) else
808 870 if name = "code" then
809   - t-"\n\n {\\tt \\setlongtables \\begin{longtable}[l]{l}\n"
810   - -code_to_LaTeX(a1,failure,site_name,public_dir)
811   - -" \\end{longtable}} \n\n \\vspace{0.5cm}" else
812   - if name = "center" then t-"\\begin{center} "
813   - -to_LaTeX(a1,site_name,public_dir)-"\\end{center}" else
814   - if name = "link" then t-"{\\tt "-to_LaTeX(a1,site_name,public_dir)-"}" else
815   - if name = "list" then t-"\\begin{itemize} "
816   - -to_LaTeX(a1,site_name,public_dir)-"\\end{itemize}" else
817   - if name = "sub" then t-"\\mbox{$_{"-to_LaTeX(a1,site_name,public_dir)-"}$}" else
818   - if name = "sup" then t-"\\mbox{\\textsuperscript{"
819   - -to_LaTeX(a1,site_name,public_dir)-"}}" else
820   - if name = "tt" then t-"{\\tt "-to_LaTeX(a1,site_name,public_dir)-"}" else
  871 + t-(" {\\tt \\setlongtables "
  872 + + "\\begin{longtable}["+(if member(lenv,center) then "c" else "l")+"]{l}\n")
  873 + -code_to_LaTeX(a1,failure,site_name,public_dir,[])
  874 + -" \\end{longtable}} \n\n " else
  875 + if name = "center" then
  876 + t-"\\begin{center} "-to_LaTeX(a1,site_name,public_dir,[center . lenv])-"\\end{center}" else
  877 + if name = "link" then
  878 + t-"{\\tt "-to_LaTeX(a1,site_name,public_dir,lenv)-"}" else
  879 + if name = "list" then
  880 + t-"\\begin{itemize} "-to_LaTeX(a1,site_name,public_dir,lenv)-"\\end{itemize}" else
  881 + if name = "sub" then
  882 + t-"\\mbox{$_{"-to_LaTeX(a1,site_name,public_dir,lenv)-"}$}" else
  883 + if name = "sup" then
  884 + t-"\\mbox{\\textsuperscript{"-to_LaTeX(a1,site_name,public_dir,lenv)-"}}" else
  885 + if name = "tt" then
  886 + t-"{\\tt "-to_LaTeX(a1,site_name,public_dir,lenv)-"}" else
821 887 alert,
822 888  
823 889 mark(String name,MAML a1,MAML a2) then alert,
824 890 mark(String name,MAML a1,MAML a2,MAML a3) then alert,
825   - m1 + m2 then to_LaTeX(m1,site_name,public_dir) - to_LaTeX(m2,site_name,public_dir)
  891 + m1 + m2 then to_LaTeX(m1,site_name,public_dir,lenv) - to_LaTeX(m2,site_name,public_dir,lenv)
826 892 }.
827 893  
828 894  
  895 +public define Text
  896 + to_LaTeX
  897 + (
  898 + MAML m,
  899 + String site_name,
  900 + String public_dir,
  901 + ) =
  902 + to_LaTeX(m,site_name,public_dir,[]).
  903 +
829 904  
830 905  
831 906  
... ...