diff options
author | Norbert Preining <norbert@preining.info> | 2024-04-20 03:01:21 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-04-20 03:01:21 +0000 |
commit | b235955f171a9dc4a73c82b7b44fc2be52576393 (patch) | |
tree | cdcb94838ac78a3b3dc09997b9741e39082d103e /macros/latex | |
parent | 059925fc0cab13a83a74089aeee51f4b09bbd914 (diff) |
CTAN sync 202404200301
Diffstat (limited to 'macros/latex')
39 files changed, 1636 insertions, 781 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index 64ece3b038..b1e774981d 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -15,7 +15,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e}[2021/11/15] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2024/04/02}{2024ar} +\ProvidesExplClass{easybook}{2024/04/19}{2024as} {Easily typesetting Chinese theses or books} \bool_new:N \l__eb_compile_draft_bool @@ -297,7 +297,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2021/11/15] \RequirePackage{l3keys2e,etoolbox} -\ProvidesExplPackage{easybase}{2024/04/02}{2024ar} +\ProvidesExplPackage{easybase}{2024/04/19}{2024as} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -1519,19 +1519,6 @@ \seq_put_right:Nn \c__ctex_headings_seq { figure } \seq_put_right:Nn \c__ctex_headings_seq { lstlisting } \seq_remove_duplicates:N \c__ctex_headings_seq -\cs_new_protected:Npn \eb_toc_entry_if_hang:n #1 - { - \bool_if:NTF \l__eb_toc_entry_hang_bool - { \contentspush } - { \use:n } - { - \bool_if:NTF \l__eb_toc_number_color_bool - { \textcolor{ctex@toc@number} } - { \use:n } - { \thecontentslabel } - \tl_use:c { l__eb_toc_#1_after_tl } - } - } \cs_new_protected:Npn \eb_toc_format_define:n #1 { \ctex_define:n @@ -1541,30 +1528,71 @@ #1/tocformat+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1}, #1/tocformat~+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1}, #1/tocindent .tl_set:c = l__eb_toc_#1_indent_tl, + #1/toclabel .cs_set:cp = { eb_toc_entry_#1:nnn } ##1##2##3, #1/tocrule .tl_set:c = l__eb_toc_#1_rule_tl, #1/tocafter .tl_set:c = l__eb_toc_#1_after_tl, - #1/tocbelow .tl_set:c = l__eb_toc_#1_below_tl + #1/tocbelow .tl_set:c = l__eb_toc_#1_below_tl, + #1/tocbegin .meta:n = { #1/tocbelow = {##1} }, + #1/tocsep .tl_set:c = l__eb_toc_#1_sep_tl, + #1/tocend .tl_set:c = l__eb_toc_#1_end_tl } } -\cs_new_protected:Npn \eb_toc_format_initial:n #1 +\tl_new:N \l_eb_tmpa_tl +\tl_new:N \l_eb_tmpb_tl +\cs_new_protected:Npn \eb_toc_format_initial:nn #1#2 { - \titlecontents{#1} - [\tl_use:c { l__eb_toc_#1_indent_tl }] - {\tl_use:c { l__eb_toc_#1_format_tl }} - {\eb_toc_entry_if_hang:n {#1}}{} - {\tl_use:c { l__eb_toc_#1_rule_tl }} - [\tl_use:c { l__eb_toc_#1_below_tl }] - \ctex_set:nn {#1} + \exp_last_unbraced:Nx + \use:n + { + \exp_not:N + \titlecontents + \tl_use:N \l_eb_tmpa_tl + \exp_not:n + { + {#2} + [\tl_use:c { l__eb_toc_#2_indent_tl }] + {\tl_use:c { l__eb_toc_#2_format_tl }} + {\use:c { eb_toc_entry_#2:nnn } { \thecontentslabel } {#2} {#1}}{} + {\tl_use:c { l__eb_toc_#2_rule_tl }} + [\tl_use:c { l__eb_toc_#2_below_tl }] + } + \exp_not:o { \l_eb_tmpb_tl } + } + \ctex_set:nn {#2} { tocindent = 0em, - tocrule = \tocrule{$\cdot$}, - tocafter = \hspace{1em} + tocrule = \IfBooleanTF{#1}{,~\thecontentspage}{\tocrule{$\cdot$}}, + toclabel = + { + \bool_if:NTF \l__eb_toc_entry_hang_bool + { \IfBooleanTF{##3}{\use:n}{\contentspush} } + { \use:n } + { + \bool_if:NTF \l__eb_toc_number_color_bool + { \textcolor{ctex@toc@number} } + { \use:n } + { ##1 } + \tl_use:c { l__eb_toc_##2_after_tl } + } + }, + tocafter = \hspace{1em}, + tocsep = .—, + tocend = . } } -\cs_new_protected:Npn \RegisterTocName #1 +\NewDocumentCommand{\RegisterTocName}{sm} { - \eb_toc_format_define:n {#1} - \eb_toc_format_initial:n {#1} + \IfBooleanT{#1} + { + \tl_set:Nn \l_eb_tmpa_tl {*} + \tl_set:Nn \l_eb_tmpb_tl + { + [\tl_use:c { l__eb_toc_#2_sep_tl }] + [\tl_use:c { l__eb_toc_#2_end_tl }] + } + } + \eb_toc_format_define:n {#2} + \eb_toc_format_initial:nn {#1} {#2} } \seq_map_function:NN \c__ctex_headings_seq \RegisterTocName @@ -2392,7 +2420,7 @@ } %</package> %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2024/04/02}{2024ar} +\ProvidesExplFile{eb-tcolorbox.cfg}{2024/04/19}{2024as} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf Binary files differindex 505b625244..f2c68334c9 100644 --- a/macros/latex/contrib/easybook/easybook.pdf +++ b/macros/latex/contrib/easybook/easybook.pdf diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index edd3c476ce..d4025ca7e0 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -23,8 +23,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v2024ar, - date = 2024/04/02, + version = v2024as, + date = 2024/04/19, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, email = toquyi@163.com, @@ -113,6 +113,7 @@ \IfBooleanF{#1}{\cnltx@checkdefault{\hfill\newline}} } \newnote{\newtag}[1][New]{\fbox{#1}} +\newnote{\newtagv}[2][New]{#1\\#2} % Multi-row values alignment when there are many choices \newcommand{\leftfillchoice}[2] { @@ -831,6 +832,8 @@ \command{tocrule}[\sarg\harg\oarg{引导点间距}\darg{放大因子}\marg{引导点}\oarg{页码格式}] 生成目录引导线的命令,需要在引导线选项 \option{tocrule} 中使用。带有星号的命令与 \keyis{dotalign}{false} 效果相同。命令带 \harg{} 号参数不添加目录页码,此时无格式的页码被保存在 \cs{thecontentspage} 命令中,可以配合盒子命令设置不同的页码左右间距和对齐方式。\meta{引导点间距} 需带有长度单位,\meta{放大因子} 为 \meta{引导点} 的放大倍数。\meta{页码格式} 中最后一个命令可以带有一个参数为页码编号。 \end{commands} + \keyval{toclabel}{标题标签格式}\dtag\newtagv{2024as}% + 目录中各类型条目标题标签的格式,可与 \option{tocline} 选项联用设置标题。其中参数 \code{\#1} 代表标签的编号 \cs{thecontentslabel},参数 \code{\#2} 代表 \meta{条目名}。 \keyval{tocafter}{距离命令}\dtag\Default{\cs*{hspace}\Marg{1em}} 目录条目标签与标题间的代码,默认为插入 \code{1em} 横向距离。 \keyval{tocbelow}{距离命令}\dtag @@ -847,14 +850,23 @@ tocrule = \tocrule[0.6pc](1.1){.}[\zihao{5}], tocline = \CTEXnumberline{#1}#2 }, - section/tocrule = \tocrule-{}\makebox[1cm]{\rlap{\thecontentspage}} + section/toclabel = \contentspush{#1\hspace{0.5em}}, + section/tocrule = \tocrule-{}\makebox[1cm]{\rlap{\thecontentspage}} } \end{ctexexam} \end{options} \begin{commands} - \command{RegisterTocName}[\marg{条目名}] - 给条目类型名称为 \meta{条目名} 的标题注册用于设置目录样式的选项,即选项前有符号 \ding{73} 表示需要注册后使用。前面提到的条目类型均已注册,新类型的条目注册后选项初始值与图表条目相同。 + \command{RegisterTocName}[\sarg\marg{条目名}] + 给条目类型名称为 \meta{条目名} 的标题注册用于设置目录样式的选项,即选项前有符号 \ding{73} 表示需要注册后使用。前面提到的条目类型均已注册,新类型的条目注册后选项初始值与图表条目相同。带有星号参数的命令使注册目录的条目形成一个段落,此时多出下面三个选项可用: + \begin{options} + \keyval{tocbegin}{开始代码}\dtag\newtagv{2024as}% + 当前级别目录条目第一个标题前的代码,仅在存在更高级别的条目时有效。 + \keyval{tocsep}{中间代码}\dtag\Default{\Marg{.—}}\newtagv{2024as}% + 当前级别目录条目每个标题之间的代码。 + \keyval{tocend}{结束代码}\dtag\Default{\Marg{.}}\newtagv{2024as}% + 当前级别目录条目最后一个标题后的代码。 + \end{options} \command{contentsuse}[\marg{条目名}\marg{扩展名}] 激活条目类型名称为 \meta{条目名} 的目录定制功能,它使用的目录文件后缀为 \meta{扩展名}。需要在激活条目后再使用命令 \cs{RegisterTocName} 注册选项。 \command{DeclareFloatList}[\marg{条目名}\marg{扩展名}] @@ -869,7 +881,7 @@ \DeclareFloatList{algorithm}{loa} \listofalgorithms[multoc] % 在正文中输出双栏算法目录 \end{ctexexam} - \command{AllotCaptionExt}[\marg{条目名}\marg{扩展名}]\newtag% + \command{AllotCaptionExt}[\marg{条目名}\marg{扩展名}] 给条目类型名称为 \meta{条目名} 的标题分配目录文件 \meta{扩展名},注意 \meta{扩展名} 需要被定义在 \cs*{ext@}\meta{条目名} 命令中才有效(\pkg*{caption} 宏包的默认定义形式)。可以使不同的 \meta{条目名} 共享一个目录: \begin{ctexexam} \AllotCaptionExt{table}{lof} @@ -1421,6 +1433,13 @@ \item 新增目录文件扩展名分配命令 \cs{AllotCaptionExt}。 \end{version} \shortversion{v = 2024aq,date = 2022/03/31,changes = 修复命令 \cs{ebifbitoc} 用于条目缩进选项 \option{tocindent} 失效的问题。} + \begin{version}[v = 2024as,date = 2024/04/19] + \changed + \item 目录条目样式注册命令 \cs{RegisterTocName} 增加星号参数,支持设置段落型目录。 + \added + \item 新增目录条目标题标签设置的选项 \option{toclabel}。 + \item 新增段落型目录条目附加代码的选项 \option{tocbegin}、\option{tocsep} 和 \option{tocend}。 + \end{version} \end{changelog} \nocite{*} diff --git a/macros/latex/contrib/fadingimage/README.md b/macros/latex/contrib/fadingimage/README.md index 7140d126e3..d62c0a6078 100644 --- a/macros/latex/contrib/fadingimage/README.md +++ b/macros/latex/contrib/fadingimage/README.md @@ -1,9 +1,9 @@ -# The `FadingImage` package +# The `fadingimage` package -This package provides two commands for adding fading full width picture at the top or bottom of a page. +This package provides three commands for adding fading full width picture at the top or bottom of a page. **Welcome to pull requests -[here](https://github.com/xiamyphys/FadingImage).** +[here](https://github.com/xiamyphys/fadingimage).** ## License diff --git a/macros/latex/contrib/fadingimage/doc/fadingimage.pdf b/macros/latex/contrib/fadingimage/doc/fadingimage.pdf Binary files differindex f0e81ecf62..85856e112f 100644 --- a/macros/latex/contrib/fadingimage/doc/fadingimage.pdf +++ b/macros/latex/contrib/fadingimage/doc/fadingimage.pdf diff --git a/macros/latex/contrib/fadingimage/doc/fadingimage.tex b/macros/latex/contrib/fadingimage/doc/fadingimage.tex index 043d13b129..2aa6637e95 100644 --- a/macros/latex/contrib/fadingimage/doc/fadingimage.tex +++ b/macros/latex/contrib/fadingimage/doc/fadingimage.tex @@ -1,60 +1,55 @@ -\documentclass[11pt]{article} -\usepackage{geometry,indentfirst,titlesec,authblk,hyperref} +\documentclass[11pt,svgnames]{article} +\usepackage{geometry,titlesec,authblk,hyperref,hologo} \titleformat*{\section}{\bfseries\large} -\usepackage{datetime} -\usepackage[libertine,mono=false]{libertine} +\hologoFontSetup{general=\sffamily} +\usepackage{datetime}\yyyymmdddate +\usepackage[libertine,mono=false]{newtx} \usepackage{fadingimage} -\hypersetup{colorlinks,urlcolor=moducolor} -\definecolor{pkgcolor}{Hsb}{103,.8,.5} -\definecolor{moducolor}{Hsb}{290,.8,.5} -\definecolor{cmdcolor}{Hsb}{188,.8,.5} -\def\pkg#1{\texorpdfstring{\textcolor{pkgcolor}{ - \href{https://ctan.org/pkg/#1}{\textsf{#1}}}}{“#1”}} -\def\mode#1{\texorpdfstring{\textcolor{moducolor}{\textsf{#1}}}{“#1”}} -\def\cmd#1{\texorpdfstring{\textcolor{cmdcolor}{\textsf{#1}}}{“#1”}} -\def\datechange#1#2{% - \noindent{\makebox[\textwidth][r]{\color{H7}\rule{1.15\textwidth}{.4pt}}} - \noindent\makebox[0pt][r]{\makebox[-3em][r]{\small\textbf{\textcolor{H7}{#1}}}\;\;}{\sffamily Update: \ignorespaces#2}} - -\title{\bfseries The \pkg{FadingImage} Package} -\author{Hsia Mingyu, \href{https://www.hdu.edu.cn}{Hangzhou Dianzi University}} -\yyyymmdddate\date{\today} -\affil{\href{mailto:xiamyphys@gmail.com}{\ttfamily xiamyphys@gmail.com}} -\date{\today\quad Version 0.1d\thanks{\url{https://github.com/xiamyphys/FadingImage}}} -\begin{document} +\hypersetup{colorlinks,urlcolor=MidnightBlue} +\def\pkg#1{\textcolor{DarkGreen}{\textsf{#1}}} +\def\mode#1{\textcolor{Indigo}{\textsf{#1}}} +\def\cmd#1{\textcolor{MidnightBlue}{\texttt{\string#1}}} + +\title{\bfseries The \pkg{fadingimage} Package} +\author{Mingyu Hsia, \href{mailto:xiamyphys@gmail.com}{\ttfamily xiamyphys@gmail.com}} +\affil{Hangzhou Dianzi University} +\date{\today\quad Version 0.2a\thanks{\url{https://github.com/xiamyphys/fadingimage}}} +\begin{document} \maketitle \UPFadingImage[trim={0 {.96\paperheight} 0 0},clip]{Beautiful-realities} \LOWFadingImage[trim={0 0 0 {.96\paperheight}},clip]{Beautiful-realities} \vspace{-6ex} \begin{abstract} -This is \textsf{\textbf{not only the document but also the demo}} for the \pkg{FadingImage} package, which provides three commands for adding fading full width picture at the top, bottom or both of them on a page. And this package is used for my template \pkg{LiteBook} and \pkg{LiteSolution}. + +This is \textsf{\textbf{not only the document but also the demo}} for the \pkg{fadingimage} package, which provides three commands for adding fading full width picture at the top, bottom or both of them on a page. This package is contained in the \pkg{LiteBook} and \pkg{LiteSolution} class. + +Welcome to feedback bugs or ideas via email \href{mailto:xiamyphys@gmail.com}{\ttfamily xiamyphys@gmail.com} or \href{https://github.com/xiamyphys/fadingimage}{GitHub}. + \end{abstract} -\section{The purpose of this package} -This package provides three commands for adding fading full width picture at the top or bottom of a page. Welcome to feedback bugs or ideas via email \href{mailto:xiamyphys@gmail.com}{\ttfamily xiamyphys@gmail.com} or \href{https://github.com/xiamyphys/fadingimage}{GitHub}. +\section{Installing \pkg{fadingimage} and loading it} This package requires \pkg{tikz} package to node images and \pkg{fading} library to support fading image. -\section{Loading \pkg{FadingImage}} -I strongly advise you to use terminal/cmd to implement the commands to update all the packages (and install this package) to the latest version or switch to portable version instead +Simply download \verb|fadingimage.cls| file from \href{https://github.com/xiamyphys/fadingimage}{GitHub} or \href{https://ctan.org/pkg/fadingimage}{CTAN} and save it under your working directory. However, I strongly suggest to use terminal to install and update all packages to the latest version + \begin{verbatim} - sudo tlmgr update --self --all + sudo tlmgr update --self --all \end{verbatim} +To learn more, please refer to \href{https://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution}{How do I update my \hologo{TeX} distribution?} + \section{Commands \cmd{UPFadingImage}, \cmd{LOWFadingImage} and \cmd{UPLOWFadingImage}} -\begin{small} -\begin{verbatim} - \UPFadingImage [<keyval list>]{<file>} \LOWFadingImage[<keyval list>]{<file>} - \UPFadingImage [<keyval list>]{<file>} [<keyval list>]{<file>} -\end{verbatim} -\end{small} -The first two commands all have 2 variables and the first one is optional. The second variable of the commands can assign the image that you want to insert, and the first one can assign the parameters of command \cmd{includegraphics}, such as clip to the inserted image. +\begin{small}\begin{verbatim} + \UPFadingImage [<keyval list>]{<file>} \LOWFadingImage[<keyval list>]{<file>} + \UPLOWFadingImage[<keyval list>]{<file>}[<keyval list>]{<file>} +\end{verbatim}\end{small} -The third command is a combination of the first two commands and it will call the \cmd{tikz} environment for only once time to reduce compile time. +The first two commands all have 2 variables and the first one is optional. The second variable of the commands can assign the image that you want to insert, and the first one can assign the parameters of command \cmd{includegraphics}, such as clip to the inserted image. -If a star (*) is added after the commands (such as \verb|\UPFadingImage*[...]{...}|), then the image you inserted won't be faded. +The third command is just a combination of the first two commands. If a star (*) is added after the commands above, the image you inserted won't be faded. \end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/fadingimage/tex/fadingimage.sty b/macros/latex/contrib/fadingimage/tex/fadingimage.sty index 2b63cf0cbe..6cfceced3b 100644 --- a/macros/latex/contrib/fadingimage/tex/fadingimage.sty +++ b/macros/latex/contrib/fadingimage/tex/fadingimage.sty @@ -1,24 +1,25 @@ -%% **************************************************************************************************** -%% Copyright 2024 by Mingyu Hsia <xiamyphys@gmail.com> * -%% * -%% This work may be distributed and/or modified under * ***** * * * -%% the conditions of the LaTeX Project Public License * ** * * *** * * * -%% * * ** * * * ** * -%% http://www.latex-project.org/lppl.txt * * * * ***** ** * -%% * * ** * * * * * -%% either version 1.3c of this license or any later ***** ** * * *** * * * -%% version. * -%% * -%% This work has the LPPL maintenance status `maintained'. * -%% * -%% The Current Maintainer of this work is Mingyu Hsia. * -%% * -%% This work consists of the files fadingimage.sty, * -%% and README.md. * -%% available at https://github.com/xiamyphys/FadingImage * -%% **************************************************************************************************** +%% *********************************************************** +%% Copyright 2024 by Mingyu Hsia <xiamyphys@gmail.com> * +%% * +%% This work may be distributed and/or modified under * +%% the conditions of the LaTeX Project Public License * +%% * +%% http://www.latex-project.org/lppl.txt * +%% * +%% either version 1.3c of this license or any later * +%% version. * +%% * +%% This work has the LPPL maintenance status `maintained'. * +%% * +%% The Current Maintainer of this work is Mingyu Hsia. * +%% * +%% This work consists of the files fadingimage.cls, * +%% and README.md. * +%% available at https://github.com/xiamyphys/fadingimage * +%% *********************************************************** +% !Mode:: "TeX:UTF-8" \NeedsTeXFormat{LaTeX2e}[2020/10/01] -\ProvidesPackage{fadingimage}[2024/03/17/ v0.1d Package for adding fading full width picture at the top or bottom of a page.] +\ProvidesPackage{fadingimage}[2024/04/19/ v0.2a Package for adding fading full width picture at the top and bottom of a page.] \RequirePackage{tikz,xcolor} \usetikzlibrary{fadings} @@ -32,7 +33,6 @@ \node[scope fading=south,below,inner sep=0pt,outer sep=auto] at (current page.north) {\includegraphics[width=\paperwidth,#2]{#3}}; } } - \NewDocumentCommand{\LOWFadingImage}{ s O{} m }{ \IfBooleanTF{#1} { diff --git a/macros/latex/contrib/notebeamer/doc/images/newnote3sdemo.pdf b/macros/latex/contrib/notebeamer/doc/figures/beamerdemo.pdf Binary files differindex 4df7320730..d4b3615265 100644 --- a/macros/latex/contrib/notebeamer/doc/images/newnote3sdemo.pdf +++ b/macros/latex/contrib/notebeamer/doc/figures/beamerdemo.pdf diff --git a/macros/latex/contrib/notebeamer/doc/figures/paperdemo.pdf b/macros/latex/contrib/notebeamer/doc/figures/paperdemo.pdf Binary files differnew file mode 100644 index 0000000000..158ef35fe8 --- /dev/null +++ b/macros/latex/contrib/notebeamer/doc/figures/paperdemo.pdf diff --git a/macros/latex/contrib/notebeamer/doc/images/HDU.pdf b/macros/latex/contrib/notebeamer/doc/images/HDU.pdf Binary files differdeleted file mode 100644 index cb9ba414c8..0000000000 --- a/macros/latex/contrib/notebeamer/doc/images/HDU.pdf +++ /dev/null diff --git a/macros/latex/contrib/notebeamer/doc/images/Inuyasa.jpg b/macros/latex/contrib/notebeamer/doc/images/Inuyasa.jpg Binary files differdeleted file mode 100644 index 3d473bf869..0000000000 --- a/macros/latex/contrib/notebeamer/doc/images/Inuyasa.jpg +++ /dev/null diff --git a/macros/latex/contrib/notebeamer/doc/images/newnote4sdemo.pdf b/macros/latex/contrib/notebeamer/doc/images/newnote4sdemo.pdf Binary files differdeleted file mode 100644 index 581fbd1b1d..0000000000 --- a/macros/latex/contrib/notebeamer/doc/images/newnote4sdemo.pdf +++ /dev/null diff --git a/macros/latex/contrib/notebeamer/doc/images/newnotedemo.pdf b/macros/latex/contrib/notebeamer/doc/images/newnotedemo.pdf Binary files differdeleted file mode 100644 index 5c0c4ab077..0000000000 --- a/macros/latex/contrib/notebeamer/doc/images/newnotedemo.pdf +++ /dev/null diff --git a/macros/latex/contrib/notebeamer/doc/images/titlepage1.pdf b/macros/latex/contrib/notebeamer/doc/images/titlepage1.pdf Binary files differdeleted file mode 100644 index fd79019286..0000000000 --- a/macros/latex/contrib/notebeamer/doc/images/titlepage1.pdf +++ /dev/null diff --git a/macros/latex/contrib/notebeamer/doc/images/titlepage2.pdf b/macros/latex/contrib/notebeamer/doc/images/titlepage2.pdf Binary files differdeleted file mode 100644 index bd9ddb1eb2..0000000000 --- a/macros/latex/contrib/notebeamer/doc/images/titlepage2.pdf +++ /dev/null diff --git a/macros/latex/contrib/notebeamer/doc/notebeamer-demo.pdf b/macros/latex/contrib/notebeamer/doc/notebeamer-demo.pdf Binary files differdeleted file mode 100644 index ffb1857726..0000000000 --- a/macros/latex/contrib/notebeamer/doc/notebeamer-demo.pdf +++ /dev/null diff --git a/macros/latex/contrib/notebeamer/doc/notebeamer-demo.tex b/macros/latex/contrib/notebeamer/doc/notebeamer-demo.tex deleted file mode 100644 index 4944572ba3..0000000000 --- a/macros/latex/contrib/notebeamer/doc/notebeamer-demo.tex +++ /dev/null @@ -1,29 +0,0 @@ -\documentclass[darker,libertinus,colorful]{notebeamer} -\begin{document} - % Assign the author & mail address - \author{Axia} \mail{xiamyphys@gmail.com} - % Assign the titlepage, sitcker and logo file - \flyleaf{titlepage1.pdf} \sticker{Inuyasa.jpg} - % Assign the logo link and info - \logo[https://sci.hdu.edu.cn]{HDU.pdf}[Hangzhou·Zhejiang] - % Create a cover page with color H6, title and subtitle - \notebook[H6]{Quantum Transport}[Dirac Fermion Discussion Group] - % Assign the chapter title and the file will be inserted after - \chapter[PHYSICAL REVIEW B VOLUME 50, NUMBER 8]{newnotedemo.pdf} - % Insert the page 3--4 of the file with the format 1 image per page - \newnote{3}{4} - % Change the titlepage in the subsequent notebooks - \flyleaf{titlepage2.pdf} - % Create a cover page with color H5, title - \notebook[H5]{AQM \& SPD} - \chapter[Introduction \& Fundamental Concepts]{newnote3sdemo.pdf} - % Insert the page 1--2, 4--6 of the file with the format 3 images per page - \newnotesss{1}{2} \newnotesss{3}{6} - \chapter*[SPD Basic: Transport]{newnote4sdemo.pdf} - % Insert the page 1--2, 4--6, 7--10 of the file with the format 4 images per page - \newnotessss{1}{2} \newnotessss{4}{6} \newnotessss{7}{10} - % Create an empty note paper with no page number - \emptynote*[2] - % Create an empty note paper with logo and info but no page number - \emptyhdunote*[2] -\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/notebeamer/doc/notebeamer-doc.pdf b/macros/latex/contrib/notebeamer/doc/notebeamer-doc.pdf Binary files differdeleted file mode 100644 index 5d7eac9fb8..0000000000 --- a/macros/latex/contrib/notebeamer/doc/notebeamer-doc.pdf +++ /dev/null diff --git a/macros/latex/contrib/notebeamer/doc/notebeamer-doc.tex b/macros/latex/contrib/notebeamer/doc/notebeamer-doc.tex deleted file mode 100644 index 8df6c4bb8a..0000000000 --- a/macros/latex/contrib/notebeamer/doc/notebeamer-doc.tex +++ /dev/null @@ -1,285 +0,0 @@ -%% ****************************************************** -%% * This work may be distributed and/or modified under * -%% * the conditions of the LaTeX Project Public License * -%% * http://www.latex-project.org/lppl.txt * -%% * either version 1.3c of this license or any later * -%% * version. * -%% ****************************************************** -\documentclass[11pt]{article} -\usepackage{geometry} -\usepackage{pdfpages} -\usepackage[level]{datetime} -\usepackage{unicode-math} -\usepackage{authblk} -\setmainfont{Libertinus Serif} -\setsansfont{Libertinus Sans} -\setmonofont{NotoSansMono}[ - Scale=MatchLowercase, - Extension=.ttf, - UprightFont=*-Light, - BoldFont=*-Medium -] -\makeatletter -\usepackage{listings,dirtree} -\lstdefinestyle{TeX}{ - language = [LaTeX]TeX, - texcsstyle = *\color{H7}, - numbers = none, - basicstyle = {\small\color{H6}\tt}, - mathescape = false, - breaklines = true, - columns = fixed, - keywordstyle = \color{H3}, - commentstyle = \color{darkgray}, - tabsize = 2, - keywords = {mail,flyleaf,sticker,logo,notebook,chapter,newnote,newnotesss,newnotessss,emptynote,emptyhdunote} -} -\usepackage{hyperref,xcolor,verbatim} -\definecolor{pkgcolor}{Hsb}{103,.8,.5} -\definecolor{moducolor}{Hsb}{290,.8,.5} -\definecolor{cmdcolor}{Hsb}{188,.8,.5} -\definecolor{filecolor}{Hsb}{207,.6,.7} -\definecolor{H1}{Hsb}{349,.8,.8}% 海棠紅 (Hangzhou MTR L 1 ) -\definecolor{H2}{Hsb}{23, .8,.8}% 丹桂橙 (Hangzhou Metro 2 ) -\definecolor{H3}{Hsb}{48, .8,.8}% 柠檬黄 (Hangzhou Metro 3 ) -\definecolor{H4}{Hsb}{103,.8,.8}% 香樟绿 (Hangzhou Metro 4 ) -\definecolor{H5}{Hsb}{188,.8,.8}% 青藍色 (Hangzhou MTR L 5 ) -\definecolor{H6}{Hsb}{207,.8,.8}% 海洋蓝 (Hangzhou Metro 6 ) -\definecolor{H7}{Hsb}{290,.8,.8}% 浪漫紫 (Hangzhou Metro 7 ) -\hypersetup{colorlinks,urlcolor=H1,linkcolor=H2,filecolor=filecolor,pdfstartview=FitH,pdfview=FitH,pdfcreator=XeTeX output} - -\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.1em}} -\def\@pkg#1{\texorpdfstring{\href{https://www.ctan.org/pkg/#1}{\textcolor{pkgcolor}{\textsf{#1}}}}{“#1”}} -\def\s@pkg#1{\texorpdfstring{\textcolor{pkgcolor}{\textsf{#1}}}{“#1”}} -\DeclareRobustCommand\pkg{\@ifstar\s@pkg\@pkg} -\def\mode#1{\texorpdfstring{\textcolor{moducolor}{\textsf{#1}}}{“#1”}} -\def\cmd#1{\texorpdfstring{\textcolor{cmdcolor}{\textsf{#1}}}{“#1”}} -\def\datechange#1#2{% - \noindent{\makebox[\textwidth][r]{\color{H7}\rule{1.15\textwidth}{.4pt}}} - \noindent\makebox[0pt][r]{\makebox[-3em][r]{\small\textbf{\textcolor{H7}{#1}}}\;\;}{\sffamily Update: \ignorespaces#2}} -\makeatother - -\title{The \pkg{NoteBeamer} Template} -\author[1]{Xia Ming Yu, \href{https://www.hdu.edu.cn}{Hangzhou Dianzi University}} -\yyyymmdddate -\date{\today} -\affil[1]{\href{mailto:xiamyphys@gmail.com}{\texttt{xiamyphys@gmail.com}}} -\date{\today\quad Version 2.3a} -\begin{document} -\maketitle - -\begin{abstract} -This is the document for \pkg{NoteBeamer} template, which provides a method to input Beamers on note papers and make notebook quickly. - -GitHub issues: \url{https://github.com/xiamyphys/NoteBeamer/issues} - -\end{abstract} - -\tableofcontents - -\section{Introduction} - -\subsection{The purpose of this template} -This template provides an easy way to input Beamers on note papers and make notebook quickly. It's optimized for Goodnotes' default paper size and there won't have difference between papers. - -If you meet bugs when using this template, or you have better suggestions or ideas, or you want to participate in the development of the template or other templates by me, feel free to contact me on GitHub \href{https://github.com/xiamyphys/NoteBeamer/issues}{issues} or via email \href{mailto:xiamyphys@gmail.com}{xiamyphys@gmail.com}. - -Also, you can join my \textsf\LaTeX{} Template Discussion \href{https://qm.qq.com/q/OnHzbNvVAG}{QQ Group: 760570712} to communicate with me and get the insider preview edition of the template. - -\subsection{Packages required} -This template is based on the template \pkg{standalone}. And it requires \pkg{tikz} package to plot some graphics, \pkg{kvoptions} and \pkg{etoolbox} packages to provide global options, \pkg{graphics} package to provide the \mode{draft} mode, \pkg{hyperref} package provides link jump function, \pkg{ctex} package to support the \textbf{Chinese, Simplified} language and \pkg{fontawesome5} package to provide a set of beautiful icons. - -I strongly suggest that you should use cmd to implement the commands to update all the packages to the latest version or switch to portable version instead. -\begin{verbatim} - tlmgr update --self - tlmgr update --all -\end{verbatim} - -Remember to choose the proper mirror source in your region. To learn more, please refer to \href{https://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution}{How do I update my TEX distribution?} - -\subsection{Loading \pkg{NoteBeamer} and its modes} -Update your \sffamily\TeX distribution or just save the file \verb|notebeamer.cls| to your project's root directory, then create a \verb|.tex| file, just input the command \verb|\documentclass{notebeamer}| on the first line. - -The template provides three modes: \mode{draft}, \mode{color} and \mode{font}. Just add the options of the modes separately by commas in the square bracket of the command in your \verb|.tex| file, such as - -\begin{verbatim} - \documentclass[draft,darker,libertinus]{notebeamer} -\end{verbatim} - -\section{Modes of \pkg{NoteBeamer}} - - -\subsection{The \mode{draft} mode} -Like most of the templates, this template also provide all modes provided by \pkg{graphics} package such as \mode{draft}, \sffamily\TeX{} will only read for size info of pages you input, and a box of the correct size is printed with the filename in. - -This can accelerate the speed of compile, and you can preview the effect quickly when you input a file with too many pages and (or) its size is too large. After you make sure that there's no formatting errors, you can cancel this mode just to wait until compiled. - -The files corresponding to the commands \cmd{sticker}, \cmd{logo} and \cmd{flyleaf} can be stored in a folder named \verb|figure(s)|, \verb|image(s)|, \verb|graphic(s)| or \verb|picture(s)|, and you needn't to write these directories again in these commands because this template has already set these directories as indexes. Just as shown in the file tree in the example in \nameref{dirtree}. - -\subsection{The \mode{saturation} mode} -This mode has three options, \mode{lighter} \mode{light}, \mode{normal}, \mode{dark} and \mode{darker}, which can make the color of the covers you create in this template get lighter or darker, and the default option is \mode{normal}. - -\subsection{The \mode{color} mode} -This mode has two options, \mode{main} and \mode{colorful}, which can make the color of the note line remains or keep the same hues as the cover, and the default option is \mode{main}. - -\subsection{The \mode{font} mode} -This mode has two options, \mode{times} and \mode{libertinus}, which can deside which font the notebook will use: The default \emph{New Times Roman} font or the \emph{Libertinus} font. You can use Libertinus fonts if you've installed it on your computer, and the default option is \mode{times}. - -\section{Commands of \pkg{NoteBeamer}} - -\subsection{The \cmd{author}, \cmd{mail}, \cmd{flyleaf}, \cmd{sticker} and \cmd{logo} commands} -\begin{verbatim} - \author{Your Name} \mail{Your Mail Address} - \flyleaf{titlepage.pdf} \sticker{sticker.png} - \logo[link]{logofile.pdf}[info] -\end{verbatim} -\begin{itemize} - \item \cmd{author}, \cmd{mail} and \cmd{flyleaf} command. - - There will be an author's name or (and) mail on the cover page after you use the command \cmd{author} or (and) \cmd{mail}, also a hyperlink will be added to the email address. A title page will automatically be added after the cover page after you use the command \cmd{flyleaf}. - - \item \cmd{sticker} and \cmd{logo} command. - - There will be a sticker on the southeast of the note paper after you add, and there will be a logo on the northwest corner of the cover page and HDU note paper; otherwise it won't. - - The first and third variable of the command \cmd{logo} can assign the link and info of the logo, which are optional. -\end{itemize} - -\paragraph{The commands above are all repeatable, which can reassign the values that these commands assigned before.} - -\subsection{The \cmd{notebook} command} - -\begin{verbatim} - \notebook[color]{title}[subtitle] -\end{verbatim} - -This command can create a cover. There are 7 colors for the cover, these colors' Hues are from Hangzhou MTR line 1 -- 7, they are \textcolor{H1}{H1. \textsf{\href{https://en.wikipedia.org/wiki/Malus_spectabilis}{Haitang} Red}}, \textcolor{H2}{H2. \textsf{Dangui orange}}, \textcolor{H3}{H3. \textsf{Lemon yellow}}, \textcolor{H4}{H4. \textsf{Camphor green}}, \textcolor{H5}{H5. \textsf{Cyan}}, \textcolor{H6}{H6.\textsf{ Ocean Blue}} and \textcolor{H7}{H7. \textsf{Romantic purple}}. - -Here, the second value \verb|title| is mandatory, and it can add the title above the center of the cover page while the third value \verb|subtitle| is optional, and it can add the subtitle vertically to the lower left of the center. The first variable is from \textcolor{H1}{H1} to \textcolor{H7}{H7} and the default value is \textcolor{H5}{H5}. - -If a star (*) is added after this command, there will be an empty note after the cover page (or the title page if you assigned in the command \cmd{flyleaf}) automatically. - -\subsection{The \cmd{chapter} command} -\begin{verbatim} - \chapter[chaptertitle]{filename} \chapter*[chaptertitle]{filename} -\end{verbatim} - -This command has 2 variables: \verb|chaptertitle| and \verb|filename|, will assign the following chapter title and the file (such as PDF made from \textsf\LaTeX{}) will be inputted. Here, the value \verb|chaptertitle| is optional. - -If a star (*) is added after this command, the counter \verb|chap| won't take effect. - -\subsection{The \cmd{emptynote} \& \cmd{emptyhdunote} commands} -\begin{verbatim} - \emptynote \emptynote* \emptyhdunote \emptyhdunote* - \emptynote[1] \emptynote*[2] \emptyhdunote[3] \emptyhdunote*[4] -\end{verbatim} - -Command \cmd{emptynote} will create an empty note paper with the chapter title before and page number following the previous page, and command \cmd{emptyhdunote} will create an empty note paper with logo (may include link) and info were assigned by the command \cmd{logo} but without chapter title on the top of the note paper. - -If a star (*) is added after this command, then the note paper created won't include the chapter title and page number. Also, the counter \verb|page| won't take effect. - -There's one optional variable of these command, it decides the number of note papers you will create, and the default value is 1, certainly. - -\subsection{The \cmd{newnote (sss) (ssss)} commands} -\begin{verbatim} - \newnote{start page}{end page} % insert 1 image per page - \newnotesss{start page}{end page} % insert 3 images per page - \newnotessss{start page}{end page} % insert 4 images per page -\end{verbatim} - -These commands will create note papers that were inserted images on the left side, the two variables is the start page number and the end page number of the file that was already assigned by the second variable of the command \cmd{chapter}. - -\section{Version History} - -In the Advanced Quantum Mechanics class on 19 October 2023, my \emph{obsessive-compulsive disorder} forced me to copy all the content projected by the teacher onto the whiteboard on my iPad, and I found that I only got a few pages full of notes without any knowledge understood in my brain after a class is over. Then, an idea suddenly occurred me: Why not create an automated program to quickly insert the Beamers given by the teacher before class with the format of several images per page? So I can just annotate on it and pay more attention to listen to the teacher. After the class ended that day, I went back to my dormitory and started writing programs in \textsf\LaTeX{}. - -\textsf{\bfseries Version 1.0} was finished developing on 22 October 2023 and released on \href{https://www.latexstudio.net/index/details/index/mid/3720.html}{LaTeX Studio} (Xiaoshan, Hangzhou) and \href{https://www.xiaohongshu.com/user/profile/61e7ad870000000010005642}{Xiaohongshu}, where won the favor of many people and even some people who have already retired from \textsf\LaTeX{} want to re-enter. - -On 24 October 2023, a member in the CMC competition WeChat group praised for my template, and proposed his idea: the template could be magically changed to insert a slightly smaller page of notes on the left side and take notes on the right side, because he found that he can only write in the corners when annotating some notes. It's a good idea, then I'm setting about developing the next version of the template. - -While considering the suggestions from friends, I am also thinking about how to simplify the previous code. Because in version 1.0, if one want to insert a Beamer with 78 images and make 3 images per page, then he should write the command \cmd{newnotesss} for 26 times, it's so inelegant... However, no matter how I write the loop, it can't meet my expectations or report errors. Then, I asked stackexchange for help, and finally a LaTeX programmer \href{https://tex.stackexchange.com/users/51799/wipet}{wipet} wrote the loop module for me. Here, I want to express my gratitude to him. - -\textsf{\bfseries Version 2.0a} was finished developing on 1 November 2023. This version not only simplified the commands to insert Beamers from to dozens of commands to only 1 command, but redesigned some details and functions. Firstly, this version supports to insert only one page of notes on the left side. What's more, this version supports to insert your school's logo on the cover page and empty note paper. Also, this version supports insert empty note papers without page number and chapter title with just add a star (*) after the command. Finally, this version can add a subtitle on the cover page, and redesign the colors (chosen from Hangzhou MTR) of the cover pages. - -\textsf{\bfseries Version 2.1a} was finished developing on 9 November 2023. This version has fixed some bugs, and now supports inserting non-consecutive page numbers of the same file, and you can insert a certain number of empty note papers with only one command. Also, this version has redesigned the top and bottom margins and the height between note lines in response to the suggestion from \href{https://qm.qq.com/q/OnHzbNvVAG}{QQ Group} member. What's more, this version supports the `Libertinus' font, which can make users have a better visual effect. - -\textsf{\bfseries Version 2.2b} was finished developing on 11 November 2023. This version has fixed some bugs, and partial commands in this version has changed to use \sffamily\LaTeX{2e} original commands. - -\textsf{\bfseries Version 2.3a} was finished developing on 15 November 2023. This version added the option to make the note lines colorful, and removed the packages that already available in the kernel. - -\newpage -\datechange{2023/11/01}{Version 2.0a} -\begin{itemize} - \item Simplify the command of inserting 3 \& 4 images per page. - \item Redesign the cover page \& note paper title. - \item Add commands to create empty note paper with(out) chapter title \& page number. - \item Add commands to create empty note paper with logo and info on the top. -\end{itemize} - -\datechange{2023/11/09}{Version 2.1a} -\begin{itemize} - \item Fixed the bug of page number errors when inserting the title page. - \item Fixed the bug of picture string position when inserting the first page number of courseware when the page number is not 1. - \item Supports inserting non-consecutive page numbers of the same file. - \item Supports inserting a certain number of empty note papers \& HDU empty note papers with only one command. - \item Support the `Libertinus' font. - \item Increased the top and bottom margins of the page by 18.8\% than before. - \item Other detailed adjustments. -\end{itemize} - -\datechange{2023/11/11}{Version 2.2b} -\begin{itemize} - \item Fixed the image position error when inserting 3 and 4 images per note page. - \item Partially using \sffamily\LaTeX{2e} original commands. -\end{itemize} - -\datechange{\today}{Version 2.3a} -\begin{itemize} - \item Added the option to make the note lines colorful. - \item Added another options in the mode \mode{saturation}. - \item Removed the packages that already available in the kernel. -\end{itemize} - -\newpage -\appendix -\section{Document Example} -\lstinputlisting[style=TeX]{notebeamer-demo.tex} - -\vspace{0.5em}\hrule\vspace{0.5em} - -\label{dirtree} -\begin{minipage}{0.48\textwidth} - \dirtree{% - .1 notebeamer/. - .2 doc/. - .3 images/. - .3 notebeamer-demo.tex. - .3 notebeamer-demo.pdf. - .3 notebeamer-doc.tex. - .3 notebeamer-doc.pdf. - .2 tex/. - .3 notebeamer.cls. - .2 License. - .2 README.md. - } -\end{minipage} -\hfill -\begin{minipage}{0.48\textwidth} - \dirtree{% - .1 doc/. - .2 images/. - .3 HDU.pdf. - .3 Inuyasa.jpg. - .3 titlepage1.pdf. - .3 titlepage2.pdf. - .3 newnotedemo.pdf. - .3 newnote3sdemo.pdf. - .3 newnote4sdemo.pdf. - .2 notebeamer-demo.tex. - .2 notebeamer-demo.pdf. - } -\end{minipage} - - -\includepdf[pages=-,nup=4x4]{notebeamer-demo.pdf} -\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/notebeamer/doc/notebeamer.pdf b/macros/latex/contrib/notebeamer/doc/notebeamer.pdf Binary files differnew file mode 100644 index 0000000000..804e18b158 --- /dev/null +++ b/macros/latex/contrib/notebeamer/doc/notebeamer.pdf diff --git a/macros/latex/contrib/notebeamer/doc/notebeamer.tex b/macros/latex/contrib/notebeamer/doc/notebeamer.tex new file mode 100644 index 0000000000..79f518807f --- /dev/null +++ b/macros/latex/contrib/notebeamer/doc/notebeamer.tex @@ -0,0 +1,135 @@ +\documentclass[11pt,svgnames]{article} +\usepackage[notelinecolor=MidnightBlue,notemargin=.75in]{notebeamer} +\usepackage{geometry,titlesec,authblk,hyperref,hologo,pgfpages,lipsum} +\titleformat*{\section}{\bfseries\large} +\titleformat*{\subsection}{\bfseries\normalsize} +\hologoFontSetup{general=\sffamily} +\usepackage{datetime}\yyyymmdddate +\usepackage[libertine,mono=false]{newtx} +\usepackage{listings} +\lstset{language=[LaTeX]TeX,basicstyle=\ttfamily,breaklines=true,columns=flexible} +\hypersetup{colorlinks,urlcolor=MidnightBlue} +\def\pkg#1{\textcolor{DarkGreen}{\textsf{#1}}} +\def\mode#1{\textcolor{Indigo}{\textsf{#1}}} +\def\cmd#1{\textcolor{MidnightBlue}{\texttt{\string#1}}} + +\title{\bfseries The \pkg{notebeamer} Package} +\author{Mingyu Hsia, \href{mailto:xiamyphys@gmail.com}{\ttfamily xiamyphys@gmail.com}} +\affil{Hangzhou Dianzi University} +\date{\today\quad Version 3.0a\thanks{\url{https://github.com/xiamyphys/notebeamer}}} + +\begin{document} +\maketitle + +\begin{abstract} + +This is the document for the \pkg{notebeamer} package, which provides an easy way to input slides on notepages quickly for making annotations. + +Welcome to feedback bugs or ideas via email \href{mailto:xiamyphys@gmail.com}{\ttfamily xiamyphys@gmail.com} or \href{https://github.com/xiamyphys/fadingimage}{GitHub}. + +\end{abstract} + +\section{Installing \pkg{notebeamer} and loading it} + +Simply download \verb|notebeamer.cls| file from \href{https://github.com/xiamyphys/notebeamer}{GitHub} or \href{https://ctan.org/pkg/fadingimage}{CTAN} and save it under your working directory. However, I strongly suggest to use terminal to install and update all packages to the latest version + +\begin{verbatim} + sudo tlmgr update --self --all +\end{verbatim} + +To learn more, please refer to \href{https://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution}{How do I update my \hologo{TeX} distribution?} + +\section{Key values of this package} + +\begin{verbatim} + \usepackage[notelinecolor=<color>,notemargin=<margin>]{notebeamer} +\end{verbatim} + +This package has two keys: \cmd{notelinecolor} and \cmd{notemargin}. + +The \cmd{notelinecolor} key can set the color notelines, the \cmd{notemargin} key can set the margin of notepages. + +If you have not set the keys, the default values of the four keys will be applied + +\begin{verbatim} + notelinecolor=MidnightBlue, notemargin=.75in +\end{verbatim} + +Please set the geometry for the whole document \textbf{after} you set the notemargin, that is + +\begin{verbatim} + \usepackage[notemargin=<margin>]{notebeamer} \geometry{<keyval list>} +\end{verbatim} + +otherwise the notemargin configuration won't work. + +\section{The margin of notepages} + +The relation of the margin of notepages and the margin configuration of package \pkg{geometry} satisfies the following expression + +\begin{verbatim} + topmargin = bottommargin = (\paperwidth-\textwidth)/3 + leftmargin = rightmargin = (2\paperheight-2\textheight)/5 +\end{verbatim} + +\section{Commands of \pkg{notebeamer}} + +\subsection{The \cmd{notechap} command} + +\begin{verbatim} + \notechap [<notetitle>] {<filename>} +\end{verbatim} + +This command can assign the following notetitle and the PDF file you want to input. + +\subsection{The \cmd{notelinenum} and \cmd{notecolumnratio} commands} + +\begin{verbatim} + \notelinenum{<number>} \notecolumnratio{<number>} +\end{verbatim} + +The two commands can assign the number of notelines and the ratio of columns on following notepages respectively. The default value of the number of notelines is \verb|27| and that of the ratio of columns is \verb|0.5|. + +\subsection{The \cmd{hidenotelinetrue} and \cmd{hidenotelinefalse} commands} + +Notepages after the \cmd{hidenotelinetrue} command the notelines will be hidden while notepages after command \cmd{hidenotelinefalse} the notelines will be restored. + +\subsection{The \cmd{newnotepage}} + +\begin{verbatim} + \newnotepage[<number>] \newnotepage*[<number>] +\end{verbatim} + +The \cmd{newnotepage} command can create empty notepage(s). If a star (*) is added after the command, the created empty notepage(s) won't have column rule. + +\subsection{The \cmd{includebeamer} command} + +\begin{verbatim} + \includebeamer[<number of slides per page>]{<start page>}{<end page>} +\end{verbatim} + +This commands will create notepages that were inserted images on the left sidnumber of slides per page and the last two variables can set the start page and end page of the PDF file you want to insert that assigned by the command \cmd{notechap}. + +\appendix +\section{The \pkg{litesolution} class} + +This class provides a lite design for typesetting solutions of exams, textbooks or other exercises. The \pkg{notebeamer} package is contained in the \pkg{litesolution} class now. + +\clearpage +\pgfpagesuselayout{4 on 1}[letterpaper] + +\notelinenum{27}\pagecolor{yellow!2} + +\notechap[Chapter 1. Introduction \& Fundamental Concepts]{figures/beamerdemo.pdf} +\notecolumnratio{.57} +\hidenotelinefalse \includebeamer[3]{2}{4} +\notecolumnratio{.43} +\hidenotelinetrue \includebeamer[4]{3}{6} + +\notechap[Phys. Rev. B. Volume 50, Number 8]{figures/paperdemo.pdf} +\notecolumnratio{.72} +\hidenotelinefalse \includebeamer[1]{2}{2} + +\notecolumnratio{.5} \newnotepage + +\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/notebeamer/tex/notebeamer.cls b/macros/latex/contrib/notebeamer/tex/notebeamer.cls deleted file mode 100644 index fef627cad0..0000000000 --- a/macros/latex/contrib/notebeamer/tex/notebeamer.cls +++ /dev/null @@ -1,314 +0,0 @@ -%% ************************************************************************************************************ -%% ****************************************************** * -%% * This work may be distributed and/or modified under * * ***** * * * -%% * the conditions of the LaTeX Project Public License * * ** * * *** * * * -%% * http://www.latex-project.org/lppl.txt * * * ** * ***** * * -%% * either version 1.3c of this license or any later * * * ** * ***** * * -%% * version. * * * ** * * * * * -%% ****************************************************** ***** ** * * *** * * * -%% start of file `notebeamer.cls'. * -%% Copyright 2023 LiteLaTeX (xiamyphys@gmail.com) * -%% available at https://github.com/xiamyphys/NoteBeamer * -%% Thanks `wipet' (https://petr.olsak.net/) provides Beamers automatically inserts module * -%% !Mode:: "TeX:UTF-8" * -%% ************************************************************************************************************ - -\NeedsTeXFormat{LaTeX2e} -\ProvidesClass{notebeamer}[2023/11/15 v2.3a NoteBeamer document class] - -%% Global opinions -\RequirePackage{kvoptions} -\RequirePackage{etoolbox} -\SetupKeyvalOptions{family=NB, prefix=NB@, setkeys=\kvsetkeys} -\def\ekv#1{\kvsetkeys{NB}{#1}} - -\DeclareStringOption[normal]{saturation} -\DeclareVoidOption{lighter}{\ekv{saturation=lighter}} -\DeclareVoidOption{light}{\ekv{saturation=light}} -\DeclareVoidOption{normal}{\ekv{saturation=normal}} -\DeclareVoidOption{dark}{\ekv{saturation=dark}} -\DeclareVoidOption{darker}{\ekv{saturation=darker}} - -\DeclareStringOption[main]{color} -\DeclareVoidOption{main}{\ekv{color=main}} -\DeclareVoidOption{colorful}{\ekv{color=colorful}} - -\DeclareStringOption[times]{font} -\DeclareVoidOption{times}{\ekv{font=times}} -\DeclareVoidOption{libertinus}{\ekv{font=libertinus}} - -\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{standalone}} -\ProcessKeyvalOptions*\relax -\PassOptionsToPackage{quiet}{fontspec} -\LoadClass[tikz]{standalone} - -%% Packages -\RequirePackage[colorlinks,linkcolor=black,urlcolor=black]{hyperref} -\RequirePackage{ctex} -\RequirePackage{fontawesome5} - -%% Global definitions -\def\notewidth{6.32} -\def\noteheight{8.18} -\def\author#1{\gdef\@author{#1}} -\def\mail#1{\gdef\@mail{\href{mailto:#1}{\nolinkurl{#1}}}} -\NewDocumentCommand\chapter{s o m}{ - \IfBooleanTF{#1}{}{\refstepcounter{chap}} - \gdef\@chapter{#2} - \gdef\@courseware{#3} - \setcounter{note}{0} -} -\def\flyleaf#1{\gdef\@flyleaf{#1}} -\def\sticker#1{\gdef\@sticker{#1}} -\NewDocumentCommand\logo{O{https://www.hdu.edu.cn} m O{Hangzhou·Zhejiang}}{\gdef\@edu{#1}\gdef\@logo{#2}\gdef\@address{#3}} - -%% Fonts -\ifdefstring{\NB@font}{libertinus}{ -\setmainfont{Libertinus Serif} -\setsansfont{Libertinus Sans} -\setmonofont{NotoSansMono}[ - Scale=MatchLowercase, - Extension=.ttf, - UprightFont=*-Light, - BoldFont=*-Medium -] -}{\relax} - -%% notepages -\RequirePackage{graphics} -\graphicspath{{./beamer/}{./figure/}{./figures/}{./image/}{./images/}{./graphics/}{./graphic/}{./pictures/}{./picture/}}% Paths -\definecolor{pagecolor}{HTML}{F7F6E9} -\definecolor{main}{HTML}{223A70} -\newcounter{chap} -\newcounter{note} -\def\chaptername{\faIcon{seedling} Chapter} - -%%%% 1 note per page -\def\newnote#1#2{ - \refstepcounter{note} - \addtocounter{note}{-1} - \foreach \n in {#1,...,#2}{ - \begin{tikzpicture} - \fill [pagecolor!50] (0,0) rectangle (\notewidth in,\noteheight in);% 边界 - \ifcsname @sticker\endcsname\node [anchor=south east,opacity=0.24,inner sep=0pt] at (0.985*\notewidth in,0.012*\noteheight in) {\includegraphics[height=1.07158 in]{\@sticker}};\fi - - %%%%%% imput file - \node [yshift=(\thenote+1)*33*0.028*\noteheight in,inner sep=0pt] at (0.4*\notewidth in,0.038*\noteheight in-12.5*0.028*\noteheight in) {\ifcsname @chapter\endcsname\includegraphics[height=5.61148 in,page=\n]{\@courseware}\fi}; - - %%%%%% draw lines & dots: right - \foreach \a in {9,...,33} - \foreach \b in {24,...,29} - \fill [fill=main!50!gray,xshift=\b*0.03*\notewidth in,yshift=\a*\noteheight*0.028 in] (0.05*\notewidth in,0.038*\noteheight in) circle (0.006);% 点 - \foreach \a in {9,...,32} - \draw [line cap=round,opacity=0.5,main!80!gray!80,yshift=\a*\noteheight*0.028 in] (0.75*\notewidth in+0.25*0.028*\notewidth in,0.038*\noteheight in) --++ (0.2*\notewidth in-0.25*0.028*\notewidth in,0);% 横线 - - %%%%%% draw lines & dots: bottom - \foreach \a in {0,...,8,8} - \foreach \b in {1,...,29} - \fill [fill=main!50!gray,xshift=\b*0.03*\notewidth in,yshift=\a*\noteheight*0.028 in] (0.05*\notewidth in,0.038*\noteheight in) circle (0.006);% 点 - \foreach \a in {1,...,8,8} - \draw [line cap=round,opacity=0.5,main!80!gray!80,yshift=\a*\noteheight*0.028 in] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0);% 横线 - - \draw [line cap=round,main!80,thick] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0);% 底部粗线 - - \draw [line cap=round,main!80,thick,yshift=33*0.028*\noteheight in] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0) node [anchor=south west,at start] {\small\color{main}\bfseries\sffamily\chaptername~\ifcsname @chapter\endcsname\thechap. \@chapter\fi} node [anchor=south east] {\small\color{main}\bfseries\sffamily Page \thepage\quad};% 顶部粗线 - - \draw [line cap=round,thick,opacity=0.4,main!50!gray] (0.75*\notewidth in,0.038*\noteheight in+8.25*0.028*\noteheight in) -- (0.75*\notewidth in,0.038*\noteheight in+32.75*0.028*\noteheight in);% 分栏线 - \end{tikzpicture} - } -} - -%%%% 3 beamers per page -\def\threebeamers#1#2#3{ - \refstepcounter{note} - \begin{tikzpicture} - \fill [pagecolor!50] (0,0) rectangle (\notewidth in,\noteheight in);% 边界 - \ifcsname @sticker\endcsname\node [anchor=south east,opacity=0.24,inner sep=0pt] at (0.985*\notewidth in,0.012*\noteheight in) {\includegraphics[height=1.07158 in]{\@sticker}};\fi - - %%%%%% imput file - \foreach \n in {#1,#2,#3} - \node [yshift=(27.5-(\n-#1)*11)*0.028*\noteheight in,inner sep=0pt] at (0.3125*\notewidth in,0.038*\noteheight in) {\ifcsname @chapter\endcsname\includegraphics[height=2.40492 in,page=\n]{\@courseware}\fi}; - - %%%%%% draw lines & dots - \foreach \a in {0,...,33} - \foreach \b in {18,...,29} - \fill [fill=main!50!gray,xshift=\b*0.03*\notewidth in,yshift=\a*\noteheight*0.028 in] (0.05*\notewidth in,0.038*\noteheight in) circle (0.006);% 点 - \foreach \a in {1,...,32} - \draw [line cap=round,opacity=0.5,main!80!gray!80,yshift=\a*\noteheight*0.028 in] (0.575*\notewidth in+0.25*0.028*\notewidth in,0.038*\noteheight in) --++ (0.375*\notewidth in-0.25*0.028*\notewidth in,0);% 横线 - - \draw [line cap=round,main!80,thick] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0);% 底部粗线 - - \draw [line cap=round,main!80,thick,yshift=33*0.028*\noteheight in] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0) node [anchor=south west,at start] {\small\color{main}\bfseries\sffamily\chaptername~\ifcsname @chapter\endcsname\thechap. \@chapter\fi} node [anchor=south east] {\small\color{main}\bfseries\sffamily Page \thepage\quad};% 顶部粗线 - - \draw [line cap=round,thick,opacity=0.4,main!50!gray] (0.575*\notewidth in,0.038*\noteheight in+0.25*0.028*\noteheight in) -- (0.575*\notewidth in,0.038*\noteheight in+32.75*0.028*\noteheight in);% 分栏线 - \end{tikzpicture} -} - -%%%%%% Simplify loop 3 -\newcount\tmpnum -\def\newnotesss#1#2{% -\addtocounter{note}{-1} - \def\maxnum{#2}\tmpnum=#1 - \loop - \unless\ifnum\tmpnum>#2 \threebeamers{\valnum0}{\valnum1}{\valnum2} - \advance\tmpnum by3 - \repeat -} -\def\valnum#1{% - \ifnum\maxnum>\numexpr\tmpnum+#1\relax - \the\numexpr\tmpnum+#1\relax \else \maxnum\fi -} - -%%%% 4 slides per page -\def\fourbeamers#1#2#3#4{ - \refstepcounter{note} - \begin{tikzpicture} - \fill [pagecolor!50] (0,0) rectangle (\notewidth in,\noteheight in);% 边界 - \ifcsname @sticker\endcsname\node [anchor=south east,opacity=0.24,inner sep=0pt] at (0.985*\notewidth in,0.012*\noteheight in) {\includegraphics[height=1.07158 in]{\@sticker}};\fi - %%%%%% imput file - \foreach \n in {#1,#2,#3,#4} - \node [yshift=(28.875-(\n-#1)*8.25)*0.028*\noteheight in,inner sep=0pt] at (0.3125*\notewidth in,0.038*\noteheight in) {\ifcsname @chapter\endcsname\includegraphics[height=1.77506 in,page=\n]{\@courseware}\fi}; - - \foreach \a in {0,...,33} - \foreach \b in {18,...,29} - \fill [fill=main!50!gray,xshift=\b*0.03*\notewidth in,yshift=\a*\noteheight*0.028 in] (0.05*\notewidth in,0.038*\noteheight in) circle (0.006);% 点 - \foreach \a in {1,...,32} - \draw [line cap=round,opacity=0.5,main!80!gray!80,yshift=\a*\noteheight*0.028 in] (0.575*\notewidth in+0.25*0.028*\notewidth in,0.038*\noteheight in) --++ (0.375*\notewidth in-0.25*0.028*\notewidth in,0);% 横线 - - \draw [line cap=round,main!80,thick] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0);% 底部粗线 - - \draw [line cap=round,main!80,thick,yshift=33*0.028*\noteheight in] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0) node [anchor=south west,at start] {\small\color{main}\bfseries\sffamily\chaptername~\ifcsname @chapter\endcsname\thechap. \@chapter\fi} node [anchor=south east] {\small\color{main}\bfseries\sffamily Page \thepage\quad};% 顶部粗线 - - \draw [line cap=round,thick,opacity=0.4,main!50!gray] (0.575*\notewidth in,0.038*\noteheight in+0.25*0.028*\noteheight in) -- (0.575*\notewidth in,0.038*\noteheight in+32.75*0.028*\noteheight in);% 分栏线 - \end{tikzpicture} -} - -%%%%%% Simplify loop 4 -\newcount\tmpnum -\def\newnotessss#1#2{% -\addtocounter{note}{-1} - \def\maxnum{#2}\tmpnum=#1 - \loop - \unless\ifnum\tmpnum>#2 \fourbeamers{\valnum0}{\valnum1}{\valnum2}{\valnum3} - \advance\tmpnum by4 - \repeat -} -\def\valnum#1{% - \ifnum\maxnum>\numexpr\tmpnum+#1\relax - \the\numexpr\tmpnum+#1\relax \else \maxnum\fi -} - -%%%% emptynote (*without chapter title & page number) -\NewDocumentCommand\clearnote{s}{ -\begin{tikzpicture} - \fill [pagecolor!50] (0,0) rectangle (\notewidth in,\noteheight in);% 边界 - \ifcsname @sticker\endcsname\node [anchor=south east,opacity=0.24,inner sep=0pt] at (0.985*\notewidth in,0.012*\noteheight in) {\includegraphics[height=1.07158 in]{\@sticker}};\fi - \foreach \a in {0,...,33} - \foreach \b in {1,...,29} - \fill [fill=main!50!gray,xshift=\b*0.03*\notewidth in,yshift=\a*\noteheight*0.028 in] (0.05*\notewidth in,0.038*\noteheight in) circle (0.006);% 点 - \foreach \a in {1,...,32} - \draw [line cap=round,opacity=0.5,main!80!gray!80,yshift=\a*\noteheight*0.028 in] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0);% 横线 - - \draw [line cap=round,main!80,thick] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0);% 底部粗线 - - \IfBooleanTF{#1} - { - \draw [line cap=round,main!80,thick,yshift=33*0.028*\noteheight in] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0) node [anchor=south west,at start] {\small\color{main}\bfseries\sffamily\chaptername} node [anchor=south east] {\small\color{main}\bfseries\sffamily Page\addtocounter{page}{-1}\quad\quad};% 顶部粗线 - } - { - \draw [line cap=round,main!80,thick,yshift=33*0.028*\noteheight in] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0) node [anchor=south west,at start] {\small\color{main}\bfseries\sffamily\chaptername~\ifcsname @chapter\endcsname\thechap. \@chapter\fi} node [anchor=south east] {\small\color{main}\bfseries\sffamily Page \thepage\quad};% 顶部粗线 - } - - \draw [line cap=round,thick,opacity=0.4,main!50!gray] (0.5*\notewidth in,0.038*\noteheight in+0.25*0.028*\noteheight in) -- (0.5*\notewidth in,0.038*\noteheight in+32.75*0.028*\noteheight in);% 分栏线 -\end{tikzpicture} -} - -\NewDocumentCommand\emptynote{s O{1}} -{\IfBooleanTF{#1}{ - \Repeat{#2}{\clearnote*} - }{ - \Repeat{#2}{\clearnote} - } -} - -%%%% emptynote with school title (*without chapter title & page number) -\NewDocumentCommand\clearhdunote{s}{ -\begin{tikzpicture} - \fill [pagecolor!50] (0,0) rectangle (\notewidth in,\noteheight in);% 边界 - \ifcsname @sticker\endcsname\node [anchor=south east,opacity=0.24,inner sep=0pt] at (0.985*\notewidth in,0.012*\noteheight in) {\includegraphics[height=1.07158 in]{\@sticker}};\fi - \foreach \a in {0,...,32} - \foreach \b in {1,...,29} - \fill [fill=main!50!gray,xshift=\b*0.03*\notewidth in,yshift=\a*\noteheight*0.028 in] (0.05*\notewidth in,0.038*\noteheight in) circle (0.006);% 点 - \foreach \a in {1,...,31} - \draw [line cap=round,opacity=0.5,main!80!gray!80,yshift=\a*\noteheight*0.028 in] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0);% 横线 - - \IfBooleanTF{#1} - { - \draw [line cap=round,main!80,thick] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0) node [anchor=north east,darkgray] {\small\color{main}\bfseries\sffamily Page\addtocounter{page}{-1}\quad\quad};% 底部粗线 - }{ - \draw [line cap=round,main!80,thick] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0) node [anchor=north east,darkgray] {\small\color{main}\bfseries\sffamily Page \thepage\quad};% 底部粗线 - } - - \draw [line cap=round,main!80,thick,yshift=32*0.028*\noteheight in] (0.05*\notewidth in,0.038*\noteheight in) --++ (0.9*\notewidth in,0)\ifcsname @logo\endcsname node [anchor=west,at start,yshift=0.033*\noteheight in,inner sep=0pt] {\href{\@edu}{\includegraphics[height=0.45808 in]{\@logo}}} node [anchor=east,yshift=0.033*\noteheight in] {\bfseries\heiti\color{main}\faIcon{map-pin} \@address\quad\quad}\fi;% 顶部粗线 - - \draw [line cap=round,thick,opacity=0.4,main!50!gray] (0.5*\notewidth in,0.038*\noteheight in+0.25*0.028*\noteheight in) -- (0.5*\notewidth in,0.038*\noteheight in+31.75*0.028*\noteheight in);% 分栏线 -\end{tikzpicture} -} - -\NewDocumentCommand\emptyhdunote{s O{1}} -{\IfBooleanTF{#1}{ - \Repeat{#2}{\clearhdunote*} - }{ - \Repeat{#2}{\clearhdunote} - } -} - -%% covers -\ifdefstring{\NB@saturation}{lighter}{\def\@saturation{.18}}{\relax} -\ifdefstring{\NB@saturation}{light}{\def\@saturation{.15}}{\relax} -\ifdefstring{\NB@saturation}{normal}{\def\@saturation{.12}}{\relax} -\ifdefstring{\NB@saturation}{dark}{\def\@saturation{.09}}{\relax} -\ifdefstring{\NB@saturation}{darker}{\def\@saturation{.06}}{\relax} - -\definecolor{H1}{Hsb}{349,\@saturation,.9}% 海棠紅 (Hangzhou MTR L 1 ) -\definecolor{H1*}{HTML}{702230} -\definecolor{H2}{Hsb}{23, \@saturation,.9}% 丹桂橙 (Hangzhou Metro 2 ) -\definecolor{H2*}{HTML}{703F22} -\definecolor{H3}{Hsb}{48, \@saturation,.9}% 柠檬黄 (Hangzhou Metro 3 ) -\definecolor{H3*}{HTML}{706022} -\definecolor{H4}{Hsb}{103,\@saturation,.9}% 香樟绿 (Hangzhou Metro 4 ) -\definecolor{H4*}{HTML}{387022} -\definecolor{H5}{Hsb}{188,\@saturation,.9}% 青藍色 (Hangzhou MTR L 5 ) -\definecolor{H5*}{HTML}{226570} -\definecolor{H6}{Hsb}{207,\@saturation,.9}% 海洋蓝 (Hangzhou Metro 6 ) -\definecolor{H6*}{HTML}{224C70} -\definecolor{H7}{Hsb}{290,\@saturation,.9}% 浪漫紫 (Hangzhou Metro 7 ) -\definecolor{H7*}{HTML}{632270} - -\NewDocumentCommand\notebook{s O{H5} m O{}}{ - \setcounter{chap}{0} - \setcounter{page}{0} - \begin{tikzpicture} - \fill [#2] (0,0) rectangle (\notewidth in,\noteheight in);% 边界 - \fill [white,opacity=0.17] (0.2*\notewidth in,0.6*\noteheight in) rectangle (\notewidth in,0); - \fill [white,opacity=0.17] (0.3*\notewidth in,0.7*\noteheight in) rectangle (\notewidth in,0); - \node at (0.65*\notewidth in,0.65*\noteheight in) {\LARGE\bfseries\sffamily #3}; - \node [rotate=90,opacity=0.4] at (0.25*\notewidth in,0.3*\noteheight in) {\sffamily\Large\bfseries\MakeUppercase{#4}}; - \draw [thick,line cap=round] (0.65*\notewidth in,0.05*\noteheight in) --++ (0.25*\notewidth in,0) node [anchor=south west] {\large\faIcon{feather-alt}} \ifcsname @mail\endcsname node [midway,anchor=south] {\bfseries\texttt{\@mail}}\fi node [midway,anchor=south,yshift=2em] {\bfseries\sffamily\large\ifcsname @author\endcsname\@author\fi}; - \ifcsname @logo\endcsname\node [anchor=north west] at (0.025*\notewidth in,0.991*\noteheight in) {\href{\@edu}{\includegraphics[width=2.212 in]{\@logo}}};\fi - \end{tikzpicture} - \ifdefstring{\NB@color}{colorful}{\colorlet{main}{main}}{\relax} - \ifdefstring{\NB@color}{colorful}{\colorlet{main}{#2*}}{\relax} - \ifcsname @flyleaf\endcsname - \addtocounter{page}{-1} - \begin{tikzpicture} - \node [inner sep=0pt] at (0.5*\notewidth in,0.5*\noteheight in) {\includegraphics[width=\notewidth in]{\@flyleaf}}; - \end{tikzpicture} - \fi - \IfBooleanTF{#1}{\emptynote*}{} -} - -%% LaTeX 3 \Repeat supports -\ExplSyntaxOn -\cs_new_eq:NN \Repeat \prg_replicate:nn -\ExplSyntaxOff
\ No newline at end of file diff --git a/macros/latex/contrib/notebeamer/tex/notebeamer.sty b/macros/latex/contrib/notebeamer/tex/notebeamer.sty new file mode 100644 index 0000000000..84e06bf49a --- /dev/null +++ b/macros/latex/contrib/notebeamer/tex/notebeamer.sty @@ -0,0 +1,160 @@ +%% *********************************************************** +%% Copyright 2024 by Mingyu Hsia <xiamyphys@gmail.com> * +%% * +%% This work may be distributed and/or modified under * +%% the conditions of the LaTeX Project Public License * +%% * +%% http://www.latex-project.org/lppl.txt * +%% * +%% either version 1.3c of this license or any later * +%% version. * +%% * +%% This work has the LPPL maintenance status `maintained'. * +%% * +%% The Current Maintainer of this work is Mingyu Hsia. * +%% * +%% This work consists of the files notebeamer.sty, * +%% and README.md. * +%% available at https://github.com/xiamyphys/notebeamer * +%% Thanks `wipet' (https://petr.olsak.net/) provides * +%% Beamers automatically inserts module * +%% *********************************************************** +% !Mode:: "TeX:UTF-8" +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesPackage{notebeamer}[2024/04/19 v3.0a notebeamer package] +\RequirePackage{xkeyval} + +\DeclareOptionX{notelinecolor}{\gdef\@notelinecolor{#1}} +\ExecuteOptionsX{notelinecolor=darkgray} +\DeclareOptionX{notemargin}{\gdef\@notemargin{#1}} +\ExecuteOptionsX{notemargin=.75in} + +\DeclareOptionX*{\PackageWarning{notebeamer}{`\CurrentOption' ignored}} +\ProcessOptionsX\relax + +\RequirePackage{geometry,calc,tikz} +\newgeometry{margin=\@notemargin} +\tikzset{every picture/.append style={% + line join=round,line cap=round,thick}} +\usetikzlibrary{calc} + +\newcounter{note} +\NewDocumentCommand\notechap{o m}{ + \gdef\@notechap{#1} + \gdef\@beamer{#2} + \setcounter{note}{0}} + +\newlength\hnotemargin\newlength\vnotemargin +\setlength\hnotemargin{(\paperwidth-\textwidth)/3} +\setlength\vnotemargin{(2\paperheight-2\textheight)/5} +\newlength\notewidth\newlength\noteheight +\setlength\notewidth{\paperwidth-2\hnotemargin} +\setlength\noteheight{\paperheight-2\vnotemargin} +\newlength\notelinespace + +\def\notelinenum#1{% + \gdef\@notelinenum{#1} + \setlength\notelinespace{\noteheight/#1}} +\ifcsname @notelinenum\endcsname +\else + \gdef\@notelinenum{27} + \setlength\notelinespace{\noteheight/27} +\fi +\def\notecolumnratio#1{\gdef\@notecolumnratio{#1}} +\ifcsname @notecolumnratio\endcsname +\else + \gdef\@notecolumnratio{.5} +\fi + +\newif\ifhidenoteline + +\def\@onepaper#1{ + \refstepcounter{note}\addtocounter{note}{-1} + \clearpage\thispagestyle{empty} + \begin{tikzpicture}[remember picture,overlay] + %%%%%% notepage lines + \draw [\@notelinecolor,opacity=.8,very thick] ($(current page.north west)+(\hnotemargin,-\vnotemargin)$) --++ (\notewidth,0) node [above right,at start,yshift=1ex] {\large\bfseries\sffamily\ifcsname @notechap\endcsname\@notechap\fi} node [above left,yshift=1ex] {\large\bfseries\sffamily Page \thepage\quad}; % 顶部粗线 + \draw [\@notelinecolor,opacity=.8,thick] ($(current page.south west)+(\hnotemargin,\vnotemargin)$) --++ (\notewidth,0); % 底部粗线 + \ifhidenoteline\else + \foreach \a in {2,...,\@notelinenum} + \draw [\@notelinecolor,opacity=.4,thick] ($(current page.south west)+(\hnotemargin,{\vnotemargin+(\a-1)*\notelinespace})$) --++ (\notewidth,0); % 横线 + \fi + %%%%%% imput file + \node [below,yshift=\thenote*\noteheight-1ex,inner sep=0pt] at ($(current page.north west)+(\hnotemargin+.5*\@notecolumnratio*\notewidth,-\vnotemargin)$) {\ifcsname @notechap\endcsname\includegraphics[width=\dimeval{\@notecolumnratio\notewidth},page=#1]{\@beamer}\fi}; + \end{tikzpicture} +} + +\def\@threebeamer#1#2#3{ + \refstepcounter{note}\addtocounter{note}{-1} + \clearpage\thispagestyle{empty} + \begin{tikzpicture}[remember picture,overlay] + %%%%%% notepage lines + \draw [\@notelinecolor,opacity=.8,very thick] ($(current page.north west)+(\hnotemargin,-\vnotemargin)$) --++ (\notewidth,0) node [above right,at start,yshift=1ex] {\large\bfseries\sffamily\ifcsname @notechap\endcsname\@notechap\fi} node [above left,yshift=1ex] {\large\bfseries\sffamily Page \thepage\quad}; % 顶部粗线 + \draw [\@notelinecolor,opacity=.8,thick] ($(current page.south west)+(\hnotemargin,\vnotemargin)$) --++ (\notewidth,0); % 底部粗线 + \ifhidenoteline\else + \foreach \a in {2,...,\@notelinenum} + \draw [\@notelinecolor,opacity=.4,thick] ($(current page.south west)+(\hnotemargin+\@notecolumnratio*\notewidth+1ex,{\vnotemargin+(\a-1)*\notelinespace})$) --++ ({(1-\@notecolumnratio)*\notewidth-1ex},0); % 横线 + \fi + \draw [\@notelinecolor!80,opacity=.5,very thick] ($(current page.south west)+(\hnotemargin+\@notecolumnratio*\notewidth,\vnotemargin+1ex)$) --++ (0,\noteheight-2ex); % 分栏线 + %%%%%% imput file + \foreach \n in {#1,#2,#3} + \node [yshift=(2*#1-2*\n-1)*\noteheight/6+\thenote*\noteheight,inner sep=0pt] at ($(current page.north west)+(\hnotemargin+.5*\@notecolumnratio*\notewidth,-\vnotemargin)$) {\ifcsname @notechap\endcsname\includegraphics[height=\dimeval{\noteheight/3-2ex},page=\n]{\@beamer}\fi}; + \end{tikzpicture} +} + +\def\@fourbeamer#1#2#3#4{ + \refstepcounter{note}\addtocounter{note}{-1} + \clearpage\thispagestyle{empty} + \begin{tikzpicture}[remember picture,overlay] + \draw [\@notelinecolor,opacity=.8,very thick] ($(current page.north west)+(\hnotemargin,-\vnotemargin)$) --++ (\notewidth,0) node [above right,at start,yshift=1ex] {\large\bfseries\sffamily\ifcsname @notechap\endcsname\@notechap\fi} node [above left,yshift=1ex] {\large\bfseries\sffamily Page \thepage\quad}; % 顶部粗线 + \draw [\@notelinecolor,opacity=.8,thick] ($(current page.south west)+(\hnotemargin,\vnotemargin)$) --++ (\notewidth,0); % 底部粗线 + \ifhidenoteline\else + \foreach \a in {2,...,\@notelinenum} + \draw [opacity=.5,\@notelinecolor,opacity=.4,thick] ($(current page.south west)+(\hnotemargin+\@notecolumnratio*\notewidth+1ex,{\vnotemargin+(\a-1)*\notelinespace})$) --++ ({(1-\@notecolumnratio)*\notewidth-1ex},0); % 横线 + \fi + \draw [\@notelinecolor,opacity=.5,very thick] ($(current page.south west)+(\hnotemargin+\@notecolumnratio*\notewidth,\vnotemargin+1ex)$) --++ (0,\noteheight-2ex); % 分栏线 + %%%%%% imput file + \foreach \n in {#1,#2,#3,#4} + \node [yshift=(2*#1-2*\n-1)*\noteheight/8+\thenote*\noteheight,inner sep=0pt] at ($(current page.north west)+(\hnotemargin+.5*\@notecolumnratio*\notewidth,-\vnotemargin)$) {\ifcsname @notechap\endcsname\includegraphics[height=\dimeval{\noteheight/4-2ex},page=\n]{\@beamer}\fi}; + \end{tikzpicture} +} + +\ExplSyntaxOn\cs_new_eq:NN \Repeat \prg_replicate:nn\ExplSyntaxOff +\NewDocumentCommand\newnotepage{s O{1}}{\Repeat{#2}{ + \refstepcounter{note} + \clearpage\thispagestyle{empty} + \begin{tikzpicture}[remember picture,overlay] + \draw [\@notelinecolor,opacity=.8,very thick] ($(current page.north west)+(\hnotemargin,-\vnotemargin)$) --++ (\notewidth,0) node [above right,at start,yshift=1ex] {\large\bfseries\sffamily\ifcsname @notechap\endcsname\@notechap\fi} node [above left,yshift=1ex] {\large\bfseries\sffamily Page \thepage\quad}; % 顶部粗线 + \draw [\@notelinecolor,opacity=.8,thick] ($(current page.south west)+(\hnotemargin,\vnotemargin)$) --++ (\notewidth,0); % 底部粗线 + \ifhidenoteline\else + \foreach \a in {2,...,\@notelinenum} + \draw [\@notelinecolor,opacity=.4,thick] ($(current page.south west)+(\hnotemargin,{\vnotemargin+(\a-1)*\notelinespace})$) --++ (\notewidth,0); % 横线 + \fi + \IfBooleanF{#1}{% 分栏线 + \draw [\@notelinecolor,opacity=.5,very thick] ($(current page.south west)+(\hnotemargin+\@notecolumnratio*\notewidth,\vnotemargin+1ex)$) --++ (0,\noteheight-2ex);} +\end{tikzpicture}} +} + +\newcount\tmpnum +\def\valnum#1{% + \ifnum\maxnum>\numexpr\tmpnum+#1\relax + \the\numexpr\tmpnum+#1\relax \else \maxnum\fi} +\NewDocumentCommand\includebeamer{ o m m }{% + \ifnum #1=1 + \def\maxnum{#3}\tmpnum=#2 + \loop + \unless\ifnum\tmpnum>#3 \@onepaper{\valnum0} + \advance\tmpnum by1 + \repeat\fi + \ifnum #1=3 + \def\maxnum{#3}\tmpnum=#2 + \loop + \unless\ifnum\tmpnum>#3 \@threebeamer{\valnum0}{\valnum1}{\valnum2} + \advance\tmpnum by3 + \repeat\fi + \ifnum #1=4 + \def\maxnum{#3}\tmpnum=#2 + \loop + \unless\ifnum\tmpnum>#3 \@fourbeamer{\valnum0}{\valnum1}{\valnum2}{\valnum3} + \advance\tmpnum by4 + \repeat\fi}
\ No newline at end of file diff --git a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf Binary files differindex 2d23d813a7..206f5547a1 100644 --- a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf +++ b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf diff --git a/macros/latex/contrib/profcollege/latex/PfCAssemblagesSolides.tex b/macros/latex/contrib/profcollege/latex/PfCAssemblagesSolides.tex new file mode 100644 index 0000000000..9ac580e644 --- /dev/null +++ b/macros/latex/contrib/profcollege/latex/PfCAssemblagesSolides.tex @@ -0,0 +1,497 @@ +%%% +% Assemblages solides +%%% +\setKVdefault[Assemblage]{Phi=30,Theta=20,Distance=50,Anglez=0,Anglex=0,Largeur=1.5,Profondeur=0.75,Hauteur=1,RayonBoule=1,RayonCone=1,RayonCylindre=1,HauteurPrisme=1,HauteurPyramideA=1,HauteurPyramideB=1,HauteurConeA=1,HauteurConeB=1,HauteurCylindre=1,Cotes=3,Trace=false,Type=Pyramides}% +\defKV[Assemblage]{Traces=\setKV[Assemblage]{Trace}}% + +\NewDocumentCommand\AssemblageSolides{o}{% + \useKVdefault[Assemblage]% + \setKV[Assemblage]{#1}% + \IfStrEqCase{\useKV[Assemblage]{Type}}{% + {Pyramides}{\MPAssemblagePyramides{\useKV[Assemblage]{Cotes}}}% + {PavePyramide}{\MPAssemblagePavePyramide}% + {PyramidePave}{\MPAssemblagePavePyramide}% + {PavePyramides}{\MPAssemblagePavePyramides}% + {PyramidesPave}{\MPAssemblagePavePyramides}% + {PrismePyramide}{\MPAssemblagePrismePyramide{\useKV[Assemblage]{Cotes}}}% + {PyramidePrisme}{\MPAssemblagePrismePyramide{\useKV[Assemblage]{Cotes}}}% + {CylindreCone}{\MPAssemblageCylindreCone}% + {ConeCylindre}{\MPAssemblageCylindreCone}% + {CylindreCones}{\MPAssemblageCylindreCones}% + {ConesCylindre}{\MPAssemblageCylindreCones}% + {CylindreConeBoule}{\MPAssemblageCylindreConeBoule}% + {CylindreBouleCone}{\MPAssemblageCylindreConeBoule}% + {ConeCylindreBoule}{\MPAssemblageCylindreConeBoule}% + {ConeBouleCylindre}{\MPAssemblageCylindreConeBoule}% + {BouleCylindreCone}{\MPAssemblageCylindreConeBoule}% + {BouleConeCylindre}{\MPAssemblageCylindreConeBoule}% + {CylindreBoule}{\MPAssemblageCylindreBoule}% + {BouleCylindre}{\MPAssemblageCylindreBoule}% + {CylindreBoules}{\MPAssemblageCylindreBoules}% + {BoulesCylindre}{\MPAssemblageCylindreBoules}% + {ConeBoule}{\MPAssemblageConeBoule}% + {BouleCone}{\MPAssemblageConeBoule}% + }% +}% + +\NewDocumentCommand\MPAssemblagePyramides{m}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + + Initialisation(1500,\useKV[Assemblage]{Phi},\useKV[Assemblage]{Theta},\useKV[Assemblage]{Distance}); + angx:=\useKV[Assemblage]{Anglex}; + angz:=\useKV[Assemblage]{Anglez}; + + HautA=\useKV[Assemblage]{HauteurPyramideA}; + HautB=\useKV[Assemblage]{HauteurPyramideB}; + + boolean Trace; + Trace=\useKV[Assemblage]{Trace}; + + color Sommet[]; + + NbS:=#1+2; + angbase=360/#1; + + for k=0 upto #1-1: + Sommet[k]:=(cosd(k*angbase),sind(k*angbase),0); + endfor; + Sommet[NbS-1]:=(0,0,HautA); + Sommet[NbS]:=(0,0,-HautB); + for k=0 upto NbS: + Sommet[k]:=Image(Sommet[k]); + endfor; + %% Faces + NF:=2*#1; + for k=1 upto #1: + Fc[k*100]:=3;Fc[k*100+1]:=(k+1) mod #1;Fc[k*100+3]:=k mod #1;Fc[k*100+2]:=NbS-1; + endfor; + for k=#1+1 upto 2*#1: + Fc[k*100]:=3;Fc[k*100+1]:=k mod #1;Fc[k*100+3]:=(k+1) mod #1;Fc[k*100+2]:=NbS; + endfor; + % + DessineObjet; + % + if Trace: + \useKV[Assemblage]{Traces}; + fi; + \end{mplibcode} + \fi +}% + +\NewDocumentCommand\MPAssemblagePavePyramide{}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + + Initialisation(1500,\useKV[Assemblage]{Phi},\useKV[Assemblage]{Theta},\useKV[Assemblage]{Distance}); + angx:=\useKV[Assemblage]{Anglex}; + angz:=\useKV[Assemblage]{Anglez}; + + Larg=\useKV[Assemblage]{Hauteur}; + Long=\useKV[Assemblage]{Largeur}; + Prof=\useKV[Assemblage]{Profondeur}; + HautA=\useKV[Assemblage]{HauteurPyramideA}; + + boolean Trace; + Trace=\useKV[Assemblage]{Trace}; + + color Sommet[]; + NbS:=9; + + Sommet1:=(Long,0,0); + Sommet2:=(Long,Prof,0); + Sommet3:=(0,Prof,0); + Sommet4:=(0,0,0); + Sommet5:=(0,0,Larg); + Sommet6:=(Long,0,Larg); + Sommet7:=(Long,Prof,Larg); + Sommet8:=(0,Prof,Larg); + Sommet9:=(Sommet5+Sommet6+Sommet7+Sommet8)/4+(0,0,HautA); + for k=1 upto 9: + Sommet[k]:=Image(Sommet[k]); + endfor; + %% Faces + NF:=9; + Fc[100]:=4;Fc[101]:=1;Fc[102]:=4;Fc[103]:=3;Fc[104]:=2; + Fc[200]:=4;Fc[201]:=4;Fc[202]:=5;Fc[203]:=8;Fc[204]:=3; + Fc[300]:=4;Fc[301]:=1;Fc[302]:=6;Fc[303]:=5;Fc[304]:=4; + Fc[400]:=4;Fc[401]:=2;Fc[402]:=3;Fc[403]:=8;Fc[404]:=7; + Fc[500]:=4;Fc[501]:=1;Fc[502]:=2;Fc[503]:=7;Fc[504]:=6; + Fc[600]:=3;Fc[601]:=8;Fc[602]:=5;Fc[603]:=9; + Fc[700]:=3;Fc[701]:=5;Fc[702]:=6;Fc[703]:=9; + Fc[800]:=3;Fc[801]:=6;Fc[802]:=7;Fc[803]:=9; + Fc[900]:=3;Fc[901]:=7;Fc[902]:=8;Fc[903]:=9; + % + DessineObjet; + % + % + if Trace: + \useKV[Assemblage]{Traces}; + fi; + \end{mplibcode} + \fi +}% + +\NewDocumentCommand\MPAssemblagePavePyramides{}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + + Initialisation(1500,\useKV[Assemblage]{Phi},\useKV[Assemblage]{Theta},\useKV[Assemblage]{Distance}); + angx:=\useKV[Assemblage]{Anglex}; + angz:=\useKV[Assemblage]{Anglez}; + + Larg=\useKV[Assemblage]{Hauteur}; + Long=\useKV[Assemblage]{Largeur}; + Prof=\useKV[Assemblage]{Profondeur}; + HautA=\useKV[Assemblage]{HauteurPyramideA}; + HautB=\useKV[Assemblage]{HauteurPyramideB}; + + boolean Trace; + Trace=\useKV[Assemblage]{Trace}; + + color Sommet[]; + NbS:=10; + + Sommet1:=(Long,0,0); + Sommet2:=(Long,Prof,0); + Sommet3:=(0,Prof,0); + Sommet4:=(0,0,0); + Sommet5:=(0,0,Larg); + Sommet6:=(Long,0,Larg); + Sommet7:=(Long,Prof,Larg); + Sommet8:=(0,Prof,Larg); + Sommet9:=(Sommet5+Sommet6+Sommet7+Sommet8)/4+(0,0,HautA); + Sommet10:=(Sommet1+Sommet2+Sommet3+Sommet4)/4+(0,0,-HautB); + for k=1 upto 10: + Sommet[k]:=Image(Sommet[k]); + endfor; + %% Faces + NF:=12; + Fc[100]:=4;Fc[101]:=4;Fc[102]:=5;Fc[103]:=8;Fc[104]:=3; + Fc[200]:=4;Fc[201]:=1;Fc[202]:=6;Fc[203]:=5;Fc[204]:=4; + Fc[300]:=4;Fc[301]:=2;Fc[302]:=3;Fc[303]:=8;Fc[304]:=7; + Fc[400]:=4;Fc[401]:=1;Fc[402]:=2;Fc[403]:=7;Fc[404]:=6; + % + Fc[500]:=3;Fc[501]:=8;Fc[502]:=5;Fc[503]:=9; + Fc[600]:=3;Fc[601]:=5;Fc[602]:=6;Fc[603]:=9; + Fc[700]:=3;Fc[701]:=6;Fc[702]:=7;Fc[703]:=9; + Fc[800]:=3;Fc[801]:=7;Fc[802]:=8;Fc[803]:=9; + % + Fc[900]:=3;Fc[901]:=4;Fc[902]:=3;Fc[903]:=10; + Fc[1000]:=3;Fc[1001]:=1;Fc[1002]:=4;Fc[1003]:=10; + Fc[1100]:=3;Fc[1101]:=2;Fc[1102]:=1;Fc[1103]:=10; + Fc[1200]:=3;Fc[1201]:=3;Fc[1202]:=2;Fc[1203]:=10; + % + DessineObjet; + % + if Trace: + \useKV[Assemblage]{Traces}; + fi; + \end{mplibcode} + \fi +}% + +\NewDocumentCommand\MPAssemblagePrismePyramide{m}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + + Initialisation(1500,\useKV[Assemblage]{Phi},\useKV[Assemblage]{Theta},\useKV[Assemblage]{Distance}); + angx:=\useKV[Assemblage]{Anglex}; + angz:=\useKV[Assemblage]{Anglez}; + + HautP=\useKV[Assemblage]{HauteurPrisme}; + HautA=\useKV[Assemblage]{HauteurPyramideA}; + + boolean Trace; + Trace=\useKV[Assemblage]{Trace}; + + color Sommet[]; + + NbS:=2*#1+1; + angbase=360/#1; + + for k=0 upto #1-1: + Sommet[k]:=(cosd(k*angbase),sind(k*angbase),0); + endfor; + + for k=#1 upto 2*#1-1: + Sommet[k]:=Sommet[k-#1]+(0,0,-HautP); + endfor; + Sommet[NbS-1]:=(0,0,HautA); + for k=0 upto NbS-1: + Sommet[k]:=Image(Sommet[k]); + endfor; + %% Faces + NF:=2*#1+1; + %latérale pyramide + for k=1 upto #1: + Fc[k*100]:=3;Fc[k*100+1]:=k mod #1;Fc[k*100+2]:=(k+1) mod #1;Fc[k*100+3]:=NbS-1; + endfor; + % face latérales prisme + for k=1 upto #1: + rang:=k+#1; + Fc[rang*100]:=4;Fc[rang*100+1]:=(k mod #1)+#1;Fc[rang*100+2]:=((k+1) mod #1)+#1;Fc[rang*100+3]:=(k+1) mod #1;Fc[rang*100+4]:=(k) mod #1; + endfor; + %face base du prisme + Fc[(2*#1+1)*100]:=#1; + for k=1 upto #1: + Fc[(2*#1+1)*100+k]:=((#1-k) mod #1)+#1; + endfor; + % + DessineObjet; + % + if Trace: + \useKV[Assemblage]{Traces}; + fi; + \end{mplibcode} + \fi +}% + +\NewDocumentCommand\MPAssemblageCylindreCone{}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + + Initialisation(1500,\useKV[Assemblage]{Phi},\useKV[Assemblage]{Theta},\useKV[Assemblage]{Distance}); + + angx:=\useKV[Assemblage]{Anglex}; + angz:=\useKV[Assemblage]{Anglez}; + + Rayon=\useKV[Assemblage]{RayonCylindre}; + HautC=\useKV[Assemblage]{HauteurCylindre}; + HautCo=\useKV[Assemblage]{HauteurConeA}; + + boolean Trace; + Trace=\useKV[Assemblage]{Trace}; + + nb:=36; + subh:=1; + incolor:=white; + outcolor:=0.8white; + Ferme1:=true; + Objetcylindre1("r="&"Rayon","h="&"HautC"); + TR:=(0,-HautC*sind(angx),HautC*cosd(angx)); + nb:=72; + Objetcone2("r="&"Rayon","h="&"HautCo"); + AffichageObjetCylindre1; + AffichageObjetCone2; + if Trace: + \useKV[Assemblage]{Traces}; + fi; + \end{mplibcode} + \fi +}% + +\NewDocumentCommand\MPAssemblageCylindreCones{}{% + % à faire + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + + Initialisation(1500,\useKV[Assemblage]{Phi},\useKV[Assemblage]{Theta},\useKV[Assemblage]{Distance}); + + angx:=\useKV[Assemblage]{Anglex}; + angz:=\useKV[Assemblage]{Anglez}; + + Rayon=\useKV[Assemblage]{RayonCylindre}; + HautC=\useKV[Assemblage]{HauteurCylindre}; + HautCo=\useKV[Assemblage]{HauteurConeA}; + HautCob=\useKV[Assemblage]{HauteurConeB}; + + boolean Trace; + Trace=\useKV[Assemblage]{Trace}; + + nb:=36; + subh:=1; + incolor:=white; + outcolor:=0.8white; + Ferme1:=true; + Objetcylindre1("r="&"Rayon","h="&"HautC"); + nb:=72; + TR:=(0,-HautC*sind(angx),HautC*cosd(angx)); + Objetcone2("r="&"Rayon","h="&"HautCo"); + TR:=(0,0,0); + angx:=180+angx; + Objetcone3("r="&"Rayon","h="&"HautCob"); + angx:=0; + AffichageObjetCylindreSansBase1; + AffichageObjetCone2; + AffichageObjetCone3; + if Trace: + \useKV[Assemblage]{Traces}; + fi; + \end{mplibcode} + \fi +}% + +\NewDocumentCommand\MPAssemblageCylindreConeBoule{}{% + % à faire + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + + Initialisation(1500,\useKV[Assemblage]{Phi},\useKV[Assemblage]{Theta},\useKV[Assemblage]{Distance}); + + angx:=\useKV[Assemblage]{Anglex}; + angz:=\useKV[Assemblage]{Anglez}; + + Rayon=\useKV[Assemblage]{RayonCylindre}; + HautC=\useKV[Assemblage]{HauteurCylindre}; + HautCo=\useKV[Assemblage]{HauteurConeA}; + + boolean Trace; + Trace=\useKV[Assemblage]{Trace}; + + nb:=36;%36 + subh:=1;% + incolor:=white; + outcolor:=0.8white; + Ferme1:=true; + Objetcylindre1("r="&"Rayon","h="&"HautC"); + TR:=(0,-HautC*sind(angx),HautC*cosd(angx)); + Objetcone2("r="&"Rayon","h="&"HautCo"); + TR:=(0,0,0); + nb:=12; + subh:=72; + angx:=180+angx; + Objetcalotte3("R="&"Rayon","phib="&"-pi/36","phih="&"pi/2"); + angx:=0; + AffichageObjetCylindreSansBase1; + AffichageObjetCone2; + AffichageObjetCalotte3; + % + if Trace: + \useKV[Assemblage]{Traces}; + fi; + \end{mplibcode} + \fi +}% + +\NewDocumentCommand\MPAssemblageCylindreBoule{}{% + % à faire + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + + Initialisation(1500,\useKV[Assemblage]{Phi},\useKV[Assemblage]{Theta},\useKV[Assemblage]{Distance}); + + angx:=\useKV[Assemblage]{Anglex}; + angz:=\useKV[Assemblage]{Anglez}; + + Rayon=\useKV[Assemblage]{RayonCylindre}; + HautC=\useKV[Assemblage]{HauteurCylindre}; + + boolean Trace; + Trace=\useKV[Assemblage]{Trace}; + + nb:=36;%36 + subh:=1;% + incolor:=white; + outcolor:=0.8white; + Ferme1:=true; + Objetcylindre1("r="&"Rayon","h="&"HautC"); + TR:=(0,-HautC*sind(angx),HautC*cosd(angx)); + nb:=12; + subh:=72;% + Objetcalotte2("R="&"Rayon","phib="&"-pi/36","phih="&"pi/2"); + TR:=(0,0,0); + AffichageObjetCylindreSansBase1; + AffichageObjetCalotte2; + % + if Trace: + \useKV[Assemblage]{Traces}; + fi; + \end{mplibcode} + \fi +}% + +\NewDocumentCommand\MPAssemblageCylindreBoules{}{% + % à faire + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + + Initialisation(1500,\useKV[Assemblage]{Phi},\useKV[Assemblage]{Theta},\useKV[Assemblage]{Distance}); + + angx:=\useKV[Assemblage]{Anglex}; + angz:=\useKV[Assemblage]{Anglez}; + + Rayon=\useKV[Assemblage]{RayonCylindre}; + HautC=\useKV[Assemblage]{HauteurCylindre}; + + boolean Trace; + Trace=\useKV[Assemblage]{Trace}; + + Initialisation(1500,22,20,50); + + nb:=36; + subh:=1; + incolor:=white; + outcolor:=0.8white; + Ferme1:=true; + Objetcylindre1("r="&"Rayon","h="&"HautC"); + TR:=(0,-HautC*sind(angx),HautC*cosd(angx)); + nb:=12; + subh:=72;% + Objetcalotte2("R="&"Rayon","phib="&"0","phih="&"pi/2"); + TR:=(0,0,0); + angx:=180+angx; + TR:=(0,0,0); + Objetcalotte3("R="&"Rayon","phib="&"0","phih="&"pi/2"); + TR:=(0,0,0); + AffichageObjetCylindreSansBase1; + AffichageObjetCalotte2; + AffichageObjetCalotte3; + \end{mplibcode} + \fi +}% + +\NewDocumentCommand\MPAssemblageConeBoule{}{% + % à faire + \ifluatex + \mplibforcehmode + \begin{mplibcode} + input PfCSolid; + + Initialisation(1500,\useKV[Assemblage]{Phi},\useKV[Assemblage]{Theta},\useKV[Assemblage]{Distance}); + + angx:=\useKV[Assemblage]{Anglex}; + angz:=\useKV[Assemblage]{Anglez}; + + Rayon=\useKV[Assemblage]{RayonCone}; + HautCa=\useKV[Assemblage]{HauteurConeA}; + + boolean Trace; + Trace=\useKV[Assemblage]{Trace}; + + Initialisation(1500,22,20,50); + + nb:=72;%36 + subh:=1;% + incolor:=white; + outcolor:=0.8white; + Ferme1:=true; + Objetcone1("r="&"Rayon","h="&"HautCa"); + angx:=180+angx; + nb:=12; + subh:=72;% + Objetcalotte2("R="&"Rayon","phib="&"0","phih="&"pi/2"); + TR:=(0,0,0); + AffichageObjetConeAvecBase1; + AffichageObjetCalotte2;%Cone3; + \end{mplibcode} + \fi +}%
\ No newline at end of file diff --git a/macros/latex/contrib/profcollege/latex/PfCCartographie.tex b/macros/latex/contrib/profcollege/latex/PfCCartographie.tex index cf9aeaf66f..ec56dceb89 100644 --- a/macros/latex/contrib/profcollege/latex/PfCCartographie.tex +++ b/macros/latex/contrib/profcollege/latex/PfCCartographie.tex @@ -222,6 +222,9 @@ % \mplibforcehmode \begin{mplibcode} input PfCMonde; + + Allegee:=\useKV[Cartographie]{Allegee}; + defaultcolormodel:=\useKV[Cartographie]{ModeleCouleur}; string arborescence; arborescence:=\useKV[Cartographie]{Arborescence}; diff --git a/macros/latex/contrib/profcollege/latex/PfCConversion.tex b/macros/latex/contrib/profcollege/latex/PfCConversion.tex index 78fa6d0351..e6ed80f012 100644 --- a/macros/latex/contrib/profcollege/latex/PfCConversion.tex +++ b/macros/latex/contrib/profcollege/latex/PfCConversion.tex @@ -1,7 +1,10 @@ -\setKVdefault[ClesConversion]{Longueur,Aire=false,Vol=false,Masses=false,Capas=false,Sans=false,Complete=40pt}% +\setKVdefault[ClesConversion]{Longueur,Aire=false,Vol=false,Masses=false,Capas=false,Sans=false,Completes=false}% +\defKV[ClesConversion]{Complete=\setKV[ClesConversion]{Completes}}% \defKV[ClesConversion]{Masse=\setKV[ClesConversion]{Longueur=false}\setKV[ClesConversion]{Masses}}% \defKV[ClesConversion]{Capa=\setKV[ClesConversion]{Longueur=false}\setKV[ClesConversion]{Capas}}% +\newlength{\PfCConversionLongueur}% + \NewDocumentCommand\ChoixUniteD{m}{% \IfStrEqCase{#1}{% {G}{\DeclareSIUnit{\TempoPrefixeD}{\giga}\xdef\ExposantD{9}}% @@ -41,21 +44,21 @@ \NewDocumentCommand\Convertir{somm}{% \useKVdefault[ClesConversion]% \setKV[ClesConversion]{#2}% - \StrBefore{#3}{>}[\PrefixeDepart] - \StrBehind{#3}{>}[\PrefixeArrivee] + \StrBefore{#3}{>}[\PrefixeDepart]% + \StrBehind{#3}{>}[\PrefixeArrivee]% \ChoixUniteD{\PrefixeDepart}% \ChoixUniteA{\PrefixeArrivee}% \ifboolKV[ClesConversion]{Aire}{% \DeclareSIUnit{\TempoAvant}{\square}% \DeclareSIUnit{\TempoBase}{\meter} - \xdef\PfCConvExposant{2} + \xdef\PfCConvExposant{2}% }{\ifboolKV[ClesConversion]{Vol}{% \DeclareSIUnit{\TempoAvant}{\cubic}% \DeclareSIUnit{\TempoBase}{\meter} - \xdef\PfCConvExposant{3} + \xdef\PfCConvExposant{3}% }{% \DeclareSIUnit{\TempoAvant}{}% - \xdef\PfCConvExposant{1} + \xdef\PfCConvExposant{1}% }% }% \ifboolKV[ClesConversion]{Masses}{% @@ -67,14 +70,14 @@ \ifboolKV[ClesConversion]{Capas}{% \DeclareSIUnit{\TempoBase}{\liter}% }{}% - \ensuremath{ + \ensuremath{% \IfBooleanTF{#1}{% \IfStrEq{\PrefixeDepart}{t}{\DeclareSIUnit{\TempoBase}{\relax}}{}\IfStrEq{\PrefixeDepart}{q}{\DeclareSIUnit{\TempoBase}{\relax}}{} \SI{#4}{\TempoAvant\TempoPrefixeD\TempoBase} \IfStrEq{\PrefixeDepart}{t}{\DeclareSIUnit{\TempoBase}{\gram}}{}\IfStrEq{\PrefixeDepart}{q}{\DeclareSIUnit{\TempoBase}{\gram}}{} = \IfStrEq{\PrefixeArrivee}{t}{\DeclareSIUnit{\TempoBase}{\relax}}{}\IfStrEq{\PrefixeArrivee}{q}{\DeclareSIUnit{\TempoBase}{\relax}}{} - \PointsSuspension{\fpeval{#4*(10**((\ExposantD-(\ExposantA))*\PfCConvExposant))}\fpeval{#4*(10**((\ExposantD-(\ExposantA))*\PfCConvExposant))}}~\si{\TempoAvant\TempoPrefixeA\TempoBase} + \ifboolKV[ClesConversion]{Completes}{\setlength{\PfCConversionLongueur}{\useKV[ClesConversion]{Complete}}\pointilles[\PfCConversionLongueur]}{\PointsSuspension{\fpeval{#4*(10**((\ExposantD-(\ExposantA))*\PfCConvExposant))}\fpeval{#4*(10**((\ExposantD-(\ExposantA))*\PfCConvExposant))}}}~\si{\TempoAvant\TempoPrefixeA\TempoBase} \IfStrEq{\PrefixeArrivee}{t}{\DeclareSIUnit{\TempoBase}{\gram}}{}\IfStrEq{\PrefixeArrivee}{q}{\DeclareSIUnit{\TempoBase}{\gram}}{} }{% \ifboolKV[ClesConversion]{Sans}{% diff --git a/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex b/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex index 3f11bb05b7..bf1a28e333 100644 --- a/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex +++ b/macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex @@ -43,7 +43,7 @@ Ancre0:=(0,0); racine:=#1; - label(btex \num{#1} etex,(0,0)); + label(TEX("\num{#1}"),(0,0)); forever: PremierSimple(racine); exitif racine=1; @@ -829,10 +829,12 @@ \end{tabular}% \else% \begin{tabular}{c|c} - 1&\num{#1}\\ + 1&\num{#1} + \ifnum\cnpT>2\relax\\ \xintFor* ##1 in {\xintSeq {1}{\fpeval{\cnpT/2}}}\do{% \DiviseurNumero{#1}{##1}\num{\fpeval{\dnpT}}\uppercase{&}\DiviseurNumero{#1}{##1}\num{\fpeval{#1/\dnpT}}\\ - } + } + \fi \end{tabular}% \fi% }% diff --git a/macros/latex/contrib/profcollege/latex/PfCOperationsTrou.tex b/macros/latex/contrib/profcollege/latex/PfCOperationsTrou.tex index d26dbade32..347ca499bc 100644 --- a/macros/latex/contrib/profcollege/latex/PfCOperationsTrou.tex +++ b/macros/latex/contrib/profcollege/latex/PfCOperationsTrou.tex @@ -105,7 +105,7 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,fill=PfCSolOp,rounded corner \fi \opmul[decimalsepsymbol={,},lineheight=2em,columnwidth=1.5em,voperator=bottom,intermediarystyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% \foreach \i in {1,...,\thedivxlop}{% - \PfCentoure{A\i}{A\i}% + \PfCentoure{A\i}{A\i}% }% \endgroup } @@ -168,4 +168,228 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,fill=PfCSolOp,rounded corner \foreach \i in {1,...,\thedivxlop}{% \PfCentoure{A\i}{A\i}% }% +}% + +%%%%%%%%%%%%%%%%%%%%% Colorees %%%%%%%%%%%%%%%%%%% +% Merci JCC +%%% Seule ligne à modifier selon la convenance %%% +\newcommand\couleurs{blue,red,green,blue,red,green,blue,red,green,blue,red,green}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcount\numint% +\newcount\indint% +\newcount\ind% +\def\nnil{\nil}% +\def\ExtraitCouleurs{% + \ind=0% + \expandafter\ExtraitCouleursAux\couleurs,\nil,% +}% +\def\ExtraitCouleursAux#1,{% + \def\arg{#1}% + \ifx\arg\nnil% + \edef\cmax{\the\ind}% + \else% + \def\couleur{#1}% + \stepcounter{coulxlop}% + \stepcounter{coulxlopa}% + \stepcounter{coulxlopd}% + \expandafter\edef\csname PfCOpCouleurs\Roman{coulxlop}\endcsname{\couleur}% + \expandafter\edef + \csname op@operandstyle.1.\the\numexpr\ind+1\endcsname{% + \noexpand\PfCchiffre{CA\thecoulxlop}% + }% + \expandafter\edef + \csname op@operandstyle.2.\the\numexpr\ind+1\endcsname{% + \noexpand\PfCchiffre{CB\thecoulxlopa}% + }% + \expandafter\edef + \csname op@resultstyle.\the\numexpr\ind+1\endcsname{% + \noexpand\PfCchiffre{CC\thecoulxlopd}% + }% + \numint = \numexpr\ind+1 + \indint = 1 + \ConstruitIntermediaire + \advance\ind by 1 + \expandafter\ExtraitCouleursAux + \fi +} +\def\ConstruitIntermediaire{% + \ifnum\numint>0 + \stepcounter{coulxlopi}% + \expandafter\edef\csname PfCOpCouleursi\Roman{coulxlopi}\endcsname{\couleur}% + \expandafter\edef + \csname op@intermediarystyle.\the\numint.\the\indint\endcsname{% + \noexpand\PfCchiffre{CD\thecoulxlopi}% + }% + \advance\indint by 1 + \advance\numint by -1 + \expandafter\ConstruitIntermediaire + \fi + } + \def\ConstruitRemainder{% + \ifnum\numint>0 + \stepcounter{coulxlopidiv}% + \expandafter\edef\csname PfCOpCouleursid\Roman{coulxlopidiv}\endcsname{\couleur}% + \expandafter\edef + \csname op@remainderystyle.\the\numint.\the\indint\endcsname{% + \noexpand\PfCchiffre{CE\thecoulxlopidiv}% + }% + \advance\indint by 1 + \advance\numint by -1 + \expandafter\ConstruitRemainder + \fi + } + +\newcounter{coulxlop}% +\newcounter{coulxlopi}% +\newcounter{coulxlopa}% +\newcounter{coulxlopd}% +\newcounter{coulxlopidiv}% +\newcounter{coulxlopcoul}% + +\newcommand\PfCentoureColor[2]{% + \expandafter\edef\csname RetiensCouleur\endcsname{\csname PfCOpCouleurs\Roman{coulxlopcoul}\endcsname}\colorlet{CouleurCadre}{\RetiensCouleur}% + \tikz[remember picture,overlay] \node[preaction={draw={CouleurCadre},ultra thick,opacity=1, + transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} + +\newcommand\PfCentoureColorR[3]{% + \expandafter\edef\csname RetiensCouleur\endcsname{\csname PfCOpCouleurs\Roman{coulxlopcoul}\endcsname}\colorlet{CouleurCadre}{\RetiensCouleur}% + \tikz[remember picture,overlay] \node[preaction={draw={CouleurCadre},ultra thick,opacity=1, + transform canvas={xshift=0em,yshift=0em}},rectangle,fill=PfCSolOp,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} + +\newcommand\PfCentoureColorI[2]{% + \expandafter\edef\csname RetiensCouleur\endcsname{\csname PfCOpCouleursi\Roman{coulxlopcoul}\endcsname}\colorlet{CouleurCadre}{\RetiensCouleur}% + \tikz[remember picture,overlay] \node[preaction={draw={CouleurCadre},ultra thick,opacity=1, + transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} + +\newcommand\PfCentoureColorIR[2]{% + \expandafter\edef\csname RetiensCouleur\endcsname{\csname PfCOpCouleursi\Roman{coulxlopcoul}\endcsname}\colorlet{CouleurCadre}{\RetiensCouleur}% + \tikz[remember picture,overlay] \node[preaction={draw={CouleurCadre},ultra thick,opacity=1, + transform canvas={xshift=0em,yshift=0em}},rectangle,fill=PfCSolOp,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} + +\newcommand\PfCentoureColorIdiv[2]{% + \expandafter\edef\csname RetiensCouleur\endcsname{\csname PfCOpCouleursid\Roman{coulxlopcoul}\endcsname}\colorlet{CouleurCadre}{\RetiensCouleur}% + \tikz[remember picture,overlay] \node[preaction={draw={CouleurCadre},ultra thick,opacity=1, +transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} + +\makeatletter +\long\def\ifnodedefined#1#2#3{% + \@ifundefined{pgf@sh@ns@#1}{#3}{#2}% +} +\makeatother + +\NewDocumentCommand\MultiplicationColore{omm}{% + \useKVdefault[ClesOperations]% + \setKV[ClesOperations]{#1}% + \setcounter{coulxlop}{0}% + \setcounter{coulxlopa}{0}% + \setcounter{coulxlopd}{0}% + \setcounter{coulxlopi}{0}% + \setcounter{coulxlopcoul}{0}% + \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}}% + \ExtraitCouleurs% + \begingroup% + \setlength{\baselineskip}{1.75em}% + \StrLen{#3}[\PfCLongueurFacteurDeux]% + \ifnum\PfCLongueurFacteurDeux=1\relax% + \opset{lineheight=\baselineskip} % nécessaire + \else% + \opset{lineheight=\baselineskip,displayintermediary=all,displayshiftintermediary=all} % nécessaire + \fi% + \opmul[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom]{#2}{#3}% + \endgroup% + \foreach \i in {1,...,\thecoulxlop}{% + \stepcounter{coulxlopcoul}% + \ifnodedefined{CA\i}{% + \PfCentoureColor{CA\i}{CA\i}% + }{} + }% + \setcounter{coulxlopcoul}{0}% + \foreach \i in {1,...,\thecoulxlopa}{% + \stepcounter{coulxlopcoul}% + \ifnodedefined{CB\i}{% + \PfCentoureColor{CB\i}{CB\i}% + }{} + }% + \setcounter{coulxlopcoul}{0}% + \foreach \i in {1,...,\thecoulxlopd}{% + \stepcounter{coulxlopcoul}% + \ifnodedefined{CC\i}{% + \ifboolKV[ClesOperations]{Solution}{\PfCentoureColor{CC\i}{CC\i}}{\PfCentoureColorR{CC\i}{CC\i}}% + }{} + }% + \setcounter{coulxlopcoul}{0}% + \foreach \i in {1,...,\thecoulxlopi}{% + \stepcounter{coulxlopcoul}% +% La couleur est + \ifnodedefined{CD\i}{% + \ifboolKV[ClesOperations]{Solution}{\PfCentoureColorI{CD\i}{CD\i}}{\PfCentoureColorIR{CD\i}{CD\i}}% + }{}% + }% +}% + +\newcommand\AdditionColore[3][]{% + \useKVdefault[ClesOperations]% + \setKV[ClesOperations]{#1}% + \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}}% + \setcounter{coulxlop}{0}% + \setcounter{coulxlopa}{0}% + \setcounter{coulxlopd}{0}% + \setcounter{coulxlopi}{0}% + \setcounter{coulxlopcoul}{0}% + \ExtraitCouleurs% + \opadd[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom]{#2}{#3}% + \foreach \i in {1,...,\thecoulxlop}{% + \stepcounter{coulxlopcoul}% + \ifnodedefined{CA\i}{% + \PfCentoureColor{CA\i}{CA\i}% + }{}% + }% + \setcounter{coulxlopcoul}{0}% + \foreach \i in {1,...,\thecoulxlopa}{% + \stepcounter{coulxlopcoul}% + \ifnodedefined{CB\i}{% + \PfCentoureColor{CB\i}{CB\i}% + }{}% + }% + \setcounter{coulxlopcoul}{0}% + \foreach \i in {1,...,\thecoulxlopd}{% + \stepcounter{coulxlopcoul}% + \ifnodedefined{CC\i}{% + \ifboolKV[ClesOperations]{Solution}{\PfCentoureColor{CC\i}{CC\i}}{\PfCentoureColorR{CC\i}{CC\i}}% + }{}% + }% +}% + +\newcommand\SoustractionColore[3][]{% + \useKVdefault[ClesOperations]% + \setKV[ClesOperations]{#1}% + \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}}% + \setcounter{coulxlop}{0}% + \setcounter{coulxlopa}{0}% + \setcounter{coulxlopd}{0}% + \setcounter{coulxlopi}{0}% + \setcounter{coulxlopcoul}{0}% + \ExtraitCouleurs% + \opsub[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom]{#2}{#3}% +\foreach \i in {1,...,\thecoulxlop}{% + \stepcounter{coulxlopcoul}% + \ifnodedefined{CA\i}{% + \PfCentoureColor{CA\i}{CA\i}% + }{} + }% + \setcounter{coulxlopcoul}{0}% + \foreach \i in {1,...,\thecoulxlopa}{% + \stepcounter{coulxlopcoul}% + \ifnodedefined{CB\i}{% + \PfCentoureColor{CB\i}{CB\i}% + }{} + }% + \setcounter{coulxlopcoul}{0}% + \foreach \i in {1,...,\thecoulxlopd}{% + \stepcounter{coulxlopcoul}% + \ifnodedefined{CC\i}{% + \ifboolKV[ClesOperations]{Solution}{\PfCentoureColor{CC\i}{CC\i}}{\PfCentoureColorR{CC\i}{CC\i}}% + }{} + }% }%
\ No newline at end of file diff --git a/macros/latex/contrib/profcollege/latex/PfCPixelArt.tex b/macros/latex/contrib/profcollege/latex/PfCPixelArt.tex index 06d0cfe95a..77eecfcb42 100644 --- a/macros/latex/contrib/profcollege/latex/PfCPixelArt.tex +++ b/macros/latex/contrib/profcollege/latex/PfCPixelArt.tex @@ -4,8 +4,8 @@ \newtoks\toklistePANombre% \def\UpdatetoksPANombre#1\nil{\addtotok\toklistePANombre{"#1",}}% -\setKVdefault[ClesPixelArt]{Largeur=29,Hauteur=29,Solution=false,Lettres=ABCDEFGHIJK,Nombres=false,ListeCouleurs={Orange,Red,LightGray,Maroon,Purple,black,black,Plum,Orange,White,White},Unite=5mm} -\defKV[ClesPixelArt]{ListeNombres=\setKV[ClesPixelArt]{Nombres}} +\setKVdefault[ClesPixelArt]{Largeur=29,Hauteur=29,Solution=false,Lettres=ABCDEFGHIJK,Nombres=false,ListeCouleurs={Orange,Red,LightGray,Maroon,Purple,black,black,Plum,Orange,White,White},Unite=5mm,Geant=false,HauteurD=1,LargeurD=1,Complet=false,Numero=1,Separations=false}% +\defKV[ClesPixelArt]{ListeNombres=\setKV[ClesPixelArt]{Nombres}}% \NewDocumentCommand\PixelArt{o m}{% \toklistePANombre{}% @@ -16,7 +16,24 @@ \setsepchar{,}% \readlist*\ListePANombre{\ListeAvantNombres}% \foreachitem\compteur\in\ListePANombre{\expandafter\UpdatetoksPANombre\compteur\nil}% - \BuildPixelArt{#2}{\useKV[ClesPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePANombre}% + \ifboolKV[ClesPixelArt]{Geant}{% + % Découpe en hauteur : \fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}\\ + % Découpe en largeur : \fpeval{\useKV[ClesPixelArt]{Largeur}/\useKV[ClesPixelArt]{LargeurD}-1}}\par + \ifboolKV[ClesPixelArt]{Complet}{% + \xintFor* ##1 in{\xintSeq{0}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}-1}}}\do{% + \xintFor* ##2 in{\xintSeq{0}{\fpeval{\useKV[ClesPixelArt]{Largeur}/\useKV[ClesPixelArt]{LargeurD}-1}}}\do{% + \fpeval{##1*\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}+##2} : \BuildPixelArtGeant{#2}{\useKV[ClesPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePANombre}{##1}{##2}\\% + }% + }% + }{% + \quotient{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}}% + \modulo{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}}% +% quotient = \the\intquotient -- remainder = \the\remainder : + \BuildPixelArtGeant{#2}{\useKV[ClesPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePANombre}{\the\intquotient}{\the\remainder}% + }% + }{% + \BuildPixelArt{#2}{\useKV[ClesPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePANombre}% + }% }% \NewDocumentCommand\BuildPixelArt{m m m m}{% @@ -25,10 +42,15 @@ \begin{mplibcode} largeur:=\useKV[ClesPixelArt]{Largeur}; hauteur:=\useKV[ClesPixelArt]{Hauteur}; + largeurd:=\useKV[ClesPixelArt]{LargeurD}; + hauteurd:=\useKV[ClesPixelArt]{HauteurD}; Unite:=\useKV[ClesPixelArt]{Unite}; - boolean Solution,Nombres; + + boolean Solution,Nombres,Separations; Solution:=\useKV[ClesPixelArt]{Solution}; Nombres:=\useKV[ClesPixelArt]{Nombres}; + Separations:=\useKV[ClesPixelArt]{Separations}; + string BaseLettres; BaseLettres=str #2; numeric EchelleScale; @@ -84,6 +106,16 @@ enddef; Lecturecsv("#1"); + if Separations: + drawoptions(withcolor Purple); + for k=hauteur step -hauteurd until 0: + draw (Unite*(-1,k-0.5)--Unite*(largeur,k-0.5)) withpen pencircle scaled 1.25; + endfor; + for k=0 step largeurd until largeur: + draw (Unite*(k-0.5,hauteur+0.125)--Unite*(k-0.5,-0.875)) withpen pencircle scaled 1.25; + endfor; + drawoptions(); + fi; \end{mplibcode} \else \begin{mpost}[mpsettings={largeur:=\useKV[ClesPixelArt]{Largeur}; hauteur:=\useKV[ClesPixelArt]{Hauteur}; Unite:=\useKV[ClesPixelArt]{Unite}; boolean Solution,Nombres; Solution:=\useKV[ClesPixelArt]{Solution}; Nombres:=\useKV[ClesPixelArt]{Nombres};}] @@ -142,4 +174,82 @@ Lecturecsv("#1"); \end{mpost} \fi +} + +\NewDocumentCommand\BuildPixelArtGeant{m m m m m m}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + largeur:=\useKV[ClesPixelArt]{Largeur}; + hauteur:=\useKV[ClesPixelArt]{Hauteur}; + largeurd:=\useKV[ClesPixelArt]{LargeurD}; + hauteurd:=\useKV[ClesPixelArt]{HauteurD}; + + Unite:=\useKV[ClesPixelArt]{Unite}; + + boolean Solution,Nombres; + Solution:=\useKV[ClesPixelArt]{Solution}; + Nombres:=\useKV[ClesPixelArt]{Nombres}; + + string BaseLettres; + BaseLettres=str #2; + + numeric EchelleScale; + EchelleScale=Unite/5mm; + + color ColorEntier[],ColFond; + n:=0; + for p_=#3: + n:=n+1; + ColorEntier[n]:=p_; + endfor; + + string RetiensNombres[]; + if Nombres: + n:=0; + for p_=#4: + n:=n+1; + RetiensNombres[n]=p_; + endfor; + fi; + + vardef Lecturecsv(expr nomfichier)= + % for h=hauteur-#5*hauteurd downto hauteur-(#5+1)*hauteurd: + for h=hauteur downto 1: + string p_; + p_=readfrom nomfichier; + l:=0; + if (h>hauteur-(#5+1)*hauteurd) and (h<hauteur-#5*hauteurd+1): + for p=2*#6*largeurd step 2 until 2*(#6+1)*largeurd-2: + l:=l+1; + if (substring(p,p+1) of p_)="-": + else: + if Nombres: + for m=0 upto (length BaseLettres-1): + if (substring(p,p+1) of p_)=substring(m,m+1) of BaseLettres: + label(TEX(RetiensNombres[m+1]) scaled EchelleScale,((l-1)*Unite,(h-1)*Unite)); + fi; + endfor; + else: + label(TEX(substring(p,p+1) of p_) scaled EchelleScale,((l-1)*Unite,(h-1)*Unite)); + fi; + if Solution: + for m=0 upto (length BaseLettres-1): + if (substring(p,p+1) of p_)=substring(m,m+1) of BaseLettres: + ColFond:=ColorEntier[m+1]; + fi; + endfor; + if unknown ColFond: else: fill (unitsquare scaled Unite) shifted ((l-1)*Unite-0.5*Unite,(h-1)*Unite-0.5*Unite) withcolor ColFond fi; + fi; + trace (unitsquare scaled Unite) shifted ((l-1)*Unite-0.5*Unite,(h-1)*Unite-0.5*Unite); + fi; + endfor; + fi; + endfor; + closefrom nomfichier; + enddef; + + Lecturecsv("#1"); + \end{mplibcode} + \fi }
\ No newline at end of file diff --git a/macros/latex/contrib/profcollege/latex/PfCPythagore.tex b/macros/latex/contrib/profcollege/latex/PfCPythagore.tex index fa6b138d6f..5c922d98b0 100644 --- a/macros/latex/contrib/profcollege/latex/PfCPythagore.tex +++ b/macros/latex/contrib/profcollege/latex/PfCPythagore.tex @@ -284,7 +284,7 @@ \NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}+\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\ \NomA\NomC^2&=\opadd*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\ \ifboolKV[ClesPythagore]{AvantRacine}{}{% - \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomC&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}} + \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomC&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}\ifboolKV[ClesPythagore]{Racine}{~\si{\PfCPythaUnit}}{}} \ifboolKV[ClesPythagore]{Racine}{}{\\\NomA\NomC&\IfStrEq{\ResultatApproche}{\ResultatAttendu}{=}{\approx}\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}%\\ } \end{align*} diff --git a/macros/latex/contrib/profcollege/latex/PfCReperage.tex b/macros/latex/contrib/profcollege/latex/PfCReperage.tex index e363b35e8d..23e7bd2775 100644 --- a/macros/latex/contrib/profcollege/latex/PfCReperage.tex +++ b/macros/latex/contrib/profcollege/latex/PfCReperage.tex @@ -1313,12 +1313,12 @@ maxx:=\useKV[ClesReperage]{ValeurMax}; fi; % Pour gérer les cas des droites où toutes les valeurs sont soit positives soit négatives - if maxx<pasx: - maxx:=pasx+1; - fi; - if minx>-pasx: - minx:=-pasx-1; - fi; +% if maxx<pasx: +% maxx:=pasx+1; +% fi; +% if minx>-pasx: +% minx:=-pasx-1; +% fi; % if DemiDroite: minx:=0; diff --git a/macros/latex/contrib/profcollege/latex/PfCStatistiques.tex b/macros/latex/contrib/profcollege/latex/PfCStatistiques.tex index 0ae0894e96..6223f887cd 100644 --- a/macros/latex/contrib/profcollege/latex/PfCStatistiques.tex +++ b/macros/latex/contrib/profcollege/latex/PfCStatistiques.tex @@ -20,7 +20,7 @@ Largeur=1cm,Precision=2,PrecisionF=0,Donnee=Valeurs,Effectif=Effectif,Grille=fal % Pour les diags batons EpaisseurBatons=1,ListeCouleursB={a},Lecture=false,LectureFine=false,AideLecture=false,Reponses=false,DonneesSup=false,AbscisseRotation=false,Tiret=false,AngleRotationAbscisse=0,Pasx=1,Pasy=1,Unitex=0.5,Unitey=0.5,Depart=0,CouleurDefaut=black,Date=false,GrandNombrey=false,GrandNombrex=false,PasGrillex=1,PasGrilley=1,% % Pour les diags circulaires -Rayon=3cm,AffichageAngle=false,AffichageDonnee=false,ListeCouleurs={white},Hachures=false,ListeHachures={60},LectureInverse=false,EcartHachures=0.25,EpaisseurHachures=1,Legende,LegendeVide=false,ACompleter=false,DebutAngle=0,% +Rayon=3cm,AffichageAngle=false,AffichageDonnee=false,ListeCouleurs={white},Hachures=false,ListeHachures={60},LectureInverse=false,EcartHachures=0.25,EpaisseurHachures=1,Legende,LegendeVide=false,ACompleter=false,DebutAngle=0,%on utilisera également la clé CouleurDefaut %Pour les représentations Representation=false,% %Pour les barres horizontales @@ -856,6 +856,8 @@ ModeleCouleur=5% Retour=false; ACompleter=\useKV[ClesStat]{ACompleter}; DebutAngle=\useKV[ClesStat]{DebutAngle}; + color CoulDefaut; + CoulDefaut=\useKV[ClesStat]{CouleurDefaut}; % pair A[],O,B[],C[],D[]; O=(0,0); @@ -965,7 +967,12 @@ ModeleCouleur=5% n:=0; for p_=#3: n:=n+1; + % Col[n]=p_; + if color p_: Col[n]=p_; + else: + Col[n]=CoulDefaut; + fi; endfor; % on r\'ecup\`ere les angles d'hachures numeric anglehach[]; diff --git a/macros/latex/contrib/profcollege/latex/PfCThales.tex b/macros/latex/contrib/profcollege/latex/PfCThales.tex index ea01972c25..d4adb5be01 100644 --- a/macros/latex/contrib/profcollege/latex/PfCThales.tex +++ b/macros/latex/contrib/profcollege/latex/PfCThales.tex @@ -175,10 +175,10 @@ % #4 point sur le segment #1#2 % #5 point sur le segment #1#3 \ifluatex - \mplibcodeinherit{enable} +% \mplibcodeinherit{enable} \mplibforcehmode \begin{mplibcode} - defaultcolormodel := \useKV[ClesThales]{ModeleCouleur}; + defaultcolormodel := \useKV[ClesThales]{ModeleCouleur}; u:=\useKV[ClesThales]{Echelle}; pair A,B,C,M,N,O;% %On place les points A,B,C sur le cercle de mani\`ere \`a faciliter la rotation de la figure @@ -213,7 +213,7 @@ fill (fullcircle scaled 0.75mm) shifted (cotes1 intersectionpoint cotes4); fill (fullcircle scaled 0.75mm) shifted (cotes3 intersectionpoint cotes4); \end{mplibcode} - \mplibcodeinherit{disable} +% \mplibcodeinherit{disable} \else \begin{mpost}[mpsettings={u:=\useKV[ClesThales]{Echelle};}] pair A,B,C,M,N,O;% @@ -261,7 +261,7 @@ % #5 point sur la droite #1#3 \ifluatex \mplibforcehmode - \mplibcodeinherit{enable} +% \mplibcodeinherit{enable} \begin{mplibcode} defaultcolormodel := \useKV[ClesThales]{ModeleCouleur}; u:=\useKV[ClesThales]{Echelle}; @@ -343,7 +343,7 @@ label(btex $//$ etex ,K); drawoptions(); \end{mplibcode} - \mplibcodeinherit{disable} +% \mplibcodeinherit{disable} \else \begin{mpost}[mpsettings={u:=\useKV[ClesThales]{Echelle};boolean CouleursNum,CouleursDen; CouleursNum=\useKV[ClesThales]{CouleursNum}; @@ -435,7 +435,7 @@ % #5 point sur la droite #1#3 \ifluatex \mplibforcehmode - \mplibcodeinherit{enable} +% \mplibcodeinherit{enable} \begin{mplibcode} defaultcolormodel := \useKV[ClesThales]{ModeleCouleur}; u:=\useKV[ClesThales]{Echelle}; @@ -479,7 +479,7 @@ fill (fullcircle scaled 0.75mm) shifted (cotes1 intersectionpoint cotes2); fill (fullcircle scaled 0.75mm) shifted (cotes3 intersectionpoint cotes2); \end{mplibcode} - \mplibcodeinherit{disable} +% \mplibcodeinherit{disable} \else \begin{mpost}[mpsettings={u:=\useKV[ClesThales]{Echelle};}] pair A,B,C,M,N,O;% diff --git a/macros/latex/contrib/profcollege/latex/PfCTrigonometrie.tex b/macros/latex/contrib/profcollege/latex/PfCTrigonometrie.tex index c31076e010..38fe05ce60 100644 --- a/macros/latex/contrib/profcollege/latex/PfCTrigonometrie.tex +++ b/macros/latex/contrib/profcollege/latex/PfCTrigonometrie.tex @@ -209,7 +209,7 @@ % #6 hyp % #7 angle de rotation \ifluatex - \mplibcodeinherit{enable} +% \mplibcodeinherit{enable} \mplibforcehmode \begin{mplibcode} defaultcolormodel := \useKV[ClesTrigo]{ModeleCouleur}; @@ -278,7 +278,7 @@ fi; fi; \end{mplibcode} -\mplibcodeinherit{disable} +%\mplibcodeinherit{disable} \else \begin{mpost}[mpsettings={u:=\useKV[ClesTrigo]{Echelle};}] u:=1cm; diff --git a/macros/latex/contrib/profcollege/latex/PfCTrio.tex b/macros/latex/contrib/profcollege/latex/PfCTrio.tex index beee6278fa..560258ff59 100644 --- a/macros/latex/contrib/profcollege/latex/PfCTrio.tex +++ b/macros/latex/contrib/profcollege/latex/PfCTrio.tex @@ -1,7 +1,7 @@ \newlength\PfCTrioHauteur% \newcounter{PfCTrioLettre}% -\setKVdefault[Trio]{Largeur=15pt,Graines=false,Repere=false,Cibles=false,Ligne=1,Colonne=1,Vide=false,VideRepere=false,Relatifs=false,Ecole=false,Horizontal=false,Vertical=false,DiagonaleM=false,DiagonaleD=false,NonAlea=false,NbSolutions=false}% +\setKVdefault[Trio]{Largeur=15pt,Graines=false,Repere=false,Cibles=false,Ligne=1,Colonne=1,Vide=false,VideRepere=false,Relatifs=false,Ecole=false,Horizontal=false,Vertical=false,DiagonaleM=false,DiagonaleD=false,NonAlea=false,NbSolutions=false,IntroRelatifs=false}% \defKV[Trio]{Graine=\setKV[Trio]{Graines}}% \defKV[Trio]{Cible=\setKV[Trio]{Cibles}}% \defKV[Trio]{Liste=\setKV[Trio]{NonAlea}}% @@ -20,18 +20,29 @@ }% \NewDocumentCommand\TrioTestCible{O{\useKV[Trio]{Cible}}mmm}{% - \xintifboolexpr{% - \fpeval{#2*#3+#4}==#1% - || \fpeval{#2*#3-#4}==#1% - || \fpeval{#3*#4+#2}==#1% - || \fpeval{#3*#4-#2}==#1% - || \fpeval{#4*#2+#3}==#1% - || \fpeval{#4*#2-#3}==#1% - % ajout pour une cible négative - || \fpeval{#3-#4*#2}==#1% - || \fpeval{#4-#2*#3}==#1% - || \fpeval{#2-#3*#4}==#1% - }{\xdef\PfCRetourTestCible{1}}{\xdef\PfCRetourTestCible{0}}% + \ifboolKV[Trio]{IntroRelatifs}{% + \xintifboolexpr{% + \fpeval{#2*#3+#4}==#1% + || \fpeval{#2*#3-#4}==#1% + || \fpeval{#3*#4+#2}==#1% + || \fpeval{#3*#4-#2}==#1% + || \fpeval{#4*#2+#3}==#1% + || \fpeval{#4*#2-#3}==#1% + % ajout pour une cible négative + || \fpeval{#3-#4*#2}==#1% + || \fpeval{#4-#2*#3}==#1% + || \fpeval{#2-#3*#4}==#1% + }{\xdef\PfCRetourTestCible{1}}{\xdef\PfCRetourTestCible{0}}% + }{% + \xintifboolexpr{% + \fpeval{#2*#3+#4}==#1% + || \fpeval{#2*#3-#4}==#1% + || \fpeval{#3*#4+#2}==#1% + || \fpeval{#3*#4-#2}==#1% + || \fpeval{#4*#2+#3}==#1% + || \fpeval{#4*#2-#3}==#1% + }{\xdef\PfCRetourTestCible{1}}{\xdef\PfCRetourTestCible{0}}% + }% }% \NewDocumentCommand\Trio{o}{% diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty index d09cfda988..3963e71e7d 100644 --- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty +++ b/macros/latex/contrib/profcollege/latex/ProfCollege.sty @@ -2,9 +2,9 @@ % licence : Released under the LaTeX Project Public License v1.3c % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e}% -\def\filedate{2024/03/24}% +\def\filedate{2024/04/20}% \let\PfCfiledate\filedate% -\def\fileversion{0.99-A-b}% +\def\fileversion{0.99-A-c}% \let\PfCfileversion\fileversion% \ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]% @@ -39,7 +39,7 @@ % mathématiques \RequirePackage{siunitx}% \sisetup{% - locale=FR,%mode = match, + locale=FR,mode = match, propagate-math-font = true,% reset-math-version = false, reset-text-family = false,% reset-text-series = false, reset-text-shape = false,% @@ -326,12 +326,40 @@ \IfNoValueTF{#1}{\Dotfill}{\makebox[#1]{\Dotfill}}% }% +%\NewDocumentCommand\Lignespointilles{m}{% +% \xintifboolexpr{\fpeval{#1}>1}{% +% \xintFor* ##1 in {\xintSeq {1}{\fpeval{#1}}}\do{% +% \pointilles\par% +% }% +% }{}% +%}% + +\NewDocumentCommand\PfCNbLignesRestantes{}{% + \edef\measurepage{\dimexpr\pagegoal-\pagetotal\relax}% + \xintifboolexpr{\fpeval{\the\measurepage}>\fpeval{\the\textheight}}{ +% Toto + \edef\measurepage{\dimexpr\textheight\relax} + }{} + \xdef\PfCResteLignes{\fpeval{trunc((\the\measurepage)/(\baselineskip),0)}}% +}% + +\NewDocumentCommand\PfCLignesFinales{}{% + \PfCNbLignesRestantes% + \xintFor* ##1 in {\xintSeq {1}{\PfCResteLignes}}\do{% + \pointilles\par% + }% +}% + \NewDocumentCommand\Lignespointilles{m}{% - \xintifboolexpr{\fpeval{#1}>1}{% - \xintFor* ##1 in {\xintSeq {1}{\fpeval{#1}}}\do{% - \pointilles\par% - }% - }{}% + \ifx\bla#1\bla% + \par\PfCLignesFinales% + \else% + \xintifboolexpr{\fpeval{#1}>1}{% + \xintFor* ##1 in {\xintSeq {1}{#1}}\do{% + \pointilles\par% + }% + }{}% + \fi }% %https://tex.stackexchange.com/questions/128991/frac-or-inference-rule-with-dotted-line @@ -759,6 +787,7 @@ \def\PfCSymbolTimes{\times}% \def\PfCSymbolDiv{\div}% +\input{PfCAssemblagesSolides} \input{PfCTicketCaisse} \input{PfCRecyclage} \input{PfCDontCountDots} diff --git a/macros/latex/contrib/profcollege/metapost/PfCObjets.mp b/macros/latex/contrib/profcollege/metapost/PfCObjets.mp index 3b47a88983..fd2fbe0f2d 100644 --- a/macros/latex/contrib/profcollege/metapost/PfCObjets.mp +++ b/macros/latex/contrib/profcollege/metapost/PfCObjets.mp @@ -42,6 +42,263 @@ Transparence:=false; boolean couleurz;%pour grer l'affichage "des lignes" de niveaux couleurz:=false; + vardef AffichageObjetCylindre[]= + save _affi; + picture _affi; + color Fc[][];color cou[]; + tapj:=0; + for k=0 upto apj.@: + cpt[tapj]:=tapj; + Fc[tapj].nb:=OTFc.@[k].nb; + for l=1 upto Fc[tapj].nb: + Fc[tapj][l]:=OTFc.@[k][l]; + endfor; + Fc[tapj].iso:=OTFc.@[k].iso; + cou[tapj]:=if perso.@:scantokens(couleurperso) else: coul.@[k] fi; + ALT[tapj]:=ALT.@[k]; + Vue[tapj]:=Vue.@[k]; + tapj:=tapj+1; + endfor; + tapj:=tapj-1; + QS(0,tapj); + for k=0 step 1 until tapj: + if Vue[cpt[k]]=false: + draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][2]) dashed dashpattern(on0.5 off2) withpen pencircle scaled0.25; + draw Projette(Fc[cpt[k]][3])--Projette(Fc[cpt[k]][4]) dashed dashpattern(on0.5 off2) withpen pencircle scaled0.25; + fi; + endfor; + n:=0; + for k=0 step 1 until tapj: + if Vue[cpt[k]]: +% label(""&decimal(cpt[k])&"",Projette(Fc[cpt[k]].iso)); + n:=n+1; + if n<3: + if cpt[k]>1: + vala[n]=cpt[k]; +% label.top(decimal(n)&"--"&decimal(vala[n]),n*u*(1,0)); + else: + n:=n-1; + fi; + fi; + if cpt[k]<1: + draw for l=1 upto Fc[cpt[k]].nb: + Projette(Fc[cpt[k]][l])-- + endfor + cycle;% withpen pencircle scaled0.25; + fi; + if cpt[k]>1: + draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][2]);% withpen pencircle scaled0.25; + draw Projette(Fc[cpt[k]][3])--Projette(Fc[cpt[k]][4]);% withpen pencircle scaled0.25; + fi; + fi; + endfor; + if vala[1]<vala[2]: + draw Projette(Fc[vala[1]][2])--Projette(Fc[vala[1]][3]);% withpen pencircle scaled0.25; + draw Projette(Fc[vala[2]][1])--Projette(Fc[vala[2]][4]);% withpen pencircle scaled0.25; + else: + draw Projette(Fc[vala[1]][1])--Projette(Fc[vala[1]][4]);% withpen pencircle scaled0.25; + draw Projette(Fc[vala[2]][2])--Projette(Fc[vala[2]][3]);% withpen pencircle scaled0.25; + fi; +enddef; + + vardef AffichageObjetCylindreSansBase[]= + save _affi; + picture _affi; + color Fc[][];color cou[]; + tapj:=0; + for k=0 upto apj.@: + cpt[tapj]:=tapj; + Fc[tapj].nb:=OTFc.@[k].nb; + for l=1 upto Fc[tapj].nb: + Fc[tapj][l]:=OTFc.@[k][l]; + endfor; + Fc[tapj].iso:=OTFc.@[k].iso; + cou[tapj]:=if perso.@:scantokens(couleurperso) else: coul.@[k] fi; + ALT[tapj]:=ALT.@[k]; + Vue[tapj]:=Vue.@[k]; + tapj:=tapj+1; + endfor; + tapj:=tapj-1; + QS(0,tapj); + for k=0 step 1 until tapj: + if Vue[cpt[k]]=false: + draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][2]) dashed dashpattern(on0.5 off2) withpen pencircle scaled0.25; + draw Projette(Fc[cpt[k]][3])--Projette(Fc[cpt[k]][4]) dashed dashpattern(on0.5 off2) withpen pencircle scaled0.25; + fi; + endfor; + n:=0; + for k=0 step 1 until tapj: + if Vue[cpt[k]]: +% label(""&decimal(cpt[k])&"",Projette(Fc[cpt[k]].iso)); + n:=n+1; + if n<3: + if cpt[k]>1: + vala[n]=cpt[k]; +% label.top(decimal(n)&"--"&decimal(vala[n]),n*u*(1,0)); + else: + n:=n-1; + fi; + fi; + %if cpt[k]<1: + %draw for l=1 upto Fc[cpt[k]].nb: + % Projette(Fc[cpt[k]][l])-- + % endfor + % cycle withpen pencircle scaled0.25; + % fi; + if cpt[k]>1: + draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][2]);% withpen pencircle scaled0.25; + draw Projette(Fc[cpt[k]][3])--Projette(Fc[cpt[k]][4]);% withpen pencircle scaled0.25; + fi; + fi; + endfor; + if vala[1]<vala[2]: + draw Projette(Fc[vala[1]][2])--Projette(Fc[vala[1]][3]);% withpen pencircle scaled0.25; + draw Projette(Fc[vala[2]][1])--Projette(Fc[vala[2]][4]);% withpen pencircle scaled0.25; + else: + draw Projette(Fc[vala[1]][1])--Projette(Fc[vala[1]][4]);% withpen pencircle scaled0.25; + draw Projette(Fc[vala[2]][2])--Projette(Fc[vala[2]][3]);% withpen pencircle scaled0.25; + fi; +enddef; + +vardef AffichageObjetCone[]= + save _affi; + picture _affi; + color Fc[][];color cou[]; + tapj:=0; + for k=0 upto apj.@: + cpt[tapj]:=tapj; + Fc[tapj].nb:=OTFc.@[k].nb; + for l=1 upto Fc[tapj].nb: + Fc[tapj][l]:=OTFc.@[k][l]; + endfor; + Fc[tapj].iso:=OTFc.@[k].iso; + cou[tapj]:=if perso.@:scantokens(couleurperso) else: coul.@[k] fi; + ALT[tapj]:=ALT.@[k]; + Vue[tapj]:=Vue.@[k]; + tapj:=tapj+1; + endfor; + tapj:=tapj-1; + QS(0,tapj); + n:=0; + for k=0 upto tapj: + if Vue[cpt[k]]: + %label(""&decimal(cpt[k])&"",Projette(Fc[cpt[k]].iso)); + if cpt[k]>0: + n:=n+1; + if n<3: + if cpt[k]>1: + vala[n]:=cpt[k]; +% label.top(decimal(n)&"--"&decimal(vala[n]),n*u*(1,0)); + else: + n:=n-1; + fi; + fi; + draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][2]);%withpen pencircle scaled0.25bp; + fi; + fi; + endfor; + if vala[1]<vala[2]: + draw Projette(Fc[vala[1]][2])--Projette(Fc[vala[1]][3]);% withpen pencircle scaled0.25; + draw Projette(Fc[vala[2]][1])--Projette(Fc[vala[2]][4]);% withpen pencircle scaled0.25; + else: + draw Projette(Fc[vala[1]][1])--Projette(Fc[vala[1]][4]);% withpen pencircle scaled0.25; + draw Projette(Fc[vala[2]][2])--Projette(Fc[vala[2]][3]);% withpen pencircle scaled0.25; + fi; + enddef; + + vardef AffichageObjetConeAvecBase[]= + save _affi; + picture _affi; + color Fc[][];color cou[]; + tapj:=0; + for k=0 upto apj.@: + cpt[tapj]:=tapj; + Fc[tapj].nb:=OTFc.@[k].nb; + for l=1 upto Fc[tapj].nb: + Fc[tapj][l]:=OTFc.@[k][l]; + endfor; + Fc[tapj].iso:=OTFc.@[k].iso; + cou[tapj]:=if perso.@:scantokens(couleurperso) else: coul.@[k] fi; + ALT[tapj]:=ALT.@[k]; + Vue[tapj]:=Vue.@[k]; + tapj:=tapj+1; + endfor; + tapj:=tapj-1; + QS(0,tapj); + for k=0 upto tapj: + if Vue[cpt[k]]=false: + draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][2]) + dashed dashpattern(on0.5 off2) withpen pencircle scaled0.25bp; + fi; + endfor; + n:=0; + for k=0 upto tapj: + if Vue[cpt[k]]: + %label(""&decimal(cpt[k])&"",Projette(Fc[cpt[k]].iso)); + if cpt[k]>0: + n:=n+1; + if n<3: + if cpt[k]>1: + vala[n]:=cpt[k]; +% label.top(decimal(n)&"--"&decimal(vala[n]),n*u*(1,0)); + else: + n:=n-1; + fi; + fi; + draw Projette(Fc[cpt[k]][1])--Projette(Fc[cpt[k]][2]);%withpen pencircle scaled0.25bp; + fi; + fi; + endfor; + if vala[1]<vala[2]: + draw Projette(Fc[vala[1]][2])--Projette(Fc[vala[1]][3]);% withpen pencircle scaled0.25; + draw Projette(Fc[vala[2]][1])--Projette(Fc[vala[2]][4]);% withpen pencircle scaled0.25; + else: + draw Projette(Fc[vala[1]][1])--Projette(Fc[vala[1]][4]);% withpen pencircle scaled0.25; + draw Projette(Fc[vala[2]][2])--Projette(Fc[vala[2]][3]);% withpen pencircle scaled0.25; + fi; +enddef; + + vardef AffichageObjetCalotte[]= + save _affi; + picture _affi; + color Fc[][];color cou[]; + tapj:=0; + for k=0 upto apj.@: + cpt[tapj]:=tapj; + Fc[tapj].nb:=OTFc.@[k].nb; + for l=1 upto Fc[tapj].nb: + Fc[tapj][l]:=OTFc.@[k][l]; + endfor; + Fc[tapj].iso:=OTFc.@[k].iso; + cou[tapj]:=if perso.@:scantokens(couleurperso) else: coul.@[k] fi; + ALT[tapj]:=ALT.@[k]; + Vue[tapj]:=Vue.@[k]; + tapj:=tapj+1; + endfor; + tapj:=tapj-1; + QS(0,tapj); + minvue:=4000; + for k=1 step 1 until tapj: + if cpt[k]>1: + if Vue[cpt[k]]: + if cpt[k]<minvue: + minvue:=cpt[k]; + fi; + fi; + fi; + endfor; + for k=0 upto 11: + draw for l=1 upto 2:%Fc[minvue+k*72].nb: + Projette(Fc[minvue+k*72][l])-- + endfor + cycle;% withpen pencircle scaled0.25bp; + draw for l=3 upto 4:%Fc[minvue+k*72].nb: + Projette(Fc[minvue+35+k*72][l])-- + endfor + cycle;% withpen pencircle scaled0.25bp; + endfor; +enddef; + vardef AffichagePfC[]= save _affi; picture _affi; diff --git a/macros/latex/contrib/profcollege/metapost/PfCScratch.mp b/macros/latex/contrib/profcollege/metapost/PfCScratch.mp index 2a7ce304e2..6e2e7beb59 100644 --- a/macros/latex/contrib/profcollege/metapost/PfCScratch.mp +++ b/macros/latex/contrib/profcollege/metapost/PfCScratch.mp @@ -1689,8 +1689,11 @@ $=image( fill cadre withcolor if print : coefprint*White else : if unknown colControle : LightOrange else : colControle fi fi; draw cadre withcolor if print : coefprint*White else : if unknown colControle : LightOrange else : colControle fi fi; AA:=ahangle; - ahangle:=90; - drawarrow (lrcorner texto+(-0.625cm,0.15cm)){dir-15}..{dir90}(urcorner texto+(-0.25cm,-0.1cm)) withpen pencircle scaled2bp if print=false : withcolor white fi; + BB:=ahlength; + ahangle:=90;%90 + ahlength:=ahlength/2; +% drawarrow (lrcorner texto+(-0.625cm,0.15cm)){dir-15}..{dir90}(urcorner texto+(-0.25cm,-0.1cm)) withpen pencircle scaled1.5 if print=false : withcolor white fi; + drawarrow (lrcorner texto+(-0.25cm,0.15cm)){dir-30}..{dir90}(urcorner texto+(-0.125cm,-0.1cm)) withpen pencircle scaled1 if print=false : withcolor white fi; ahangle:=AA; draw (coindebutbloc[numblocrep]+(0.0625+0.5cm+eb,0.125)){dir180}.. {dir-90}(coindebutbloc[numblocrep]+(0.5cm,-eb))-- |