summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/projlib/ProjLib-doc.dtx
blob: ac30792c0fbbf5526b0e49d48ee9989d2c12aae7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
% \iffalse meta-comment
%
% Copyright (C) 2021 by Jinwen XU 
% -------------------------------
% 
% This file may be distributed and/or modified under the conditions of the LaTeX
% Project Public License, either version 1.3c of this license or (at your option)
% any later version. The latest version of this license is in:
%
%    http://www.latex-project.org/lppl.txt
%
% \fi
%
%<*driver>
\ProvidesFile{ProjLib-doc.dtx}
%</driver>
%
\documentclass[allowbf,puretext]{lebhart}

%%================================
%% Import toolkit
%%================================
\usepackage{ProjLib}
\usepackage{longtable}  % breakable tables
\usepackage{hologo}     % more TeX logo
\usepackage{multicol}
\setlength{\columnsep}{2em}
\setlength{\columnseprule}{.75pt}
\def\columnseprulecolor{\color{gray!55}}

%<ProjLib-doc-cn>\UseLanguage{Chinese}
%<ProjLib-doc-en>\UseLanguage{English}
%<ProjLib-doc-fr>\UseLanguage{French}

%%================================
%% For typesetting code
%%================================
\usepackage{listings}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
    keywordstyle=\color{maintheme},
    basicstyle=\ttfamily,
    commentstyle=\color{forestgreen}\ttfamily,
    stringstyle=\rmfamily,
    showstringspaces=false,
    breaklines=true,
    frame=lines,
    backgroundcolor=\color{lightergray},
    flexiblecolumns=true,
    escapeinside={(*}{*)},
    % numbers=left,
    numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
    % firstnumber=last,
} 
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
    {color,NameTheorem,CreateTheorem,proofideanameCN,proofideanameEN,proofideanameFR,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,PJLdate,ProjLib,
    mathfrak,mf,frak,mfA,mathbb,bb,N,Z,Q,R,C,F,A,mathcal,mc,cal,mathscr,ms,scr,
    abs,norm,injection,surjection,bijection,legendre,tlegendre,dlegendre,pmod
    }
}
\lstnewenvironment{code}% 
{\setkeys{lst}{columns=fullflexible,keepspaces=true}}{}
\lstnewenvironment{code*}% 
{\setkeys{lst}{numbers=left,columns=fullflexible,keepspaces=true}}{}

%%================================
%% tip
%%================================
%<ProjLib-doc-cn>\newenvironment{tip}[1][提示]{%
%<ProjLib-doc-en>\newenvironment{tip}[1][Tip]{%
%<ProjLib-doc-fr>\newenvironment{tip}[1][Astuce]{%
    \begin{tcolorbox}[breakable,
        enhanced,
        width = \textwidth,
        colback = paper, colbacktitle = paper,
        colframe = gray!50, boxrule=0.2mm,
        coltitle = black,
        fonttitle = \sffamily,
        attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=.5cm},
        boxed title style = {boxrule=0pt, colframe=paper},
        before skip = 0.3cm,
        after skip = 0.3cm,
        top = 3mm,
        bottom = 3mm,
        title={\scshape\sffamily #1}]%
}{\end{tcolorbox}}

%%================================
%% Names
%%================================
\providecommand{\ProjLibPackage}{\mbox{\textsf{ProjLib}}}
\providecommand{\PJLauthor}{\mbox{\textsf{PJLauthor}}}
\providecommand{\PJLdatePackage}{\mbox{\textsf{PJLdate}}}
\providecommand{\PJLdraft}{\mbox{\textsf{PJLdraft}}}
\providecommand{\PJLlang}{\mbox{\textsf{PJLlang}}}
\providecommand{\PJLlogo}{\mbox{\textsf{PJLlogo}}}
\providecommand{\PJLmath}{\mbox{\textsf{PJLmath}}}
\providecommand{\PJLpaper}{\mbox{\textsf{PJLpaper}}}
\providecommand{\PJLthm}{\mbox{\textsf{PJLthm}}}

%%================================
%% Main text
%%================================
\begin{document}

%<*ProjLib-doc-cn>
\title{\ProjLib{} 工具集\\[.3\baselineskip]\normalsize 使用指南}
\author{许锦文}
\thanks{对应版本.~~\texttt{\ProjLib{}~2021/08/17}}
\email{\href{mailto:ProjLib@outlook.com}{ProjLib@outlook.com}}
\date{2021年8月,北京}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\title{\ProjLib{}~\,Toolkit\\[.3\baselineskip]\normalsize User Manual}
\author{Jinwen XU}
\thanks{Corresponding to: \texttt{\ProjLib{}~2021/08/17}}
\email{\href{mailto:ProjLib@outlook.com}{ProjLib@outlook.com}}
\date{August 2021, Beijing}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\title{La boîte à outils~\,\ProjLib{}\\[.3\baselineskip]\normalsize Manuel d'utilisation}
\author{Jinwen XU}
\thanks{Correspondant à : \texttt{\ProjLib{}~2021/08/17}}
\email{\href{mailto:ProjLib@outlook.com}{ProjLib@outlook.com}}
\date{Août 2021, à Pékin}
%</ProjLib-doc-fr>

\maketitle

%<*ProjLib-doc-cn>
\begin{abstract}
    \ProjLib{} 工具集之设计目的为简化 \LaTeX{} 文档撰写前的准备工作。只需要加载 \ProjLibPackage{},多语言设置就已准备就绪,定理类环境已被设置好可供直接使用,并且引入了一系列辅助功能。
\end{abstract}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\begin{abstract}
    The \ProjLib{} toolkit is designed to simplify the preparation before writing \LaTeX{} documents. With the package \ProjLibPackage{} loaded, you no longer need to set up the theorem-like environments nor configure the appropriate multilingual settings. Additionally, a series of auxiliary functionalities are introduced.
\end{abstract}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\begin{abstract}
    La boîte à outils \ProjLib{} est conçue pour simplifier la préparation avant d'écrire des documents \LaTeX{}. Avec le package \ProjLibPackage{} ajouté, vous n'avez plus besoin de créer des environnements de type théorème, ni de configurer les paramètres multilingues. De plus, une série de fonctionnalités auxiliaires sont introduites.
\end{abstract}
%</ProjLib-doc-fr>

\begin{multicols}{2}
%<!ProjLib-doc-fr>    \small
%<ProjLib-doc-fr>    \footnotesize
    \tableofcontents
\end{multicols}

\medskip

%<*ProjLib-doc-cn>
\section*{开始之前}
\addcontentsline{toc}{section}{开始之前}

为了使用这套工具集,你需要:
\begin{itemize}
    \item 安装一个尽可能新版本的 TeX Live 或 MikTeX 套装,并确保 \texttt{projlib} 被正确安装在你的 \TeX 封装中。
    \item 熟悉 \LaTeX{} 的基本使用方式,并且知道如何用 \hologo{pdfLaTeX}、\hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 编译你的文档。
\end{itemize}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\section*{Before you start}
\addcontentsline{toc}{section}{Before you start}

In order to use the toolkit, you need to:
\begin{itemize}
     \item install TeX Live or MikTeX of the latest possible version, and to make sure that \texttt{projlib} is correctly installed in your \TeX{} system.
     \item be familiar with the basic usage of \LaTeX{}, and to know how to compile your documents with \hologo{pdfLaTeX}, \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
\end{itemize}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\section*{Avant de commencer}
\addcontentsline{toc}{section}{Avant de commencer}

Pour utiliser la boîte à outils, vous devez :
\begin{itemize}
      \item installer TeX Live ou MikTeX de la dernière version possible, et vous assurer que \texttt{projlib} est correctement installé dans votre système \TeX{}.
      \item être familiarisé avec l'utilisation de base de \LaTeX{}, et savoir comment compiler vos documents avec \hologo{pdfLaTeX}, \hologo{XeLaTeX} ou \hologo{LuaLaTeX}.
\end{itemize}
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\section{简介}

\ProjLib{} 这一名称可以看成是英文 Project Library (项目库) 或法文 Projet Libre (自由项目) 的缩写 (作者更喜欢法文的全称)。其主要目的是提供多语言支持和带有智能引用的定理类环境。除此之外,还附加了一些额外功能,如支持作者附加信息、未完成标记、数学符号与捷径等。

\ProjLib{} 工具箱由主宏包 \ProjLibPackage{} 以及一系列由“PJL”缩写开头的内部组件构成。你可以通过下一节的使用实例来了解它的使用方式。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\section{Introduction}

The name \ProjLib{} can be regarded as the abbreviation of \emph{Project Library} in English or \emph{Projet Libre} in French (the author prefers the French interpretation). Its main purpose is to provide multi-language support and theorem-like environments with clever references. In addition, some additional features are provided, such as the enhanced author block, draft marks, mathematical symbols and shortcuts, etc.

The \ProjLib{} toolkit is composed of the main package \ProjLibPackage{} and a series of components whose names begin with the abbreviation "PJL". You can learn how to use it through the usage examples in the next section.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\section{Introduction}

Le nom \ProjLib{} peut être considéré comme l'abréviation de \emph{Project Library} en anglais ou de \emph{Projet Libre} en français (l'auteur préfère l'interprétation française). Son objectif principal est de fournir un support multilingue et des environnements de type théorème avec des références intelligentes. De plus, certaines fonctionnalités supplémentaires sont fournies, telles que le bloc auteur amélioré, les marques de brouillon, les symboles mathématiques et les raccourcis, etc.

La boîte à outils \ProjLib{} est composée du package principal \ProjLibPackage{} et d'une série de composants dont les noms commencent par l'abréviation «~PJL~». Vous pouvez apprendre à l'utiliser à travers les exemples d'utilisation dans la section suivante.
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\section{使用示例}

\subsection{如何加载}

加载 \ProjLib{} 工具箱十分容易,只需要在导言部分加入这一行即可:

\begin{code}
\usepackage{ProjLib}
\end{code}

\begin{tip}[注意事项]
    由于其内部使用了 \textsf{cleveref},\ProjLibPackage{} 需要放在 \textsf{varioref}、\textsf{hyperref} 的后面。
\end{tip}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\section{Usage example}

\subsection{How to load it}

Just add the following line to your preamble:

\begin{code}
\usepackage{ProjLib}
\end{code}

\begin{tip}[Attention]
    Since \textsf{cleveref} is used internally, \ProjLibPackage{} needs to be placed after \textsf{varioref} and \textsf{hyperref}.
\end{tip}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\section{Exemple d'utilisation}

\subsection{Comment l'ajouter}

Ajoutez simplement la ligne suivante à votre préambule :

\begin{code}
\usepackage{ProjLib}
\end{code}

\begin{tip}[Attention]
     Comme \textsf{cleveref} est utilisé en interne, \ProjLibPackage{} doit être placé après \textsf{varioref} et \textsf{hyperref}.
\end{tip}
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsection{一篇完整的文档示例}

首先来看一段完整的示例。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\medskip
\subsection{Example - A complete document}

Let's first look at a complete document.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\medskip
\subsection{Exemple - Un document complet}

Regardons d'abord un document complet.
%</ProjLib-doc-fr>

\begin{code*}
\documentclass{article}
\usepackage[a4paper,margin=.75in]{geometry}
\usepackage[hidelinks]{hyperref}
\usepackage[palatino]{ProjLib} % Load the toolkit and use font Palatino

\UseLanguage{French} % Use French from here

\begin{document}

\title{(*\meta{title}*)}
\author{(*\meta{author}*)}
\date{\PLdate{2022-04-01}}

\maketitle

\begin{abstract}
    (*\meta{abstract text}*) \dnf<(*\meta{some hint}*)>
\end{abstract}

\section{Un théorème}

\begin{theorem}\label{thm:abc}
    Ceci est un théorème.
\end{theorem}

Référence du théorème: \cref{thm:abc} % It is recommended to use clever reference

\end{document}
\end{code*}

\bigskip

%<*ProjLib-doc-cn>
如果你觉得这个例子有些复杂,不要担心。现在我们来一点点地观察这个例子。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
If you find it a little complicated, don't worry. Let's now look at this example piece by piece.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
Si vous trouvez cela un peu compliqué, ne vous inquiétez pas. Examinons maintenant cet exemple pièce par pièce.
%</ProjLib-doc-fr>

\clearpage
%<*ProjLib-doc-cn>
\subsubsection{初始化部分}

\begin{code}
\documentclass{article}
\usepackage[a4paper,margin=.75in]{geometry}
\usepackage[hidelinks]{hyperref}
\usepackage[palatino]{ProjLib}
\end{code}

在标准文档类中,通常只需简要设置页面尺寸、超链接,再载入 \ProjLibPackage{},即可直接开始写作。这里使用了 \ProjLibPackage{} 的 \texttt{palatino} 字体选项。关于 \ProjLibPackage{} 的所有可用选项,可以参阅下一节。

当然,你也可以使用 \textsf{amsart} 文档类,设置是相同的。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{Initialization}

\begin{code}
\documentclass{article}
\usepackage[a4paper,margin=.75in]{geometry}
\usepackage[hidelinks]{hyperref}
\usepackage[palatino]{ProjLib}
\end{code}

In standard classes, one usually only need to configure the page size, hyperlinks and load \ProjLibPackage{} before actually start writing the document. The font option \texttt{palatino} of \ProjLibPackage{} is used here. For all available options of \ProjLibPackage{}, please refer to the next section.

Of course, you can also use the document class \textsf{amsart}, the configurations are the same.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{Initialisation}

\begin{code}
\documentclass{article}
\usepackage[a4paper,margin=.75in]{geometry}
\usepackage[hidelinks]{hyperref}
\usepackage[palatino]{ProjLib}
\end{code}

Dans les classes standard, il suffit généralement de configurer la taille de la page, les liens hypertexte et d'ajouter \ProjLibPackage{} avant de commencer à écrire le document. L'option de police \texttt{palatino} de \ProjLibPackage{} est utilisée ici. Pour toutes les options disponibles de \ProjLibPackage{}, veuillez vous référer à la section suivante.

Bien sûr, vous pouvez également utiliser la classe de document \textsf{amsart}, les configurations sont les mêmes.
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsubsection{设定语言}

\begin{code}
\UseLanguage{French}
\end{code}

这一行表明文档中将使用法语(如果你的文章中只出现英语,那么可以不需要设定语言)。你也可以在文章中间用同样的方式再次切换语言。支持的语言包括简体中文、繁体中文、日文、英语、法语、德语、西班牙语、葡萄牙语、巴西葡萄牙语、俄语\footnote{不过,你需要自行引入相应语言的支持与字体。例如,对于中文,你可能需要载入 \textsf{ctex} 宏包并设置字体。作为补充,你可以尝试作者的 \textsf{einfart} 或 \textsf{lebhart} 文档类,其中相应的设置都已经完成了,详细资料可以通过 \lstinline|texdoc minimalist| 或 \lstinline|texdoc colorist| 获知。}。

对于这一命令的详细说明以及更多相关命令,可以参考后面关于多语言支持的小节。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{Set the language}

\begin{code}
\UseLanguage{French}
\end{code}

This line indicates that French will be used in the document (by the way, if only English appears in your article, then there is no need to set the language). You can also switch the language in the same way later in the middle of the text. Supported languages include Simplified Chinese, Traditional Chinese, Japanese, English, French, German, Spanish, Portuguese, Brazilian Portuguese and Russian\footnote{However, you need to add the encoding support and fonts of the corresponding language by yourself. For example, for Chinese, you may need to load the \textsf{ctex} package and set the fonts. As a sidenote, you can try the author's document classes \textsf{einfart} or \textsf{lebhart}, in which the corresponding settings have been completed. For the details, run \lstinline|texdoc minimalist| or \lstinline|texdoc colorist| in the command line.}.

For detailed description of this command and more related commands, please refer to the section on the multi-language support.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{Choisir la langue}

\begin{code}
\UseLanguage{French}
\end{code}

Cette ligne indique que le français sera utilisé dans le document (d'ailleurs, si seul l'anglais apparaît dans votre article, alors il n'est pas nécessaire de choisir la langue). Vous pouvez également changer de langue de la même manière plus tard au milieu du texte. Les langues prises en charge sont : chinois simplifié, chinois traditionnel, japonais, anglais, français, allemand, espagnol, portugais, portugais brésilien et russe\footnote{Cependant, vous devez ajouter vous-même l'encodage et les polices de la langue correspondante. Par exemple, pour le chinois, vous devrez peut-être ajouter le package \textsf{ctex} et choisir les polices. Pour rappel, vous pouvez essayer les classes de documents \textsf{einfart} ou \textsf{lebhart} de l'auteur, dans lesquelles les paramètres correspondants ont été effectués. Pour les détails, exécutez \lstinline|texdoc minimalist| ou \lstinline|coloriste texdoc| en ligne de commande.}.

Pour une description détaillée de cette commande et d'autres commandes associées, veuillez vous référer à la section sur le support multilingue.
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsubsection{标题与作者信息}

\begin{code}
\title{(*\meta{title}*)}
\author{(*\meta{author}*)}
\date{\PLdate{2022-04-01}}
\end{code}

这一部分是标题和作者信息块。这个例子中给出的是最基本的形式,事实上你还可以这样写:
\begin{code}
\author{(*\meta{author 1}*)}
\address{(*\meta{address 1}*)}
\email{(*\meta{email 1}*)}
\author{(*\meta{author 2}*)}
\address{(*\meta{address 2}*)}
\email{(*\meta{email 2}*)}
...
\end{code}

另外,如果开启 \AmS{} 风格,那么文章中还可以采用 \AmS{} 文档类的写法 (此时原始的写法也是成立的)。为此,引入 \ProjLibPackage{} 时应该加入 \texttt{amsfashion} 选项\footnote{由于这一选项会修改\LaTeX{} 的一些内部指令,有可能与一些宏包或文档类发生冲突,因此没有默认启用。}:
\begin{code}
\usepackage[amsfashion,palatino]{ProjLib}
\end{code}
而相应地,你也就可以使用这些命令:
\begin{code}
\dedicatory{(*\meta{dedicatory}*)}
\subjclass{*****}
\keywords{(*\meta{keywords}*)}
\end{code}
另外,这种情况下,也可以允许摘要出现在 \lstinline|\maketitle| 的前面,如同在 \AmS{} 文档类中所要求的那样:
\begin{code}
\begin{abstract}
    (*\meta{abstract text}*)
\end{abstract}
\maketitle
\end{code}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{Title and author information}

\begin{code}
\title{(*\meta{title}*)}
\author{(*\meta{author}*)}
\date{\PLdate{2022-04-01}}
\end{code}

This part is the title and author information block. The example shows the most basic usage, but in fact, you can also write:
\begin{code}
\author{(*\meta{author 1}*)}
\address{(*\meta{address 1}*)}
\email{(*\meta{email 1}*)}
\author{(*\meta{author 2}*)}
\address{(*\meta{address 2}*)}
\email{(*\meta{email 2}*)}
...
\end{code}

In addition, if the \AmS{} simulation is enabled, you can also write in the \AmS{} fashion (the original way still works). For this, you should add the package option \texttt{amsfashion}\footnote{Since this option modifies some internal macros of \LaTeX{}, it may conflict with some packages or document classes, and thus it is not enabled by default.}, \emph{i.e.}, the line that introduces \ProjLibPackage{} should be written as:
\begin{code}
\usepackage[amsfashion,palatino]{ProjLib}
\end{code}
And correspondingly, you will also be able to use these macros:
\begin{code}
\dedicatory{(*\meta{dedicatory}*)}
\subjclass{*****}
\keywords{(*\meta{keywords}*)}
\end{code}
In addition, you can also write the abstract before \lstinline|\maketitle|, as the way required in the \AmS{} classes:
\begin{code}
\begin{abstract}
    (*\meta{abstract text}*)
\end{abstract}
\maketitle
\end{code}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{Le titre et les informations de l'auteur}

\begin{code}
\title{(*\meta{title}*)}
\author{(*\meta{author}*)}
\date{\PLdate{2022-04-01}}
\end{code}

Cette partie est le titre et le bloc d'informations de l'auteur. L'exemple montre l'utilisation la plus fondamentale, mais en fait, vous pouvez également écrire comme :
\begin{code}
\author{(*\meta{author 1}*)}
\address{(*\meta{address 1}*)}
\email{(*\meta{email 1}*)}
\author{(*\meta{author 2}*)}
\address{(*\meta{address 2}*)}
\email{(*\meta{email 2}*)}
...
\end{code}

De plus, si la simulation d'\AmS{} est activée, alors vous pouvez également écrire à la manière \AmS{} (la manière originale fonctionne encore). Pour cela, vous devez ajouter l'option de package \texttt{amsfashion}\footnote{Étant donné que cette option modifie certaines macros internes de \LaTeX{}, elle peut entrer en conflit avec certains packages ou classes de documents, et n'est donc pas activée par défaut.}, c'est-à-dire que la ligne qui introduit \ProjLibPackage{} doit être écrite comme :
\begin{code}
\usepackage[amsfashion,palatino]{ProjLib}
\end{code}
Et en conséquence, vous pourrez également utiliser ces macros :
\begin{code}
\dedicatory{(*\meta{dedicatory}*)}
\subjclass{*****}
\keywords{(*\meta{keywords}*)}
\end{code}
De plus, vous pouvez également placé le résumé avant \lstinline|\maketitle|, comme requis dans les classes \AmS{} :
\begin{code}
\begin{abstract}
    (*\meta{abstract text}*)
\end{abstract}
\maketitle
\end{code}
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsubsection{未完成标记}
\begin{code}
\dnf<(*\meta{some hint}*)>
\end{code}
当你有一些地方尚未完成的时候,可以用这条指令标记出来,它在草稿阶段格外有用。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{Draft marks}
\begin{code}
\dnf<(*\meta{some hint}*)>
\end{code}
When you have some places that have not yet been finished yet, you can mark them with this command, which is especially useful during the draft stage.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{Marques de brouillon}
\begin{code}
\dnf<(*\meta{some hint}*)>
\end{code}
Lorsque vous avez des endroits qui ne sont pas encore finis, vous pouvez les marquer avec cette commande, ce qui est particulièrement utile lors de la phase de brouillon.
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsubsection{定理类环境}
\begin{code}
\begin{theorem}\label{thm:abc}
    Ceci est un théorème.
\end{theorem}
Référence du théorème: \cref{thm:abc}
\end{code}

常见的定理类环境可以直接使用。在引用的时候,建议采用智能引用 \lstinline|\cref{|\meta{label}\lstinline|}|——这样就不必每次都写上相应环境的名称了。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{Theorem-like environments}
\begin{code}
\begin{theorem}\label{thm:abc}
    Ceci est un théorème.
\end{theorem}
Référence du théorème: \cref{thm:abc}
\end{code}

Commonly used theorem-like environments have been pre-defined. Also, when referencing a theorem-like environment, it is recommended to use \lstinline|\cref{|\meta{label}\texttt{\}} --- in this way, there is no need to explicitly write down the name of the corresponding environment every time.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{Environnements de type théorème}
\begin{code}
\begin{theorem}\label{thm:abc}
    Ceci est un théorème.
\end{theorem}
Référence du théorème: \cref{thm:abc}
\end{code}

Les environnements de type théorème couramment utilisés ont été prédéfinis. De plus, lors du référencement d'un environnement de type théorème, il est recommandé d'utiliser \lstinline|\cref{|\meta{label}\texttt{\}} --- de cette manière, il ne serait pas nécessaire d'écrire explicitement le nom de l'environnement correspondant à chaque fois.
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\section{主宏包的选项}

\ProjLibPackage{} 提供下列选项以供选择:
\begin{itemize}
    \item \texttt{draft} 或 \texttt{fast}
        \begin{itemize}
            \item 快速模式。功能会适当缩减,但能够提高编译速度,建议在撰写阶段使用。
        \end{itemize}
    \item \texttt{palatino}、\texttt{times}、\texttt{garamond}、\texttt{noto}、\texttt{biolinum} ~$|$~ \texttt{useosf}
        \begin{itemize}
            \item 字体选项。顾名思义,会加载相应名称的字体。
            \item \texttt{useosf} 选项用来启用“旧式”数字。
        \end{itemize}
    \item \texttt{nothms}、\texttt{delaythms}、\texttt{nothmnum}、\texttt{thmnum} 或 \texttt{thmnum=}\meta{counter}、\texttt{regionalref}、\texttt{originalref}
        \begin{itemize}
            \item 来自用于设置定理类环境的组件 \PJLthm{} 的选项,详细信息请参阅有关这一宏包的小节。
        \end{itemize}
    \item \texttt{author}
        \begin{itemize}
            \item 加载用于增强作者信息块的组件 \PJLauthor{}。关于其详细功能,请参阅有关该宏包的小节。
        \end{itemize}
    \item \texttt{amsfashion}
        \begin{itemize}
            \item 允许 \AmS{} 文档类的写法。此时 \texttt{author} 选项会被自动开启。
        \end{itemize}
\end{itemize}
另外,还有一些组件的参数可以作为文档类的全局参数传递,例如 \texttt{EN} / \texttt{english} / \texttt{English}、\texttt{CN} / \texttt{chinese} / \texttt{Chinese} 等语言选项 (来自 \PJLlang{}),\texttt{paperstyle} 和 \texttt{preview} 等纸张选项 (来自 \PJLpaper{})。详细信息可以参阅对应的小节。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\section{Options of the main package}

\ProjLibPackage{} offers the following options:
\begin{itemize}
    \item \texttt{draft} or \texttt{fast}
        \begin{itemize}
            \item Fast mode. The functionality will be appropriately reduced to get faster compilation speed, recommended to use during the writing stage.
        \end{itemize}
    \item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{noto}, \texttt{biolinum} ~$|$~ \texttt{useosf}
        \begin{itemize}
            \item Font options. As the names suggest, font with corresponding name will be loaded. 
            \item The \texttt{useosf} option is used to enable the old-style figures.
        \end{itemize}
    \item \texttt{nothms}, \texttt{delaythms}, \texttt{nothmnum}, \texttt{thmnum} or \texttt{thmnum=}\meta{counter}, \texttt{regionalref}, \texttt{originalref}
        \begin{itemize}
            \item Options from the component \PJLthm{} used for setting theorem-like environments, please refer to the section on this package for details.
        \end{itemize}
    \item \texttt{author}
        \begin{itemize}
            \item Load the component \PJLauthor{} used to enhance the author information block. For more information about its functionality, see the section on this package.
        \end{itemize}
    \item \texttt{amsfashion}
        \begin{itemize}
            \item Allow the user to write document in the \AmS{} fashion. In the mean time, the option \texttt{author} will be automatically turned on.
        \end{itemize}
\end{itemize}
In addition, there are also some options of the components that should be passed as global options of your document class, such as the language options \texttt{EN} / \texttt{english} / \texttt{English}, \texttt{FR} / \texttt{french} / \texttt{French} etc.\,of \PJLlang{}, \\and \texttt{paperstyle}, \texttt{preview} of \PJLpaper{}. For more information, please refer to the corresponding sections.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\section{Options du package principal}

\ProjLibPackage{} a les options suivantes :
\begin{itemize}
    \item \texttt{draft} ou \texttt{fast}
        \begin{itemize}
            \item Mode brouillon. La fonctionnalité sera réduite de manière appropriée pour obtenir une vitesse de compilation plus rapide, recommandée à utiliser pendant la phase de brouillon.
        \end{itemize}
    \item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{noto}, \texttt{biolinum} ~$|$~ \texttt{useosf}
        \begin{itemize}
            \item Options de police. Comme les noms l'indiquent, la police avec le nom correspondant sera utilisée.
            \item L'option \texttt{useosf} est pour activer les chiffres à l'ancienne.
        \end{itemize}
    \item \texttt{nothms}, \texttt{delaythms}, \texttt{nothmnum}, \texttt{thmnum} ou \texttt{thmnum=}\meta{counter}, \texttt{regionalref}, \texttt{originalref}
        \begin{itemize}
            \item Options du composant \PJLthm{} utilisé pour définir des environnements de type théorème, veuillez vous référer à la section sur ce package pour plus de détails.
        \end{itemize}
    \item \texttt{author}
        \begin{itemize}
            \item Utilisez le composant \PJLauthor{} pour enrichir le bloc d'informations sur l'auteur. Pour plus d'informations sur ses fonctionnalités, consultez la section sur ce package.
        \end{itemize}
    \item \texttt{amsfashion}
        \begin{itemize}
            \item Permet d'écrire à la manière \AmS{}. En attendant, l'option \texttt{author} sera automatiquement activée.
        \end{itemize}
\end{itemize}
De plus, il existe également certaines options des composants qui doivent être passées en tant qu'options globales de votre classe de document, telles que les options de langue de \PJLlang{} comme \texttt{EN} / \texttt{english} / \texttt{English}, \texttt{FR} / \texttt{french} / \texttt{French} etc., et les options de papier de \PJLpaper{} comme \texttt{paperstyle} et \texttt{preview}. Pour plus d'informations, veuillez vous référer aux sections correspondantes.
%</ProjLib-doc-fr>



\clearpage

%<*ProjLib-doc-cn>
\section{具体组件}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\section{The components}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\section{Les composants}
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsection{主要功能}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsection{Main functions}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsection{Fonctions principales}
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsubsection{PJLauthor:增强的作者信息块}

\PJLauthor{} 提供了 \lstinline|\address|、\lstinline|\curraddr|、\lstinline|\email| 命令,并且允许输入多组用户信息。标准的输入方式是这样的:
\begin{code}
\author{(*\meta{author 1}*)}
\address{(*\meta{address 1}*)}
\email{(*\meta{email 1}*)}
\author{(*\meta{author 2}*)}
\address{(*\meta{address 2}*)}
\email{(*\meta{email 2}*)}
...
\end{code}
其中 \lstinline|\address|、\lstinline|\curraddr|、\lstinline|\email| 的相互顺序是不重要的。

\medskip
另外,你可以通过选项 \texttt{amsfashion} 以使用 \AmS{} 方式写作。具体来说,效果为:
\begin{itemize}
    \item 提供 \lstinline|\dedicatory|、\lstinline|\keywords| 及 \lstinline|\subjclass| 命令
    \item \lstinline|\thanks| 可以写在 \lstinline|\author| 之外
    \item \lstinline|abstract| 环境可以放在 \lstinline|\maketitle| 的前面
\end{itemize}

\begin{tip}[注意]
    这些功能只在标准文档类中启用。在 \AmS{} 文档类中,\PJLauthor{} 不会起到任何效果。
\end{tip}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{PJLauthor: enhanced author block}

\PJLauthor{} offers \lstinline|\address|, \lstinline|\curraddr| and \lstinline|\email|, and allows you to enter multiple groups of author information. The standard usage is like this:
\begin{code}
\author{(*\meta{author 1}*)}
\address{(*\meta{address 1}*)}
\email{(*\meta{email 1}*)}
\author{(*\meta{author 2}*)}
\address{(*\meta{address 2}*)}
\email{(*\meta{email 2}*)}
...
\end{code}
The mutual order of \lstinline|\address|, \lstinline|\curraddr| and \lstinline|\email| is not important.

\medskip
In addition, you can use the option \texttt{amsfashion} to enable the \AmS{} fashion. More specifically, the effect is:
\begin{itemize}
    \item Provides the macros \lstinline|\dedicatory|, \lstinline|\keywords| and \lstinline|\subjclass|;
    \item \lstinline|\thanks| can be written outside \lstinline|\author|;
    \item The \lstinline|abstract| environment can be placed before \lstinline|\maketitle|.
\end{itemize}

\begin{tip}[Attention]
    These modifications would only take place in standard classes. In the \AmS{} classes, \PJLauthor{} does not have any effect.
\end{tip}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{PJLauthor : bloc auteur amélioré}

\PJLauthor{} propose les macros \lstinline|\address|, \lstinline|\curraddr| et \lstinline|\email|, et vous permet de saisir plusieurs groupes d'informations sur l'auteur. L'utilisation standard est comme ceci :
\begin{code}
\author{(*\meta{author 1}*)}
\address{(*\meta{address 1}*)}
\email{(*\meta{email 1}*)}
\author{(*\meta{author 2}*)}
\address{(*\meta{address 2}*)}
\email{(*\meta{email 2}*)}
...
\end{code}
L'ordre mutuel de \lstinline|\address|, \lstinline|\curraddr| et \lstinline|\email| n'est pas important.

\medskip
De plus, vous pouvez utiliser l'option \texttt{amsfashion} pour écrire à la manière \AmS{}. Plus précisément, l'effet est :
\begin{itemize}
    \item Fournit les macros \lstinline|\dedicatory|, \lstinline|\keywords| et \lstinline|\subjclass|;
    \item \lstinline|\thanks| peut être écrit en dehors de la macro \lstinline|\author|;
    \item La environnement \lstinline|abstract| peut être placé avant \lstinline|\maketitle|.
\end{itemize}

\begin{tip}[Attention]
    Ces modifications n'auraient lieu que dans les classes standard. Dans les classes \AmS{}, \PJLauthor{} n'a aucun effet.
\end{tip}
%</ProjLib-doc-fr>


%<*ProjLib-doc-cn>
\subsubsection{PJLlang:多语言支持}

\PJLlang{} 提供了多语言支持,包括简体中文、繁体中文、英文、法文、德文、日文、俄文 (其中中文、日文、俄文需要相应的 \TeX{} 引擎与字体支持)。

\medskip
\PJLlang{} 提供语言选项,这些选项的名称有三种,分别是缩写(如 \texttt{EN})、小写(如 \texttt{english})、首字母大写(如 \texttt{English})。具体的选项名称可以参见下文的 \meta{language name}。其中,第一个指定的语言 \meta{first language} 会被作为默认语言,相当于在文档开头指定 \lstinline|\UseLanguage{|\meta{first language}\lstinline|}|。

\begin{tip}
    为了提高编译速度,建议使用语言选项,并将其作为全局参数传递。这样,只会对指定语言进行设置,节省了 \TeX{} 内存,从而能显著提高编译速度。
\end{tip}

\medskip
在文档中,可以通过下列命令来选定语言:
\begin{itemize}
    \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}|,用于指定语言,在其后将使用对应的语言设定。
    \begin{itemize}
        \item 既可以用于导言部分,也可以用于正文部分。在不指定语言时,默认选定 “English”。
    \end{itemize}
    \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|,用指定的语言的设定排版 \meta{content}。
    \begin{itemize}
        \item 相比较 \lstinline|\UseLanguage|,它不会对行距进行修改,因此中西文字混排时能够保持行距稳定。
    \end{itemize}
\end{itemize}

% \medskip
\clearpage
\meta{language name} 有下列选择 (不区分大小写,如 \texttt{French} 或 \texttt{french} 均可):
\begin{itemize}\setstretch{1.15}
    \item 简体中文:\texttt{CN}、\texttt{Chinese}、\texttt{SChinese} 或 \texttt{SimplifiedChinese}
    \item 繁体中文:\texttt{TC}、\texttt{TChinese} 或 \texttt{TraditionalChinese}
    \item 英语:\texttt{EN} 或 \texttt{English}
    \item 法语:\texttt{FR} 或 \texttt{French}
    \item 德语:\texttt{DE}、\texttt{German} 或 \texttt{ngerman}
    \item 意大利语:\texttt{IT} 或 \texttt{Italian}
    \item 葡萄牙语:\texttt{PT} 或 \texttt{Portuguese}
    \item 巴西葡萄牙语:\texttt{BR} 或 \texttt{Brazilian}
    \item 西班牙语:\texttt{ES} 或 \texttt{Spanish}
    \item 日语:\texttt{JP} 或 \texttt{Japanese}
    \item 俄语:\texttt{RU} 或 \texttt{Russian}
\end{itemize}

\medskip
另外,还可以通过下面的方式来填加相应语言的设置:
\begin{itemize}
    \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
    \begin{itemize}
        \item 向所有支持的语言增加设置 \meta{settings}。
    \end{itemize}
    \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
    \begin{itemize}
        \item 向指定的语言 \meta{language name} 增加设置 \meta{settings}。
    \end{itemize}
\end{itemize}
例如,\lstinline|\AddLanguageSetting(German){\color{orange}}| 可以让所有德语以橙色显示(当然,还需要再加上 \lstinline|\AddLanguageSetting{\color{black}}| 来修正其他语言的颜色)。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{PJLlang: multi-language support}

\PJLlang{} offers multi-language support, including simplified Chinese, traditional Chinese, English, French, German, Japanese, and Russian (among them, Chinese, Japanese, and Russian require appropriate \TeX{} engines and fonts to support). 

\medskip
\PJLlang{} provides language options. The names of these options have three types, which are abbreviations (such as \texttt{EN}), lowercase (such as \texttt{english}), and capital letters (such as \texttt{English}). For the option names of a specific language, please refer to \meta{language name} below. Among them, the first specified language \meta{first language} will be used as the default language, which is equivalent to specifying \lstinline|\UseLanguage{|\meta{first language}\lstinline|}| at the beginning of your document.

\begin{tip}
    It is recommended to use these language options and pass them as global options. In this way, only the specified languages are set, thus saving the \TeX{} memory and significantly improving the compilation speed.
\end{tip}

\medskip
The language can be selected by the following macros:

\begin{itemize}
    \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| is used to specify the language. The corresponding settings of the language will be applied after it. It can be used either in the preamble or in the main body. When no language is specified, ``English" is selected by default.
    \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, which uses the specified language settings to typeset \meta{content}. Compared with \lstinline|\UseLanguage|, it will not modify the line spacing, so line spacing would remain stable when CJK and Western texts are mixed.
\end{itemize}

\medskip
\meta{language name} can be (it is not case sensitive, for example, \texttt{French} and \texttt{french} have the same effect):
\begin{itemize}
    \item Simplified Chinese: \texttt{CN}, \texttt{Chinese}, \texttt{SChinese} or \texttt{SimplifiedChinese}
    \item Traditional Chinese: \texttt{TC}, \texttt{TChinese} or \texttt{TraditionalChinese}
    \item English: \texttt{EN} or \texttt{English}
    \item French: \texttt{FR} or \texttt{French}
    \item German: \texttt{DE}, \texttt{German} or \texttt{ngerman}
    \item Italian: \texttt{IT} or \texttt{Italian}
    \item Portuguese: \texttt{PT} or \texttt{Portuguese}
    \item Portuguese (Brazilian): \texttt{BR} or \texttt{Brazilian}
    \item Spanish: \texttt{ES} or \texttt{Spanish}
    \item Japanese: \texttt{JP} or \texttt{Japanese}
    \item Russian: \texttt{RU} or \texttt{Russian}
\end{itemize}

\medskip
In addition, you can also add new settings to selected language:
\begin{itemize}
    \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
    \begin{itemize}
        \item Add \meta{settings} to all supported languages.
    \end{itemize}
    \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
    \begin{itemize}
        \item Add \meta{settings} to the selected language \meta{language name}.
    \end{itemize}
\end{itemize}
For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{PJLlang : support multilingue}

\PJLlang{} offre le support multilingue, notamment : chinois simplifié, chinois traditionnel, anglais, français, allemand, japonais et russe (parmi eux, le chinois, le japonais et le russe requièrent des moteurs \TeX{} et des polices appropriés).

\medskip
\PJLlang{} fournit des options de langue. Les noms de ces options ont trois types, qui sont des abréviations (comme \texttt{EN}), des minuscules (comme \texttt{english}) et des majuscules (comme \texttt{English}). Pour les noms d'options d'une langue spécifique, veuillez vous référer à \meta{language name} ci-dessous. Parmi eux, la première langue spécifiée \meta{first language} sera considérée comme langue par défaut, ce qui équivaut à spécifier \lstinline|\UseLanguage{|\meta{first language}\lstinline|}| au début de votre document.

\begin{tip}
    Il est recommandé d'utiliser ces options de langue et de les passer en tant qu'options globales. De cette façon, seules les langues spécifiées sont configurées, économisant ainsi la mémoire \TeX{} et améliorant considérablement la vitesse de compilation.
\end{tip}

\medskip
La langue peut être sélectionnée par les macros suivantes :

\begin{itemize}
    \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| est utilisé pour spécifier la langue. Le réglage correspondant de la langue sera appliqué après celui-ci. Il peut être utilisé soit dans le préambule ou dans le texte. Lorsqu'aucune langue n'est spécifiée, « English » est sélectionné par défaut.
    \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, qui utilise les paramètres de langue spécifiés pour composer \meta{content}. Par rapport à \lstinline|\UseLanguage|, il ne modifiera pas l'interligne, donc l'interligne restera stable lorsque les textes CJK et occidentaux sont mélangés.
\end{itemize}

\medskip
\meta{language name} peut être (il n'est pas sensible à la casse, par exemple, \texttt{French} et \texttt{french} ont le même effet) :
\begin{itemize}
    \item chinois simplifié : \texttt{CN}, \texttt{Chinese}, \texttt{SChinese} ou \texttt{SimplifiedChinese}
    \item chinois traditionnel : \texttt{TC}, \texttt{TChinese} ou \texttt{TraditionalChinese}
    \item anglais : \texttt{EN} ou \texttt{English}
    \item français : \texttt{FR} ou \texttt{French}
    \item allemand : \texttt{DE}, \texttt{German} ou \texttt{ngerman}
    \item italien : \texttt{IT} ou \texttt{Italian}
    \item portugais : \texttt{PT} ou \texttt{Portuguese}
    \item portugais (brésilien) : \texttt{BR} ou \texttt{Brazilian}
    \item espagnol : \texttt{ES} ou \texttt{Spanish}
    \item japonais : \texttt{JP} ou \texttt{Japanese}
    \item russe : \texttt{RU} ou \texttt{Russian}
\end{itemize}

\medskip
De plus, vous pouvez également ajouter de nouveaux paramètres à la langue sélectionnée :
\begin{itemize}
    \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
    \begin{itemize}
        \item Ajoutez \meta{settings} à toutes les langues prises en charge.
    \end{itemize}
    \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
    \begin{itemize}
        \item Ajoutez \meta{settings} à la langue \meta{language name} sélectionnée.
    \end{itemize}
\end{itemize}
Par exemple, \lstinline|\AddLanguageSetting(German){\color{orange}}| peut rendre tout le texte allemand affiché en orange (bien sûr, il faut alors ajouter \lstinline|\AddLanguageSetting{\color{black}}| afin de corriger la couleur du texte dans d'autres langues).
%</ProjLib-doc-fr>


%<*ProjLib-doc-cn>
\subsubsection{PJLthm:带有智能引用与多语言支持的定理类环境}

\PJLthm{} 提供定理类环境的设置。它支持下列选项:
\begin{itemize}
    \item \texttt{nothms}
    \begin{itemize}
        \item 不设定定理类环境。如果你希望使用自己的定理样式,可以使用这一选项。
    \end{itemize}
    \item \texttt{delaythms}
    \begin{itemize}
        \item 将定理类环境设定推迟到导言结尾。如果你希望定理类环境跟随自定义计数器编号,则应考虑这一选项。
    \end{itemize}
    \item \texttt{nothmnum}、\texttt{thmnum} 或 \texttt{thmnum=}\meta{counter}
    \begin{itemize}
        \item 使定理类环境均不编号 / 按照 1、2、3 顺序编号 / 在 \meta{counter} 内编号。其中 \meta{counter} 应该是自带的计数器 (如 \texttt{subsection}) 或在导言部分自定义的计数器 (在启用 \texttt{delaythms} 选项的情况下)。在没有使用任何选项的情况下将按照 \texttt{chapter} (书) 或 \texttt{section} (文章) 编号。
    \end{itemize}
    \item \texttt{regionalref}、\texttt{originalref}
    \begin{itemize}
        \item 在智能引用时,定理类环境的名称是否随当前语言而变化。默认为 \texttt{regionalref},即引用时采用当前语言对应的名称;例如,在中文语境中引用定理类环境时,无论原环境处在什么语境中,都将使用名称“定理、定义……”。若启用 \texttt{originalref},则引用时会始终采用定理类环境所处语境下的名称;例如,在英文语境中书写的定理,即使稍后在中文语境下引用时,仍将显示为 Theorem。
        \item 在 \texttt{fast} 模式下,\texttt{originalref} 将不起作用。
    \end{itemize}
\end{itemize}

预设的定理类环境包括:\texttt{assumption}、\texttt{axiom}、\texttt{conjecture}、\texttt{convention}、\texttt{corollary}、\texttt{definition}、\texttt{definition-proposition}、\texttt{definition-theorem}、\texttt{example}、\texttt{exercise}、\texttt{fact}、\texttt{hypothesis}、\texttt{lemma}、\texttt{notation}、\texttt{observation}、\texttt{problem}、\texttt{property}、\texttt{proposition}、\texttt{question}、\texttt{remark}、\texttt{theorem},以及相应带有星号 \lstinline|*| 的无编号版本。它们在显示时会依据当前语言而变化,例如在中文语境下 \texttt{theorem} 会显示为“定理”,而在英文语境下则会显示为“Theorem”。关于如何选定语言,请参阅关于 \PJLlang{} 的小节。

\begin{tip}
    在引用定理类环境时,建议使用智能引用 \lstinline|\cref{|\meta{label}\lstinline|}|。这样就不必每次都写上相应环境的名称了。
\end{tip}

\medskip
若需要定义新的定理类环境,首先要定义这个环境在所用语言下的名称。有两种方式:
\begin{itemize}
    \item 简易设置:\lstinline|\NameTheorem[|\meta{language name}\lstinline|]{|\meta{name of environment}\lstinline|}{|\meta{name string}\lstinline|}|
        \begin{itemize}
            \item 这种方式只设置单独的显示名称,智能引用等名称与之取为相同(特别地,以这种方式设置时智能引用名称将不区分单复数)。当不指定 \meta{language name}时,会将该名称设置为所有支持语言下的名称。另外,带星号与不带星号的同名环境共用一个名称,因此 \lstinline|\NameTheorem{envname*}| 与 \lstinline|\NameTheorem{envname}| 效果相同。
        \end{itemize}
    \item 详细设置(推荐):
\begin{code}
\NameTheorem{(*\meta{name of environment}*)}{
    (*\meta{language name 1}*)={
        name=(*\meta{Name}*),
        crefname={(*\meta{name}*)}{(*\meta{names}*)},
        Crefname={(*\meta{Name}*)}{(*\meta{Names}*)},
        autorefname=(*\meta{name}*),
        theoremheading=(*\meta{Name}*),
    },
    (*\meta{language name 2}*)={...},
}
\end{code}
或
\begin{code}
\NameTheorem[(*\meta{language name}*)]{(*\meta{name of environment}*)}{
    name=(*\meta{Name}*),
    crefname={(*\meta{name}*)}{(*\meta{names}*)},
    Crefname={(*\meta{Name}*)}{(*\meta{Names}*)},
    autorefname=(*\meta{name}*),
    theoremheading=(*\meta{Name}*),
}
\end{code}
        \begin{itemize}
            \item 这种方式可以具体设置各个名称。当不指定 \meta{language name}时,将允许使用完整界面;在指定语言时则只设定相应语言。同样,带星号与不带星号的同名环境共用一个名称,因此 \lstinline|\NameTheorem{envname*}| 与 \lstinline|\NameTheorem{envname}| 效果相同。
        \end{itemize}
\end{itemize}

\begin{tip}
    除此以外,你也可以在定义相应的定理类环境时为之命名,可以参见后文对 \lstinline|\CreateTheorem| 的说明。
\end{tip}

\clearpage
% \bigskip
然后,用下面五种方式之一定义这一环境:
\begin{itemize}
    \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
        \begin{itemize}
            \item 定义不编号的环境 \meta{name of environment}
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
        \begin{itemize}
            \item 定义编号环境 \meta{name of environment},按顺序编号
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
        \begin{itemize}
            \item 定义编号环境 \meta{name of environment},与 \meta{numbered like} 计数器共用编号
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
        \begin{itemize}
            \item 定义编号环境 \meta{name of environment},在 \meta{numbered within} 计数器内编号
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
    \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
        \begin{itemize}
            \item 将 \meta{name of environment} 与 \meta{existed environment} 或 \meta{existed environment}\lstinline|*| 等同。
            \item 这种方式通常在两种情况下比较有用:
                \begin{enumerate}
                    \item 希望定义更简洁的名称。例如,使用 \lstinline|\CreateTheorem{thm}(theorem)|,便可以直接用名称 \texttt{thm} 来撰写定理。
                    \item 希望去除某些环境的编号。例如,使用 \lstinline|\CreateTheorem{remark}(remark*)|,便可以去除 \texttt{remark} 环境的编号。
                \end{enumerate}
        \end{itemize}
\end{itemize}

\begin{tip}
    其内部使用了 \textsf{amsthm},因此传统的 \texttt{theoremstyle} 对其也是适用的,只需在相关定义前标明即可。
\end{tip}

\bigskip
你也可以在定义定理类环境的同时为之命名,只需要在之后再加入一组括号进行设置:
\begin{code}
\CreateTheorem{(*\meta{name of environment}*)}{
    (*\meta{language name 1}*)={
        name=(*\meta{Name}*),
        crefname={(*\meta{name}*)}{(*\meta{names}*)},
        Crefname={(*\meta{Name}*)}{(*\meta{Names}*)},
        autorefname=(*\meta{name}*),
        theoremheading=(*\meta{Name}*),
    },
    (*\meta{language name 2}*)={...},
}
\end{code}

% \def\proofideanameCN{思路}
\NameTheorem[CN]{proofidea}{思路}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>

\bigskip
下面提供一个例子。这三行代码:
\begin{code}
\NameTheorem[CN]{proofidea}{思路}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
\end{code}
可以分别定义不编号的环境 \lstinline|proofidea*| 和编号的环境 \lstinline|proofidea| (在 subsection 内编号),它们支持在简体中文语境中使用,效果如下所示 (具体样式与所在的文档类有关) :

\begin{proofidea*}
    \lstinline|proofidea*| 环境。
\end{proofidea*}

\begin{proofidea}
    \lstinline|proofidea| 环境。
\end{proofidea}

\medskip
当然,你也可以使用更加精细的名称:
\begin{code}
\NameTheorem{proofidea}{
    CN = {
        name = 思路,
        crefname = {思路}{思路},
        Crefname = {思路}{思路},
    }
}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
\end{code}
或者在定义时设置名称(对于 \lstinline|proofidea*| 与 \lstinline|proofidea| 只需要设置一次即可):
\begin{code}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>{
    CN = {
        name = 思路,
        crefname = {思路}{思路},
        Crefname = {思路}{思路},
    }
}
\end{code}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{PJLthm: theorem-like environments with clever reference and multilingual support}

\PJLthm{} offers the configuration of theorem-like environments. It has the following option:

\vspace{-.3\baselineskip}
\begin{itemize}
    \item \texttt{nothms}
    \begin{itemize}
        \item Theorem-like environments will not be defined. You may use this option if you wish to apply your own theorem styles.
    \end{itemize}
    \item \texttt{delaythms}
    \begin{itemize}
        \item Defer the definition of theorem-like environments to the end of the preamble. Use this option if you want the theorem-like environments to be numbered within a custom counter.
    \end{itemize}
    \item \texttt{nothmnum}, \texttt{thmnum} or \texttt{thmnum=}\meta{counter}
    \begin{itemize}
        \item Theorem-like environments will not be numbered / numbered in order 1, 2, 3... / numbered within \meta{counter}. Here, \meta{counter} should be a built-in counter (such as \texttt{subsection}) or a custom counter defined in the preamble (with the option \texttt{delaythms} enabled). If no option is used, they will be numbered within \texttt{chapter} (book) or \texttt{section} (article).
    \end{itemize}
    \item \texttt{regionalref}, \texttt{originalref}
    \begin{itemize}
        \item When referencing, whether the name of the theorem-like environment changes with the current language. The default is \texttt{regionalref}, \emph{i.e.}, the name corresponding to the current language is used; for example, when referencing a theorem-like environment in English context, the names "Theorem, Definition..." will be used no matter which language context the original environment is in. If \texttt{originalref} is enabled, then the name will always remain the same as the original place; for example, when referencing a theorem written in the French context, even if one is currently in the English context, it will still be displayed as ``Théorème''. 
        \item In \texttt{fast} mode, the option \texttt{originalref} will have no effect.
    \end{itemize}
\end{itemize}

\medskip
Preset environments include: \texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, ~~\texttt{definition-theorem}, ~~\texttt{example}, ~~\texttt{exercise}, ~~\texttt{fact}, ~~\texttt{hypothesis}, ~~\texttt{lemma}, \\\texttt{notation}, \texttt{observation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The titles will change with the current language. For example, \texttt{theorem} will be displayed as ``Theorem" in English mode and ``Théorème" in French mode. For details on how to select a language, please refer to the section on \PJLlang{}.

\begin{tip}
    When referencing a theorem-like environment, it is recommended to use \lstinline|\cref{|\meta{label}\texttt{\}}. In this way, there is no need to explicitly write down the name of the corresponding environment every time.
\end{tip}

\bigskip
If you need to define a new theorem-like environment, you must first define the name of the environment in the language to use. There are two ways for this:
\begin{itemize}
    \item Simple settings: \lstinline|\NameTheorem[|\meta{language name}\lstinline|]{|\meta{name of environment}\lstinline|}{|\meta{name string}\lstinline|}|
    \begin{itemize}
        \item This approach only sets one main name, the other names, such as those used for clever reference, are set to be the same (in particular, for clever reference, the singular and plural form will not be distinguished). When \meta{language name} is not specified, the name will be set for all supported languages. In addition, environments with or without asterisk share the same name, therefore, \lstinline|\NameTheorem{envname*}| has the same effect as \lstinline|\NameTheorem{envname}| .
    \end{itemize}
    \item Detailed settings (recommended):
\begin{code}
\NameTheorem{(*\meta{name of environment}*)}{
    (*\meta{language name 1}*)={
        name=(*\meta{Name}*),
        crefname={(*\meta{name}*)}{(*\meta{names}*)},
        Crefname={(*\meta{Name}*)}{(*\meta{Names}*)},
        autorefname=(*\meta{name}*),
        theoremheading=(*\meta{Name}*),
    },
    (*\meta{language name 2}*)={...},
}
\end{code}
or
\begin{code}
\NameTheorem[(*\meta{language name}*)]{(*\meta{name of environment}*)}{
    name=(*\meta{Name}*),
    crefname={(*\meta{name}*)}{(*\meta{names}*)},
    Crefname={(*\meta{Name}*)}{(*\meta{Names}*)},
    autorefname=(*\meta{name}*),
    theoremheading=(*\meta{Name}*),
}
\end{code}
        \begin{itemize}
            \item This approach sets all the names. When \meta{language name} is not specified, the full interface will be enabled; when it is specified, only the names of the corresponding language are set. Similarly, environments with or without asterisk share the same name, therefore, \lstinline|\NameTheorem{envname*}| has the same effect as \lstinline|\NameTheorem{envname}| .
        \end{itemize}
\end{itemize}

\begin{tip}
    In addition, you can also name a theorem-like environment while defining it, see the description of \lstinline|\CreateTheorem| later.
\end{tip}

And then define this environment in one of following five ways:
\vspace{-.3\baselineskip}
\begin{itemize}
    \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
        \begin{itemize}
            \item Define an unnumbered environment \meta{name of environment}
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
        \begin{itemize}
            \item Define a numbered environment \meta{name of environment}, numbered in order 1,2,3,\dots
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
        \begin{itemize}
            \item Define a numbered environment \meta{name of environment}, which shares the counter \meta{numbered like}
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
        \begin{itemize}
            \item Define a numbered environment \meta{name of environment}, numbered within the counter \meta{numbered within}
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
    \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
        \begin{itemize}
            \item Identify \meta{name of environment} with \meta{existed environment} or \meta{existed environment}\lstinline|*|.
            \item This method is usually useful in the following two situations:
                \begin{enumerate}
                    \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}(theorem)|, one can then use the name \texttt{thm} to write theorem.
                    \item To remove the numbering of some environments. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
                \end{enumerate}
        \end{itemize}
\end{itemize}

\begin{tip}
    This macro utilizes the feature of \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
\end{tip}

\bigskip
You can also name a theorem-like environment while defining it, by adding afterwards a group of parentheses containing the settings:
\begin{code}
\CreateTheorem{(*\meta{name of environment}*)}{
    (*\meta{language name 1}*)={
        name=(*\meta{Name}*),
        crefname={(*\meta{name}*)}{(*\meta{names}*)},
        Crefname={(*\meta{Name}*)}{(*\meta{Names}*)},
        autorefname=(*\meta{name}*),
        theoremheading=(*\meta{Name}*),
    },
    (*\meta{language name 2}*)={...},
}
\end{code}

\NameTheorem[EN]{proofidea}{Idea}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>

\bigskip
Here is an example. The following code:
\begin{code}
\NameTheorem[EN]{proofidea}{Idea}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
\end{code}
defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within subsection) respectively. They can be used in English context. The effect is as follows (the actual style is related to the document class):

\begin{proofidea*}
    The \lstinline|proofidea*| environment.
\end{proofidea*}

\begin{proofidea}
    The \lstinline|proofidea| environment.
\end{proofidea}

\medskip
Of course, you can also use a set of more detailed name:
\begin{code}
\NameTheorem{proofidea}{
    EN = {
        name = Idea,
        crefname = {idea}{ideas},
        Crefname = {Idea}{Ideas},
    }
}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
\end{code}
or set the names while defining them (for \lstinline|proofidea*| and \lstinline|proofidea|, set once suffices):
\begin{code}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>{
    EN = {
        name = Idea,
        crefname = {idea}{ideas},
        Crefname = {Idea}{Ideas},
    }
}
\end{code}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{PJLthm : environnements de type théorème avec référence intelligente et support multilingue}

\PJLthm{} offre la configuration d'environnements de type théorème. Il a l'option suivante :

\vspace{-.3\baselineskip}
\begin{itemize}
    \item \texttt{nothms}
    \begin{itemize}
        \item Les environnements de type théorème ne seront pas définis. Vous pouvez utiliser cette option si vous souhaitez appliquer vos propres styles de théorème.
    \end{itemize}
    \item \texttt{delaythms}
    \begin{itemize}
        \item Reportez la définition des environnements de type théorème à la fin du préambule. Utilisez cette option si vous souhaitez que les environnements soient numérotés dans un compteur personnalisé.
    \end{itemize}
    \item \texttt{nothmnum}, \texttt{thmnum} ou \texttt{thmnum=}\meta{counter}
    \begin{itemize}
        \item Les environnements de type théorème ne seront pas numérotés / numérotés dans l'ordre 1, 2, 3... / numérotés dans \meta{counter}. Ici, \meta{counter} doit être un compteur intégré (tel que \texttt{subsection}) ou un compteur défini dans le préambule (avec l'option \texttt{delaythms} activée). Si aucune option n'est utilisée, ils seront numérotés dans \texttt{chapter} (livre) ou \texttt{section} (article).
    \end{itemize}
    \item \texttt{regionalref}, \texttt{originalref}
    \begin{itemize}
        \item Lors du référencement, si le nom de l'environnement de type théorème change avec la langue actuelle. Par défaut \texttt{regionalref} est activé, c'est-à-dire que le nom correspondant à la langue courante est utilisé ; par exemple, lors du référencement d'un environnement de type théorème dans un contexte français, les noms «~Théorème, Définition ...~» seront utilisés quel que soit le contexte linguistique dans lequel se trouve l'environnement d'origine. Si \texttt{originalref} est activé, alors le nom restera toujours le même que l'environnement d'origine ; par exemple, lors du référencement d'un théorème écrit dans le contexte français, même si l'on est actuellement dans le contexte anglais, il sera toujours affiché comme «~Théorème~». 
        \item En mode \texttt{fast}, l'option \texttt{originalref} n'aura aucun effet.
    \end{itemize}
\end{itemize}

\medskip
Les environnements prédéfinis incluent : \texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{observation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, et la version non numérotée correspondante avec un astérisque \lstinline|*| dans le nom. Les titres changeront avec la langue actuelle. Par exemple, \texttt{theorem} sera affiché comme «~Theorem~» en mode anglais et «~Théorème~» en mode français. Pour plus de détails sur la façon de sélectionner une langue, veuillez vous référer à la section sur \PJLlang{}.

\begin{tip}
    Lors du référencement d'un environnement de type théorème, il est recommandé d'utiliser \lstinline|\cref{|\meta{label}\texttt{\}}. De cette façon, il n'est pas nécessaire d'écrire explicitement le nom de l'environnement correspondant à chaque fois.
\end{tip}

\medskip
Si vous avez besoin de définir un nouvel environnement de type théorème, vous devez d'abord définir le nom de l'environnement dans le langage à utiliser. Il y a deux façons pour cela:
\begin{itemize}
    \item Paramètres simples : \lstinline|\NameTheorem[|\meta{language name}\lstinline|]{|\meta{name of environment}\lstinline|}{|\meta{name string}\lstinline|}|
    \begin{itemize}
        \item Cette approche ne définit qu'un seul nom principal. Les autres noms, tels que ceux utilisés pour référence intelligente, sont définis pour être identiques (en particulier, pour référence intelligente, les noms singulier et pluriel ne seront pas distingués). Lorsque \meta{language name} n'est pas spécifié, le nom sera défini pour toutes les langues prises en charge. De plus, les environnements avec ou sans astérisque partagent le même nom, donc, \lstinline|\NameTheorem{envname*}| a le même effet que \lstinline|\NameTheorem{envname}| .
    \end{itemize}
    \item Paramètres détaillés (recommandés) :
\begin{code}
\NameTheorem{(*\meta{name of environment}*)}{
    (*\meta{language name 1}*)={
        name=(*\meta{Name}*),
        crefname={(*\meta{name}*)}{(*\meta{names}*)},
        Crefname={(*\meta{Name}*)}{(*\meta{Names}*)},
        autorefname=(*\meta{name}*),
        theoremheading=(*\meta{Name}*),
    },
    (*\meta{language name 2}*)={...},
}
\end{code}
ou
\begin{code}
\NameTheorem[(*\meta{language name}*)]{(*\meta{name of environment}*)}{
    name=(*\meta{Name}*),
    crefname={(*\meta{name}*)}{(*\meta{names}*)},
    Crefname={(*\meta{Name}*)}{(*\meta{Names}*)},
    autorefname=(*\meta{name}*),
    theoremheading=(*\meta{Name}*),
}
\end{code}
        \begin{itemize}
            \item Cette approche définit tous les noms. Lorsque \meta{language name} n'est pas spécifié, l'interface complète sera activée ; lorsqu'il est spécifié, seuls les noms de la langue correspondante sont définis. De même, les environnements avec ou sans astérisque partagent le même nom, donc \lstinline|\NameTheorem{envname*}| a le même effet que \lstinline|\NameTheorem{envname}| .
        \end{itemize}
\end{itemize}

\begin{tip}
    De plus, vous pouvez également nommer un environnement de type théorème tout en le définissant, voir la description de \lstinline|\CreateTheorem| plus tard.
\end{tip}

Ensuite, créez cet environnement de l'une des cinq manières suivantes :
\vspace{-.3\baselineskip}
\begin{itemize}
    \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
        \begin{itemize}
            \item Définir un environnement \meta{name of environment} non numéroté
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
        \begin{itemize}
            \item Définir un environnement \meta{name of environment} numéroté dans l'ordre 1, 2, 3, \dots
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
        \begin{itemize}
            \item Définir un environnement \meta{name of environment} numéroté, qui partage le compteur \meta{numbered like}
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
        \begin{itemize}
            \item Définir un environnement \meta{name of environment} numéroté dans le compteur \meta{numbered within}
        \end{itemize}
    \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
    \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
        \begin{itemize}
            \item Identifiez \meta{name of environment} avec \meta{existed environment} ou \meta{existed environment}\lstinline|*|.
            \item Cette méthode est généralement utile dans les deux situations suivantes :
                \begin{enumerate}
                    \item Pour utiliser un nom plus concis. Par exemple, avec \lstinline|\CreateTheorem{thm}(theorem)|, on peut alors utiliser le nom \texttt{thm} pour écrire le théorème.
                    \item Pour supprimer la numérotation de certains environnements. Par exemple, on peut supprimer la numérotation de l'environnement \texttt{remark} avec \lstinline|\CreateTheorem{remark}(remark*)|.
                \end{enumerate}
        \end{itemize}
\end{itemize}

\begin{tip}
    Cette macro utilise la fonctionnalité de \textsf{amsthm} en interne, donc le traditionnel \texttt{theoremstyle} lui est également applicable. Il suffit de déclarer le style avant les définitions pertinentes.
\end{tip}

\bigskip
Vous pouvez également nommer un environnement de type théorème lors de sa définition, en ajoutant ensuite un groupe de parenthèses contenant les paramètres :
\begin{code}
\CreateTheorem{(*\meta{name of environment}*)}{
    (*\meta{language name 1}*)={
        name=(*\meta{Name}*),
        crefname={(*\meta{name}*)}{(*\meta{names}*)},
        Crefname={(*\meta{Name}*)}{(*\meta{Names}*)},
        autorefname=(*\meta{name}*),
        theoremheading=(*\meta{Name}*),
    },
    (*\meta{language name 2}*)={...},
}
\end{code}

\NameTheorem[FR]{proofidea}{Idée}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>

\bigskip
Voici un exemple. Le code suivant :
\begin{code}
\NameTheorem[FR]{proofidea}{Idée}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
\end{code}
définit un environnement non numéroté \lstinline|proofidea*| et un environnement numéroté \lstinline|proofidea| (numérotés dans la sous-section) respectivement. Ils peuvent être utilisés dans le contexte français. L'effet est le suivant (le style réel est lié à votre classe de document) :

\begin{proofidea*}
    La environnement \lstinline|proofidea*| .
\end{proofidea*}

\begin{proofidea}
    La environnement \lstinline|proofidea| .
\end{proofidea}

\medskip
Bien sûr, vous pouvez également utiliser un ensemble de nom plus détaillé :
\begin{code}
\NameTheorem{proofidea}{
    FR = {
        name = Idée,
        crefname = {idée}{idées},
        Crefname = {Idée}{Idées},
    }
}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
\end{code}
ou définissez les noms en les définissant (pour \lstinline|proofidea*| et \lstinline|proofidea|, définir une fois suffit) :
\begin{code}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>{
    FR = {
        name = Idée,
        crefname = {idée}{idées},
        Crefname = {Idée}{Idées},
    }
}
\end{code}
%</ProjLib-doc-fr>



\clearpage

%<*ProjLib-doc-cn>
\subsection{次要功能}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsection{Secondary functions}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsection{Fonctions secondaires}
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsubsection{PJLdate:智能日期处理}

\PJLdatePackage{} 提供了 \lstinline|\PLdate|\meta{yyyy-mm-dd} (或 \lstinline|\PJLdate|\meta{yyyy-mm-dd}) 命令,以将 \meta{yyyy-mm-dd} 转换为当前语言的日期格式显示。例如,在当前的中文语境下,\lstinline|\PLdate{2022-04-01}| 会被显示为“\PJLdate{2022-04-01}”,而在英文语境下则会被显示为“\UseOtherLanguage{English}{\PJLdate{2022-04-01}}”。

关于如何选定语言,请参阅关于 \PJLlang{} 的小节。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{PJLdate: date-time processing}

\PJLdatePackage{} offers the \lstinline|\PLdate|\meta{yyyy-mm-dd} (or \lstinline|\PJLdate|\meta{yyyy-mm-dd}) macro to convert \meta{yyyy-mm-dd} into the date format of the currently selected language. For example, in current English context, \lstinline|\PLdate{2022-04-01}| would become ``\PLdate{2022-04-01}'', while in French context as ``\UseOtherLanguage{French}{\PLdate{2022-04-01}}''.

For details on how to select a language, please refer to the section on \PJLlang{}.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{PJLdate : traitement de date-heure}

\PJLdatePackage{} propose la macro \lstinline|\PLdate|\meta{yyyy-mm-dd} (ou \lstinline|\PJLdate|\meta{yyyy-mm-dd}) pour convertir \meta{yyyy-mm-dd} dans le format de date de la langue actuellement sélectionnée. Par exemple, dans le contexte français actuel, \lstinline|\PLdate{2022-04-01}| deviendrait «~\PLdate{2022-04-01}~», tandis que dans le contexte anglais «~\UseOtherLanguage{English}{\PLdate{2022-04-01}}~».

Pour plus de détails sur la façon de sélectionner une langue, veuillez vous référer à la section sur \PJLlang{}.
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsubsection{PJLdraft:未完成标记}

\PJLdraft{} 提供了下列命令:
\begin{itemize}\setstretch{1.15}
    \item \lstinline|\dnf| 或 \lstinline|\dnf<...>|。效果为:\dnf~或 \dnf<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\dnf}。
    \item \lstinline|\needgraph| 或 \lstinline|\needgraph<...>|。效果为:\needgraph~或 \needgraph<...>其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\needgraph}
\end{itemize}

关于如何选定语言,请参阅关于 \PJLlang{} 的小节。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{PJLdraft: draft marks}

\PJLdraft{} offers the following macros:
\begin{itemize}
    \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
    \item \lstinline|\needgraph| or \lstinline|\needgraph<...>|. The effect is: \needgraph or \needgraph<...>The prompt text changes according to the current language. For example, in French mode, it will be displayed as \UseOtherLanguage{French}{\needgraph}
\end{itemize}

For details on how to select a language, please refer to the section on \PJLlang{}.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{PJLdraft : marques de brouillon}

\PJLdraft{} propose les macros suivantes :
\begin{itemize}
    \item \lstinline|\dnf| ou \lstinline|\dnf<...>|. L'effet est : \dnf~ ou \dnf<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\dnf} en mode anglais.
    \item \lstinline|\needgraph| ou \lstinline|\needgraph<...>|. L'effet est : \needgraph ou \needgraph<...>Le texte de l'invite change en fonction de la langue actuelle. Par exemple, en mode anglais, il sera affiché sous la forme \UseOtherLanguage{English}{\needgraph}
\end{itemize}

Pour plus de détails sur la façon de sélectionner une langue, veuillez vous référer à la section sur \PJLlang{}.
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsubsection{PJLlogo:\texorpdfstring{\ProjLib{} 图标}{ProjLib 图标}}

\PJLlogo{} 提供了 \lstinline|\ProjLib| 命令用于绘制 Logo,效果为:\ProjLib{}。它与普通的文字指令效果类似,可以用于不同的字号:

\vspace{-0.5\baselineskip}
% \begin{longtable}{ll}
\begin{center}
    \begin{tabular}{ll} 
        \lstinline|\tiny|:& {\tiny\ProjLib}\\
        \lstinline|\scriptsize|:& {\scriptsize\ProjLib}\\
        \lstinline|\footnotesize|:& {\footnotesize\ProjLib}\\
        \lstinline|\normalsize|:& {\normalsize\ProjLib}\\
        \lstinline|\large|:& {\large\ProjLib}\\
        \lstinline|\Large|:& {\Large\ProjLib}\\
        \lstinline|\LARGE|:& {\LARGE\ProjLib}\\
        \lstinline|\huge|:& {\huge\ProjLib}\\
        \lstinline|\Huge|:& {\Huge\ProjLib}
    \end{tabular}
\end{center}
% \end{longtable}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{PJLlogo: the logo \texorpdfstring{\ProjLib}{ProjLib}}

\PJLlogo{} offers the macro \lstinline|\ProjLib| to draw the logo, which looks like \ProjLib{}. It is similar to ordinary text macros and can be used with different font size macros:
% \begin{itemize}
%     \item \lstinline|\tiny|:\quad {\tiny\ProjLib}
%     \item \lstinline|\scriptsize|:\quad {\scriptsize\ProjLib}
%     \item \lstinline|\footnotesize|:\quad {\footnotesize\ProjLib}
%     \item \lstinline|\normalsize|:\quad {\normalsize\ProjLib}
%     \item \lstinline|\large|:\quad {\large\ProjLib}
%     \item \lstinline|\Large|:\quad {\Large\ProjLib}
%     \item \lstinline|\LARGE|:\quad {\LARGE\ProjLib}
%     \item \lstinline|\huge|:\quad {\huge\ProjLib}
%     \item \lstinline|\Huge|:\quad {\Huge\ProjLib}
% \end{itemize}
% \bigskip

% \begin{longtable}{ll}
\begin{center}
    \begin{tabular}{ll} 
        \lstinline|\tiny|:& {\tiny\ProjLib}\\
        \lstinline|\scriptsize|:& {\scriptsize\ProjLib}\\
        \lstinline|\footnotesize|:& {\footnotesize\ProjLib}\\
        \lstinline|\normalsize|:& {\normalsize\ProjLib}\\
        \lstinline|\large|:& {\large\ProjLib}\\
        \lstinline|\Large|:& {\Large\ProjLib}\\
        \lstinline|\LARGE|:& {\LARGE\ProjLib}\\
        \lstinline|\huge|:& {\huge\ProjLib}\\
        \lstinline|\Huge|:& {\Huge\ProjLib}
    \end{tabular}
\end{center}
% \end{longtable}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{PJLlogo : le logo \texorpdfstring{\ProjLib}{ProjLib}}

\PJLlogo{} propose la macro \lstinline|\ProjLib| pour dessiner le logo, qui ressemble à \ProjLib{}. Elle est similaire aux macros de texte ordinaires et peut être utilisée avec différentes macros de taille de texte :

% \begin{longtable}{ll}
\begin{center}
    \begin{tabular}{ll} 
        \lstinline|\tiny|:& {\tiny\ProjLib}\\
        \lstinline|\scriptsize|:& {\scriptsize\ProjLib}\\
        \lstinline|\footnotesize|:& {\footnotesize\ProjLib}\\
        \lstinline|\normalsize|:& {\normalsize\ProjLib}\\
        \lstinline|\large|:& {\large\ProjLib}\\
        \lstinline|\Large|:& {\Large\ProjLib}\\
        \lstinline|\LARGE|:& {\LARGE\ProjLib}\\
        \lstinline|\huge|:& {\huge\ProjLib}\\
        \lstinline|\Huge|:& {\Huge\ProjLib}
    \end{tabular}
\end{center}
% \end{longtable}
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsubsection{PJLmath:数学符号与捷径}

\PJLmath{} 提供下列捷径:
\begin{enumerate}[label=\roman*)]
    \item \lstinline|\mathfrak{|$\cdot$\lstinline|}| $\longrightarrow$ \lstinline|\mf|$\cdot$ 或 \lstinline|\frak|$\cdot$。例如,\lstinline|\mfA| (或 \lstinline|\mf{A}|) 与 \lstinline|\mathfrak{A}| 效果相同. 这对大写、小写字母都有效:\vspace{-\baselineskip}
    \begin{align*}
        \mfa\mfb\mfc\mfd\mfe\mff\mfg\mfh\mfi\mfj\mfk\mfl\mfm\mfn&\mfo\mfp\mfq\mfr\mfs\mft\mfu\mfv\mfw\mfx\mfy\mfz\\
        \mfA\mfB\mfC\mfD\mfE\mfF\mfG\mfH\mfI\mfJ\mfK\mfL\mfM\mfN&\mfO\mfP\mfQ\mfR\mfS\mfT\mfU\mfV\mfW\mfX\mfY\mfZ
    \end{align*}
    \item \lstinline|\mathbb{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\bb|$\cdot$。这只针对大写字母或数字 \( 1 \).
    \begin{equation*}
        \bbA\bbB\bbC\bbD\bbE\bbF\bbG\bbH\bbI\bbJ\bbK\bbL\bbM\bbN\bbO\bbP\bbQ\bbR\bbS\bbT\bbU\bbV\bbW\bbX\bbY\bbZ\bb1
    \end{equation*}
    对于常见的代数结构有这些特殊命令:\lstinline|\N|, \lstinline|\Z|, \lstinline|\Q|, \lstinline|\R|, \lstinline|\C|, \lstinline|\F|, \lstinline|\A|.
    \[
        \N\Z\Q\R\C\F\A
    \]
    \item \lstinline|\mathcal{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\mc|$\cdot$ 或 \lstinline|\cal|$\cdot$。这只针对大写字母。
    \begin{equation*}
        \mcA\mcB\mcC\mcD\mcE\mcF\mcG\mcH\mcI\mcJ\mcK\mcL\mcM\mcN\mcO\mcP\mcQ\mcR\mcS\mcT\mcU\mcV\mcW\mcX\mcY\mcZ
    \end{equation*}
    \item \lstinline|\mathscr{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\ms|$\cdot$ 或 \lstinline|\scr|$\cdot$。这只针对大写字母。
    \begin{equation*}
        \msA\msB\msC\msD\msE\msF\msG\msH\msI\msJ\msK\msL\msM\msN\msO\msP\msQ\msR\msS\msT\msU\msV\msW\msX\msY\msZ
    \end{equation*}
\end{enumerate}

另外,\PJLmath{} 还提供了一些 \LaTeX{} 中未自带的符号。

\begin{longtable}[l]{ p{4cm} p{6cm} p{6cm} }
\lstinline|\abs| & \lstinline|\abs{a}| $\rightarrow \abs{a}$ & 绝对值符号 \\
\lstinline|\norm| & \lstinline|\norm{a}| $\rightarrow \norm{a}$ & 范数符号 \\
\lstinline|\injection| & \lstinline|\injection| $\rightarrow ~\injection$ & 表示单射的箭头符号 \\
\lstinline|\surjection| & \lstinline|\surjection| $\rightarrow ~\surjection$ & 表示满射的箭头符号 \\
\lstinline|\bijection| & \lstinline|\bijection| $\rightarrow ~\bijection$ & 表示双射的箭头符号 \\
% \lstinline|\legendre| & \lstinline|\legendre{a}{p}| $\rightarrow \legendre{a}{p}$ & Legendre 符号 \\
% & \lstinline|\legendre[z]{a}{p}| $\rightarrow \legendre[z]{a}{p}$ & \\
% \lstinline|\tlegendre| & \lstinline|\tlegendre{a}{p}| $\rightarrow \tlegendre{a}{p}$ & Legendre 符号 (text style) \\
% \lstinline|\dlegendre| & \lstinline|\dlegendre{a}{p}| $\rightarrow \dlegendre{a}{p}$ & Legendre 符号 (display style) \\
\end{longtable}

这些捷径和符号是以一种安全的方式定义的,它们不会与已有的命令或你自己定义的命令相冲突。因此即使你用不到这些捷径或符号,也不用担心它们的存在会带来错误。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\medskip
\subsubsection{PJLmath: math symbols and shortcuts}

\PJLmath{} offers the following shortcuts:
\begin{enumerate}[label=\roman*)]
    \item \lstinline|\mathfrak{|$\cdot$\lstinline|}| $\longrightarrow$ \lstinline|\mf|$\cdot$ or \lstinline|\frak|$\cdot$ . For example, \lstinline|\mfA| (or \lstinline|\mf{A}|) has the same effect as \lstinline|\mathfrak{A}|. This works for both upper and lower case, producing:
    \begin{align*}
        \mfa\mfb\mfc\mfd\mfe\mff\mfg\mfh\mfi\mfj\mfk\mfl\mfm\mfn&\mfo\mfp\mfq\mfr\mfs\mft\mfu\mfv\mfw\mfx\mfy\mfz\\
        \mfA\mfB\mfC\mfD\mfE\mfF\mfG\mfH\mfI\mfJ\mfK\mfL\mfM\mfN&\mfO\mfP\mfQ\mfR\mfS\mfT\mfU\mfV\mfW\mfX\mfY\mfZ
    \end{align*}
    \item \lstinline|\mathbb{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\bb|$\cdot$ . This only works for uppercase alphabet and the number \( 1 \).
    \begin{equation*}
        \bbA\bbB\bbC\bbD\bbE\bbF\bbG\bbH\bbI\bbJ\bbK\bbL\bbM\bbN\bbO\bbP\bbQ\bbR\bbS\bbT\bbU\bbV\bbW\bbX\bbY\bbZ\bb1
    \end{equation*}
    There are also special command for well-known algebraic structures: \lstinline|\N|, \lstinline|\Z|, \lstinline|\Q|, \lstinline|\R|, \lstinline|\C|, \lstinline|\F|, \lstinline|\A|.
    \[
        \N\Z\Q\R\C\F\A
    \]
    \item \lstinline|\mathcal{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\mc|$\cdot$ or \lstinline|\cal|$\cdot$ . This only works for uppercase alphabet.
    \begin{equation*}
        \mcA\mcB\mcC\mcD\mcE\mcF\mcG\mcH\mcI\mcJ\mcK\mcL\mcM\mcN\mcO\mcP\mcQ\mcR\mcS\mcT\mcU\mcV\mcW\mcX\mcY\mcZ
    \end{equation*}
    \item \lstinline|\mathscr{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\ms|$\cdot$ or \lstinline|\scr|$\cdot$ . This only works for uppercase alphabet.
    \begin{equation*}
        \msA\msB\msC\msD\msE\msF\msG\msH\msI\msJ\msK\msL\msM\msN\msO\msP\msQ\msR\msS\msT\msU\msV\msW\msX\msY\msZ
    \end{equation*}
\end{enumerate}

In addition, \PJLmath{} also provides some math symbols that are not by default included in \LaTeX{}.

\begin{longtable}[l]{ p{4cm} p{6cm} p{6cm}}
\lstinline|\abs| & \lstinline|\abs{a}| $\rightarrow \abs{a}$ & absolute value symbol \\
\lstinline|\norm| & \lstinline|\norm{a}| $\rightarrow \norm{a}$ & norm symbol \\
\lstinline|\injection| & \lstinline|\injection| $\rightarrow ~\injection$ & arrow symbol for injection \\
\lstinline|\surjection| & \lstinline|\surjection| $\rightarrow ~\surjection$ & arrow symbol for surjection \\
\lstinline|\bijection| & \lstinline|\bijection| $\rightarrow ~\bijection$ & arrow symbol for bijection \\
% \lstinline|\legendre| & \lstinline|\legendre{a}{p}| $\rightarrow \legendre{a}{p}$ & Legendre symbol \\
% & \lstinline|\legendre[z]{a}{p}| $\rightarrow \legendre[z]{a}{p}$ & \\
% \lstinline|\tlegendre| & \lstinline|\tlegendre{a}{p}| $\rightarrow \tlegendre{a}{p}$ & Legendre symbol (text style) \\
% \lstinline|\dlegendre| & \lstinline|\dlegendre{a}{p}| $\rightarrow \dlegendre{a}{p}$ & Legendre symbol (display style) \\
\end{longtable}
%
% There's also a starred version of \lstinline|\pmod|, which eliminate the spacing before it: \lstinline|a\pmod*{4}| $\rightarrow a\pmod*{4}$. Compared with: \lstinline|a\pmod{4}| $\rightarrow a\pmod{4}$.

These shortcuts and symbols are defined in such a way that they will not conflict with existing or user-defined commands. Thus, even if you do not use these shortcuts or symbols, there is no need to worry that their existence will bring errors.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{PJLmath : symboles et raccourcis mathématiques}

\PJLmath{} propose les raccourcis suivants :
\begin{enumerate}[label=\roman*)]
    \item \lstinline|\mathfrak{|$\cdot$\lstinline|}| $\longrightarrow$ \lstinline|\mf|$\cdot$ ou \lstinline|\frak|$\cdot$ . Par exemple, \lstinline|\mfA| (ou \lstinline|\mf{A}|) a le même effet que \lstinline|\mathfrak{A}|. Cela fonctionne à la fois pour l'alphabet majuscule et minuscule, produisant :
    \begin{align*}
        \mfa\mfb\mfc\mfd\mfe\mff\mfg\mfh\mfi\mfj\mfk\mfl\mfm\mfn&\mfo\mfp\mfq\mfr\mfs\mft\mfu\mfv\mfw\mfx\mfy\mfz\\
        \mfA\mfB\mfC\mfD\mfE\mfF\mfG\mfH\mfI\mfJ\mfK\mfL\mfM\mfN&\mfO\mfP\mfQ\mfR\mfS\mfT\mfU\mfV\mfW\mfX\mfY\mfZ
    \end{align*}
    \item \lstinline|\mathbb{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\bb|$\cdot$ . Cela ne fonctionne que pour l'alphabet majuscule et le nombre \( 1 \).
    \begin{equation*}
        \bbA\bbB\bbC\bbD\bbE\bbF\bbG\bbH\bbI\bbJ\bbK\bbL\bbM\bbN\bbO\bbP\bbQ\bbR\bbS\bbT\bbU\bbV\bbW\bbX\bbY\bbZ\bb1
    \end{equation*}
    Il y a aussi des commandes spéciales pour les structures algébriques bien connues : \lstinline|\N|, \lstinline|\Z|, \lstinline|\Q|, \lstinline|\R|, \lstinline|\C|, \lstinline|\F|, \lstinline|\A|.
    \[
        \N\Z\Q\R\C\F\A
    \]
    \item \lstinline|\mathcal{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\mc|$\cdot$ or \lstinline|\cal|$\cdot$ . Cela ne fonctionne que pour l'alphabet majuscule.
    \begin{equation*}
        \mcA\mcB\mcC\mcD\mcE\mcF\mcG\mcH\mcI\mcJ\mcK\mcL\mcM\mcN\mcO\mcP\mcQ\mcR\mcS\mcT\mcU\mcV\mcW\mcX\mcY\mcZ
    \end{equation*}
    \item \lstinline|\mathscr{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\ms|$\cdot$ or \lstinline|\scr|$\cdot$ . Cela ne fonctionne que pour l'alphabet majuscule.
    \begin{equation*}
        \msA\msB\msC\msD\msE\msF\msG\msH\msI\msJ\msK\msL\msM\msN\msO\msP\msQ\msR\msS\msT\msU\msV\msW\msX\msY\msZ
    \end{equation*}
\end{enumerate}

De plus, \PJLmath{} fournit également des symboles mathématiques qui ne sont pas inclus par défaut avec \LaTeX{}.

\begin{longtable}[l]{ p{4cm} p{6cm} p{6cm}}
\lstinline|\abs| & \lstinline|\abs{a}| $\rightarrow \abs{a}$ & symbole de valeur absolue \\
\lstinline|\norm| & \lstinline|\norm{a}| $\rightarrow \norm{a}$ & symbole de norme \\
\lstinline|\injection| & \lstinline|\injection| $\rightarrow ~\injection$ & symbole de flèche pour l'injection \\
\lstinline|\surjection| & \lstinline|\surjection| $\rightarrow ~\surjection$ & symbole de flèche pour la surjection \\
\lstinline|\bijection| & \lstinline|\bijection| $\rightarrow ~\bijection$ & symbole de flèche pour la bijection \\
% \lstinline|\legendre| & \lstinline|\legendre{a}{p}| $\rightarrow \legendre{a}{p}$ & Symbole Legendre \\
% & \lstinline|\legendre[z]{a}{p}| $\rightarrow \legendre[z]{a}{p}$ & \\
% \lstinline|\tlegendre| & \lstinline|\tlegendre{a}{p}| $\rightarrow \tlegendre{a}{p}$ & Symbole Legendre (text-style) \\
% \lstinline|\dlegendre| & \lstinline|\dlegendre{a}{p}| $\rightarrow \dlegendre{a}{p}$ & Symbole Legendre (display-style) \\
\end{longtable}

Ces raccourcis et symboles sont définis de telle manière qu'ils n'entrent pas en conflit avec les commandes existantes ou les commandes définies par l'utilisateur. Ainsi, même dans le cas où vous n'utilisez pas ces raccourcis ou symboles, ne vous inquiétez pas que leur existence apporte des erreurs.
%</ProjLib-doc-fr>

%<*ProjLib-doc-cn>
\subsubsection{PJLpaper:纸张设置}

\PJLpaper{} 主要用于调节纸张颜色。它支持下列选项:

\begin{itemize}
    \item \texttt{paperstyle = \meta{paper style name}}
        \begin{itemize}
            \item 设定纸张色彩样式。\meta{paper style name} 可供选择的选项有:\texttt{yellow}、\texttt{dark} 与 \texttt{nord}。
        \end{itemize}
    \item \texttt{yellowpaper}、\texttt{darkpaper}、\texttt{nordpaper}
        \begin{itemize}
            \item 设定纸张色彩样式。效果与相应名称的 \texttt{paperstyle} 相同。
        \end{itemize}
    \item \texttt{preview}
        \begin{itemize}
            \item 预览模式,将会把 pdf 文件的白边去掉以方便阅读。
        \end{itemize}
\end{itemize}

为了使用的方便,建议把这些选项作为文档类的全局参数,这样对于文档的纸张设定一目了然。
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\subsubsection{PJLpaper: paper configuration}

\PJLpaper{} is mainly used to adjust the paper color. It has the following options:

\vspace{-.3\baselineskip}
\begin{itemize}
    \item \texttt{paperstyle = \meta{paper style name}}
        \begin{itemize}
            \item Set the paper color style. The options available for \meta{paper style name} are: \texttt{yellow}, \texttt{dark} and \texttt{nord}.
        \end{itemize}
    \item \texttt{yellowpaper}, \texttt{darkpaper}, \texttt{nordpaper}
        \begin{itemize}
            \item Same as \texttt{paperstyle} with the corresponding \meta{paper style name} specified.
        \end{itemize}
    \item \texttt{preview}
        \begin{itemize}
            \item Preview mode. Crop the white edges of pdf file for the convenience of reading.
        \end{itemize}
\end{itemize}
\vspace{-.3\baselineskip}

It is recommended to use them as global options of the document class. In this way, the paper settings would be clear at a glance.
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\subsubsection{PJLpaper : configuration papier}

\PJLpaper{} est principalement utilisé pour ajuster la couleur du papier. Il a les options suivantes :

\vspace{-.3\baselineskip}
\begin{itemize}
    \item \texttt{paperstyle = \meta{paper style name}}
        \begin{itemize}
            \item Définit le style de couleur du papier. Les options disponibles pour \meta{paper style name} sont : \texttt{yellow}, \texttt{dark} et \texttt{nord}.
        \end{itemize}
    \item \texttt{yellowpaper}, \texttt{darkpaper}, \texttt{nordpaper}
        \begin{itemize}
            \item Identique à \texttt{paperstyle} avec le \meta{paper style name} correspondant spécifié.
        \end{itemize}
    \item \texttt{preview}
        \begin{itemize}
            \item Mode aperçu. Recadrez les bords blancs du fichier pdf pour faciliter la lecture.
        \end{itemize}
\end{itemize}
\vspace{-.3\baselineskip}

Il est recommandé de les passer comme options globales de la classe de document. De cette façon, les paramètres du papier seraient clairs en un coup d'œil.
%</ProjLib-doc-fr>



\clearpage

%<*ProjLib-doc-cn>
\section{目前存在的问题}

\begin{itemize}[itemsep=.6em]
    \item \PJLauthor{} 仍然处于初步阶段,在很多方面还远远比不上相对成熟的 \textsf{authblk}。
    \item \PJLlang{}:针对 \textsf{polyglossia} 的设置仍然存在许多问题,因此现在主要功能都是通过 \textsf{babel} 实现的。
    \item \PJLpaper{} 的 \texttt{preview} 功能主要是通过 \textsf{geometry} 宏包实现的,因此在 \textsc{\textsf{Koma}} 文档类中效果不好。
    \item \PJLthm{} 对于定理类环境的编号与样式设定目前还无法由用户更改。
    \item \PJLthm{}:智能引用针对所有 \PJLlang{} 已支持语言的本地化尚不完整,主要是中文、日文与俄文。
    \item 错误处理功能不完善,在出现一些问题时没有相应的错误提示。
    \item 代码中仍有许多可优化之处,有些部分耗时过长,特别是 \PJLthm{} 对定理类环境的定义。
\end{itemize}
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
\section{Known issues}

\begin{itemize}[itemsep=.6em]
    \item \PJLauthor{} is still in its preliminary stage, its effect is not as good as the relatively mature \textsf{authblk}.
    \item \PJLlang{}: It is still quite problematic with the configuration of \textsf{polyglossia}, so main features are implemented through \textsf{babel} for now.
    \item \PJLpaper{}: the \texttt{preview} option is mainly implemented with the help of package \textsf{geometry}, so it does not work quite as well in the \textsc{\textsf{Koma}} document classes.
    \item \PJLthm{}: The numbering and theorem-style settings of the theorem-like environments cannot be accessed by the user at present.
    \item \PJLthm{}: The localization of \textsf{cleveref} is not yet complete for all supported languages of \PJLlang{}, especially for Chinese, Japanese and Russian.
    \item Error handling mechanism is incomplete: no corresponding error prompt when some problems occur.
    \item There are still many things that can be optimized in the code. Some takes too long to run, especially the setup of theorem-like environments in \PJLthm{}.
\end{itemize}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
\section{Problèmes connus}

\begin{itemize}[itemsep=.6em]
    \item \PJLauthor{} est encore à son stade préliminaire, son effet n'est pas aussi bon que le \textsf{authblk} qui est relativement mature.
    \item \PJLlang{} : C'est encore assez problématique avec la configuration de \textsf{polyglossia}, donc les fonctionnalités principales sont implémentées via \textsf{babel} pour le moment.
    \item \PJLpaper{} : l'option \texttt{preview} est principalement implémentée à l'aide du package \textsf{geometry}, elle ne fonctionne donc pas aussi bien dans les classes de documents \textsc{\textsf{Koma}}.
    \item \PJLthm{} : les paramètres de numérotation et de style théorème des environnements de type théorème ne sont actuellement pas accessibles à l'utilisateur.
    \item \PJLthm{} : la localisation de \textsf{cleveref} n'est pas encore finie pour toutes les langues prises en charge par \PJLlang{}, en particulier pour le chinois, le japonais et le russe.
    \item Le mécanisme de gestion des erreurs est incomplet : pas de messages correspondants lorsque certains problèmes surviennent.
    \item Il y a encore beaucoup de choses qui peuvent être optimisées dans le code. Certains codes prennent trop de temps à s'exécuter, en particulier la configuration d'environnements de type théorème dans \PJLthm{}.
\end{itemize}
%</ProjLib-doc-fr>


\end{document}