Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed5a62c659
|
||
|
|
f078b8ae00
|
||
|
|
321703ddbc
|
||
|
|
c15747ce98
|
||
|
|
ada5bc3f63
|
||
|
|
e5c774f96c
|
||
|
|
b803a906ea
|
||
|
|
71b83ab97f
|
||
|
|
f8a747e6b3
|
||
|
|
dfac289590
|
||
|
|
1740adfc5a
|
||
|
|
55a236fe8b
|
||
|
|
d0d7d2a197
|
||
|
|
9736619563
|
||
|
|
340c5ab92c
|
||
|
|
59d197f291
|
||
|
|
f8001593dd
|
||
|
|
1ff507941d
|
||
|
|
3e91fbfefd
|
||
|
|
2e3f4a890e
|
||
|
|
3040693015
|
||
|
|
67947b07a7
|
||
|
|
cd64907a36
|
||
|
|
920866695c
|
||
|
|
b046a59a89
|
||
|
|
ca96637e50
|
||
|
|
ef3e1f6432
|
||
|
|
e37150fc87
|
||
|
|
f5835937db
|
||
|
|
05da5ad1bf
|
||
|
|
22c9e7df8e
|
||
|
|
2b0406163e
|
||
|
|
39a5959bca
|
||
|
|
86383d83c0
|
||
|
|
bbd44af52a
|
||
|
|
080b805d61
|
||
|
|
38172457e9
|
||
|
|
885efb3912
|
||
|
|
3fff9f0f75
|
No files matched your search
@@ -0,0 +1,3 @@
|
|||||||
|
template/*.pdf
|
||||||
|
|
||||||
|
tests/
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
id="svg10"
|
|
||||||
height="190.23mm"
|
|
||||||
width="0.76999998mm"
|
|
||||||
version="1.0">
|
|
||||||
<metadata
|
|
||||||
id="metadata14">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs6">
|
|
||||||
<clipPath
|
|
||||||
id="clipEmfPath1"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<path
|
|
||||||
id="path2"
|
|
||||||
d=" M 0,0 L 0,0 L 0,720.71002 L 4.6478401,720.71002 L 4.6478401,0 " />
|
|
||||||
</clipPath>
|
|
||||||
<pattern
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
height="6"
|
|
||||||
width="6"
|
|
||||||
patternUnits="userSpaceOnUse"
|
|
||||||
id="EMFhbasepattern" />
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
id="path8"
|
|
||||||
d=" M 0.90936001,0 L 0.90936001,0 L 0.90936001,719.91001 "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#231f20;stroke-width:2.0208001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1,45 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
id="svg10"
|
|
||||||
height="4.8299999mm"
|
|
||||||
width="338.29001mm"
|
|
||||||
version="1.0">
|
|
||||||
<metadata
|
|
||||||
id="metadata14">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs6">
|
|
||||||
<clipPath
|
|
||||||
id="clipEmfPath1"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<path
|
|
||||||
id="path2"
|
|
||||||
d=" M 0,0 L 0,0 L 0,20.001688 L 1280.3201,20.001688 L 1280.3201,0 " />
|
|
||||||
</clipPath>
|
|
||||||
<pattern
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
height="6"
|
|
||||||
width="6"
|
|
||||||
patternUnits="userSpaceOnUse"
|
|
||||||
id="EMFhbasepattern" />
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
id="path8"
|
|
||||||
d=" M 1280.1201,9.2470117 L 1280.1201,9.2470117 L 1015.1159,9.2470117 C 1010.7158,13.770006 1006.3158,18.19249 997.51564,18.19249 C 988.8155,18.19249 984.31543,13.770006 979.91536,9.2470117 C 975.51529,4.8245278 971.11522,0.40204399 962.31509,0.40204399 C 953.51495,0.40204399 949.11488,4.8245278 944.71481,9.2470117 C 940.31474,13.770006 935.91467,18.19249 927.11454,18.19249 C 918.3144,18.19249 913.91433,13.770006 909.51426,9.2470117 C 905.11419,4.8245278 900.71412,0.40204399 891.91398,0.40204399 C 883.01384,0.40204399 878.61377,4.8245278 874.21371,9.2470117 C 869.81364,13.770006 865.41357,18.19249 856.61343,18.19249 C 847.81329,18.19249 843.41322,13.770006 839.01315,9.2470117 C 834.61308,4.8245278 830.21302,0.40204399 821.41288,0.40204399 C 812.61274,0.40204399 808.21267,4.8245278 803.8126,9.2470117 C 799.41253,13.770006 795.01246,18.19249 786.21233,18.19249 C 777.41219,18.19249 773.01212,13.770006 768.61205,9.2470117 L 0,9.2470117 "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:2.0000315px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1,45 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
id="svg10"
|
|
||||||
height="4.8299999mm"
|
|
||||||
width="338.29001mm"
|
|
||||||
version="1.0">
|
|
||||||
<metadata
|
|
||||||
id="metadata14">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs6">
|
|
||||||
<clipPath
|
|
||||||
id="clipEmfPath1"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<path
|
|
||||||
id="path2"
|
|
||||||
d=" M 0,0 L 0,0 L 0,20.001688 L 1280.3201,20.001688 L 1280.3201,0 " />
|
|
||||||
</clipPath>
|
|
||||||
<pattern
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
height="6"
|
|
||||||
width="6"
|
|
||||||
patternUnits="userSpaceOnUse"
|
|
||||||
id="EMFhbasepattern" />
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
id="path8"
|
|
||||||
d=" M 1280.1201,9.2470117 L 1280.1201,9.2470117 L 1098.3172,9.2470117 C 1093.9172,13.770006 1089.5171,18.19249 1080.7169,18.19249 C 1071.9168,18.19249 1067.5167,13.770006 1063.1167,9.2470117 C 1058.7166,4.8245278 1054.3165,0.40204399 1045.5164,0.40204399 C 1036.6163,0.40204399 1032.2162,4.8245278 1027.8161,9.2470117 C 1023.416,13.770006 1019.016,18.19249 1010.2158,18.19249 C 1001.4157,18.19249 997.01563,13.770006 992.61556,9.2470117 C 988.21549,4.8245278 983.81542,0.40204399 975.01529,0.40204399 C 966.21515,0.40204399 961.81508,4.8245278 957.41501,9.2470117 C 953.01494,13.770006 948.61487,18.19249 939.81473,18.19249 C 931.0146,18.19249 926.61453,13.770006 922.21446,9.2470117 C 917.81439,4.8245278 913.41432,0.40204399 904.61418,0.40204399 C 895.71404,0.40204399 891.31397,4.8245278 886.9139,9.2470117 C 882.51384,13.770006 878.11377,18.19249 869.31363,18.19249 C 860.51349,18.19249 856.11342,13.770006 851.71335,9.2470117 L 0,9.2470117 "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:2.0000315px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1,60 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
id="svg16"
|
|
||||||
height="190.23mm"
|
|
||||||
width="338.29001mm"
|
|
||||||
version="1.0">
|
|
||||||
<metadata
|
|
||||||
id="metadata20">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs6">
|
|
||||||
<clipPath
|
|
||||||
id="clipEmfPath1"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<path
|
|
||||||
id="path2"
|
|
||||||
d=" M 0,0 L 0,0 L 0,720.71002 L 1280.3201,720.71002 L 1280.3201,0 " />
|
|
||||||
</clipPath>
|
|
||||||
<pattern
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
height="6"
|
|
||||||
width="6"
|
|
||||||
patternUnits="userSpaceOnUse"
|
|
||||||
id="EMFhbasepattern" />
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
id="path8"
|
|
||||||
d=" M 640.01003,0 L 640.01003,0 L 640.01003,719.91001 "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#ffffff;stroke-width:2.0000315px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
<path
|
|
||||||
id="path10"
|
|
||||||
d=" M 1280.1201,359.905 L 1280.1201,359.905 L 1148.718,359.905 C 1144.3179,364.30507 1139.9179,368.70513 1131.1177,368.70513 C 1122.3176,368.70513 1117.9175,364.30507 1113.5175,359.905 C 1109.1174,355.50494 1104.7173,351.00488 1095.8172,351.00488 C 1087.017,351.00488 1082.617,355.50494 1078.2169,359.905 C 1073.8168,364.30507 1069.4168,368.70513 1060.6166,368.70513 C 1051.8165,368.70513 1047.4164,364.30507 1043.0164,359.905 C 1038.6163,355.50494 1034.2162,351.00488 1025.4161,351.00488 C 1016.6159,351.00488 1012.2159,355.50494 1007.8158,359.905 C 1003.4157,364.30507 999.01566,368.70513 990.21552,368.70513 C 981.41539,368.70513 977.01532,364.30507 972.61525,359.905 C 968.21518,355.50494 963.81511,351.00488 954.91497,351.00488 C 946.11483,351.00488 941.71476,355.50494 937.31469,359.905 C 932.91463,364.30507 928.51456,368.70513 919.71442,368.70513 C 910.91428,368.70513 906.51421,364.30507 902.11414,359.905 L 0,359.905 "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#ffffff;stroke-width:2.0000315px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
<path
|
|
||||||
id="path12"
|
|
||||||
d=" M 640.01003,94.501314 L 640.01003,94.501314 L 640.01003,94.501314 C 633.10993,94.501314 627.60984,100.10139 627.60984,107.00149 L 627.60984,184.50257 C 627.60984,191.40266 633.10993,196.90274 640.01003,196.90274 C 646.91014,196.90274 652.51023,191.40266 652.51023,184.50257 L 652.51023,107.00149 C 652.51023,100.10139 646.91014,94.501314 640.01003,94.501314 z "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:#000000;fill-rule:nonzero;fill-opacity:1;stroke:none;" />
|
|
||||||
<path
|
|
||||||
id="path14"
|
|
||||||
d=" M 640.01003,94.501314 L 640.01003,94.501314 L 640.01003,94.501314 C 633.10993,94.501314 627.60984,100.10139 627.60984,107.00149 L 627.60984,184.50257 C 627.60984,191.40266 633.10993,196.90274 640.01003,196.90274 C 646.91014,196.90274 652.51023,191.40266 652.51023,184.50257 L 652.51023,107.00149 C 652.51023,100.10139 646.91014,94.501314 640.01003,94.501314 L 640.01003,94.501314 z "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#ffffff;stroke-width:2.0000315px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.6 KiB |
@@ -1,60 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
id="svg16"
|
|
||||||
height="190.23mm"
|
|
||||||
width="338.29001mm"
|
|
||||||
version="1.0">
|
|
||||||
<metadata
|
|
||||||
id="metadata20">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs6">
|
|
||||||
<clipPath
|
|
||||||
id="clipEmfPath1"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<path
|
|
||||||
id="path2"
|
|
||||||
d=" M 0,0 L 0,0 L 0,720.71002 L 1280.3201,720.71002 L 1280.3201,0 " />
|
|
||||||
</clipPath>
|
|
||||||
<pattern
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
height="6"
|
|
||||||
width="6"
|
|
||||||
patternUnits="userSpaceOnUse"
|
|
||||||
id="EMFhbasepattern" />
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
id="path8"
|
|
||||||
d=" M 640.01003,0 L 640.01003,0 L 640.01003,719.91001 "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:2.0000315px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
<path
|
|
||||||
id="path10"
|
|
||||||
d=" M 1280.1201,359.905 L 1280.1201,359.905 L 1148.718,359.905 C 1144.3179,364.30507 1139.9179,368.70513 1131.1177,368.70513 C 1122.3176,368.70513 1117.9175,364.30507 1113.5175,359.905 C 1109.1174,355.50494 1104.7173,351.00488 1095.8172,351.00488 C 1087.017,351.00488 1082.617,355.50494 1078.2169,359.905 C 1073.8168,364.30507 1069.4168,368.70513 1060.6166,368.70513 C 1051.8165,368.70513 1047.4164,364.30507 1043.0164,359.905 C 1038.6163,355.50494 1034.2162,351.00488 1025.4161,351.00488 C 1016.6159,351.00488 1012.2159,355.50494 1007.8158,359.905 C 1003.4157,364.30507 999.01566,368.70513 990.21552,368.70513 C 981.41539,368.70513 977.01532,364.30507 972.61525,359.905 C 968.21518,355.50494 963.81511,351.00488 954.91497,351.00488 C 946.11483,351.00488 941.71476,355.50494 937.31469,359.905 C 932.91463,364.30507 928.51456,368.70513 919.71442,368.70513 C 910.91428,368.70513 906.51421,364.30507 902.11414,359.905 L 0,359.905 "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:2.0000315px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
<path
|
|
||||||
id="path12"
|
|
||||||
d=" M 640.01003,94.501314 L 640.01003,94.501314 L 640.01003,94.501314 C 633.10993,94.501314 627.60984,100.10139 627.60984,107.00149 L 627.60984,184.50257 C 627.60984,191.40266 633.10993,196.90274 640.01003,196.90274 C 646.91014,196.90274 652.51023,191.40266 652.51023,184.50257 L 652.51023,107.00149 C 652.51023,100.10139 646.91014,94.501314 640.01003,94.501314 z "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:#ffffff;fill-rule:nonzero;fill-opacity:1;stroke:none;" />
|
|
||||||
<path
|
|
||||||
id="path14"
|
|
||||||
d=" M 640.01003,94.501314 L 640.01003,94.501314 L 640.01003,94.501314 C 633.10993,94.501314 627.60984,100.10139 627.60984,107.00149 L 627.60984,184.50257 C 627.60984,191.40266 633.10993,196.90274 640.01003,196.90274 C 646.91014,196.90274 652.51023,191.40266 652.51023,184.50257 L 652.51023,107.00149 C 652.51023,100.10139 646.91014,94.501314 640.01003,94.501314 L 640.01003,94.501314 z "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:2.0000315px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.6 KiB |
@@ -1,50 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
id="svg12"
|
|
||||||
height="6.8600001mm"
|
|
||||||
width="30.23mm"
|
|
||||||
version="1.0">
|
|
||||||
<metadata
|
|
||||||
id="metadata16">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs6">
|
|
||||||
<clipPath
|
|
||||||
id="clipEmfPath1"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<path
|
|
||||||
id="path2"
|
|
||||||
d=" M 0,0 L 0,0 L 0,27.678928 L 115.9862,27.678928 L 115.9862,0 " />
|
|
||||||
</clipPath>
|
|
||||||
<pattern
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
height="6"
|
|
||||||
width="6"
|
|
||||||
patternUnits="userSpaceOnUse"
|
|
||||||
id="EMFhbasepattern" />
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
id="path8"
|
|
||||||
d=" M 1.0007437,13.338034 L 1.0007437,13.338034 L 1.0007437,13.338034 C 1.0007437,20.257766 6.5048342,25.873781 13.409966,25.873781 L 102.27601,25.873781 C 109.18114,25.873781 114.7853,20.257766 114.7853,13.338034 C 114.7853,6.4183022 109.18114,0.80228777 102.27601,0.80228777 L 13.409966,0.80228777 C 6.5048342,0.80228777 1.0007437,6.4183022 1.0007437,13.338034 z "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:#000000;fill-rule:nonzero;fill-opacity:1;stroke:none;" />
|
|
||||||
<path
|
|
||||||
id="path10"
|
|
||||||
d=" M 1.0007437,13.338034 L 1.0007437,13.338034 L 1.0007437,13.338034 C 1.0007437,20.257766 6.5048342,25.873781 13.409966,25.873781 L 102.27601,25.873781 C 109.18114,25.873781 114.7853,20.257766 114.7853,13.338034 C 114.7853,6.4183022 109.18114,0.80228777 102.27601,0.80228777 L 13.409966,0.80228777 C 6.5048342,0.80228777 1.0007437,6.4183022 1.0007437,13.338034 L 1.0007437,13.338034 z "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#ffffff;stroke-width:2.0014875px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.1 KiB |
@@ -1,45 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
id="svg10"
|
|
||||||
height="190.23mm"
|
|
||||||
width="0.76999998mm"
|
|
||||||
version="1.0">
|
|
||||||
<metadata
|
|
||||||
id="metadata14">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs6">
|
|
||||||
<clipPath
|
|
||||||
id="clipEmfPath1"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<path
|
|
||||||
id="path2"
|
|
||||||
d=" M 0,0 L 0,0 L 0,720.71002 L 4.6478401,720.71002 L 4.6478401,0 " />
|
|
||||||
</clipPath>
|
|
||||||
<pattern
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
height="6"
|
|
||||||
width="6"
|
|
||||||
patternUnits="userSpaceOnUse"
|
|
||||||
id="EMFhbasepattern" />
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
id="path8"
|
|
||||||
d=" M 0.90936001,0 L 0.90936001,0 L 0.90936001,719.91001 "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#ffffff;stroke-width:2.0208001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1,50 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
id="svg12"
|
|
||||||
height="6.8600001mm"
|
|
||||||
width="30.23mm"
|
|
||||||
version="1.0">
|
|
||||||
<metadata
|
|
||||||
id="metadata16">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs6">
|
|
||||||
<clipPath
|
|
||||||
id="clipEmfPath1"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<path
|
|
||||||
id="path2"
|
|
||||||
d=" M 0,0 L 0,0 L 0,27.678928 L 115.9862,27.678928 L 115.9862,0 " />
|
|
||||||
</clipPath>
|
|
||||||
<pattern
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
height="6"
|
|
||||||
width="6"
|
|
||||||
patternUnits="userSpaceOnUse"
|
|
||||||
id="EMFhbasepattern" />
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
id="path8"
|
|
||||||
d=" M 1.0007437,13.338034 L 1.0007437,13.338034 L 1.0007437,13.338034 C 1.0007437,20.257766 6.5048342,25.873781 13.409966,25.873781 L 102.27601,25.873781 C 109.18114,25.873781 114.7853,20.257766 114.7853,13.338034 C 114.7853,6.4183022 109.18114,0.80228777 102.27601,0.80228777 L 13.409966,0.80228777 C 6.5048342,0.80228777 1.0007437,6.4183022 1.0007437,13.338034 z "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:#000000;fill-rule:nonzero;fill-opacity:1;stroke:none;" />
|
|
||||||
<path
|
|
||||||
id="path10"
|
|
||||||
d=" M 1.0007437,13.338034 L 1.0007437,13.338034 L 1.0007437,13.338034 C 1.0007437,20.257766 6.5048342,25.873781 13.409966,25.873781 L 102.27601,25.873781 C 109.18114,25.873781 114.7853,20.257766 114.7853,13.338034 C 114.7853,6.4183022 109.18114,0.80228777 102.27601,0.80228777 L 13.409966,0.80228777 C 6.5048342,0.80228777 1.0007437,6.4183022 1.0007437,13.338034 L 1.0007437,13.338034 z "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#ffffff;stroke-width:2.0014875px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.1 KiB |
@@ -1,45 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
id="svg10"
|
|
||||||
height="190.23mm"
|
|
||||||
width="0.76999998mm"
|
|
||||||
version="1.0">
|
|
||||||
<metadata
|
|
||||||
id="metadata14">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs6">
|
|
||||||
<clipPath
|
|
||||||
id="clipEmfPath1"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<path
|
|
||||||
id="path2"
|
|
||||||
d=" M 0,0 L 0,0 L 0,720.71002 L 4.6478401,720.71002 L 4.6478401,0 " />
|
|
||||||
</clipPath>
|
|
||||||
<pattern
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
height="6"
|
|
||||||
width="6"
|
|
||||||
patternUnits="userSpaceOnUse"
|
|
||||||
id="EMFhbasepattern" />
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
id="path8"
|
|
||||||
d=" M 0.90936001,0 L 0.90936001,0 L 0.90936001,719.91001 "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:none;stroke:#ffffff;stroke-width:2.0208001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1,45 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
id="svg10"
|
|
||||||
height="68.07mm"
|
|
||||||
width="126.74mm"
|
|
||||||
version="1.0">
|
|
||||||
<metadata
|
|
||||||
id="metadata14">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs6">
|
|
||||||
<clipPath
|
|
||||||
id="clipEmfPath1"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<path
|
|
||||||
id="path2"
|
|
||||||
d=" M 0,0 L 0,0 L 0,259.00775 L 480.74007,259.00775 L 480.74007,0 " />
|
|
||||||
</clipPath>
|
|
||||||
<pattern
|
|
||||||
y="0"
|
|
||||||
x="0"
|
|
||||||
height="6"
|
|
||||||
width="6"
|
|
||||||
patternUnits="userSpaceOnUse"
|
|
||||||
id="EMFhbasepattern" />
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
id="path8"
|
|
||||||
d=" M 385.33212,258.20772 L 385.33212,258.20772 C 407.23395,258.20772 425.73549,251.00751 439.93667,236.20707 L 441.73682,255.20763 L 480.34004,255.20763 L 480.34004,56.301684 L 436.93642,56.301684 L 436.93642,204.10611 C 429.83583,214.20641 416.2347,223.10667 398.93325,223.10667 C 377.03143,223.10667 365.73049,209.50627 365.73049,183.30548 L 365.73049,56.301684 L 322.32687,56.301684 L 322.32687,182.70547 C 322.32687,229.10685 344.92875,258.20772 385.33212,258.20772 z M 203.61697,195.80586 L 203.61697,195.80586 C 203.61697,235.60705 219.01826,257.60771 256.42138,257.60771 C 270.72257,257.60771 282.62356,254.0076 292.7244,248.70744 L 288.52405,221.90664 C 283.22361,223.70669 277.82316,224.90673 271.92267,224.90673 C 257.02143,224.90673 247.52063,216.60648 247.52063,198.20593 L 247.52063,97.302911 L 292.7244,97.302911 L 292.7244,64.601933 L 247.52063,64.601933 L 247.52063,19.500583 L 217.31812,19.500583 L 206.01717,63.401897 L 179.81499,65.20195 L 179.81499,93.102785 L 203.61697,99.60298 L 203.61697,195.80586 z M 43.90366,197.60591 L 43.90366,197.60591 L 69.405786,170.30509 L 121.1101,254.60762 L 170.3142,254.60762 L 97.908162,142.40426 L 163.81366,56.901702 L 116.90975,56.901702 L 43.90366,153.10458 L 43.90366,0 L 0,0 L 0,254.60762 L 43.90366,254.60762 L 43.90366,197.60591 z "
|
|
||||||
clip-path="url(#clipEmfPath1)"
|
|
||||||
style="fill:#000000;fill-rule:nonzero;fill-opacity:1;stroke:none;" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 Dominykas Svetikas
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -1,72 +1,14 @@
|
|||||||
# KTU-Typst
|
# ktu-paper
|
||||||
|
|
||||||
This repository contains a Typst template for KTU style presentation and written work.
|
This repository contains a Typst template for academic papers at the Kaunas University of Technology, Faculty of Informatics.
|
||||||
|
|
||||||
To use the template, just import `template.typ` at the top of the Typst document and apply a show rule.
|
I successfully wrote and defended a final Bachelor's thesis written with this template and continue to use for writing other reports.
|
||||||
|
|
||||||
## Report
|
## Initiating the template
|
||||||
|
Install the downloaded template under the following directory:
|
||||||
|
- Linux: `~/.local/share/typst/packages/local/ktu-paper/0.5.0/`
|
||||||
|
|
||||||
The following is an example on how to apply the report style for a document
|
And then initiate a new project:
|
||||||
|
```sh
|
||||||
```typst
|
typst init @local/ktu-paper:0.5.0
|
||||||
#import "template.typ": ataskaita
|
|
||||||
|
|
||||||
#show: ataskaita.with(
|
|
||||||
"Kompiuterinis raštingumas",
|
|
||||||
(
|
|
||||||
[Technologinis projektas],
|
|
||||||
[Typst šablonas]
|
|
||||||
),
|
|
||||||
authors: ("Vardenis Pavardenis",),
|
|
||||||
recipients: (
|
|
||||||
"lekt. Petras Petraitis",
|
|
||||||
),
|
|
||||||
authorRole: "Studentas",
|
|
||||||
recipientRole: "Dėstytojas"
|
|
||||||
)
|
|
||||||
|
|
||||||
= Įvadas
|
|
||||||
...
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Presentation
|
|
||||||
|
|
||||||
For presentations, we use the Polylux Typst package. I suggest that you consult documentation on how it works before proceeding.
|
|
||||||
|
|
||||||
```typst
|
|
||||||
#import "@preview/polylux:0.3.1": *
|
|
||||||
#import "template.typ": *
|
|
||||||
|
|
||||||
#show: everything => ktu-theme(everything)
|
|
||||||
|
|
||||||
#ktu-title-slide[
|
|
||||||
= Pristatymo tema
|
|
||||||
|
|
||||||
#box[
|
|
||||||
#set text(size: 18pt)
|
|
||||||
Autoriai: Vardenis Pavardenis, Petras Petraitis
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
#ktu-outline-slide[
|
|
||||||
== Turinys
|
|
||||||
|
|
||||||
1. Įvadas
|
|
||||||
2. Dėstymas
|
|
||||||
3. Išvados
|
|
||||||
]
|
|
||||||
|
|
||||||
#ktu-main-slide[
|
|
||||||
== Įvadas
|
|
||||||
|
|
||||||
...
|
|
||||||
]
|
|
||||||
|
|
||||||
...
|
|
||||||
```
|
|
||||||
### Options
|
|
||||||
|
|
||||||
- `#ktu-title-slide` for first, title slide
|
|
||||||
- `#ktu-outline-slide` for second, outline slide
|
|
||||||
- `#ktu-main-slide` main content slide
|
|
||||||
- `#ktu-no-vertical-slide` main content slide without a vertical line on the right
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
wwdc-network:
|
|
||||||
type: Article
|
|
||||||
author: ["Mehta, Jiten", "Kinnear, Eric"]
|
|
||||||
title: Boost Performance and Security with Modern Networking
|
|
||||||
date: 2020-06-26
|
|
||||||
parent:
|
|
||||||
- type: Conference
|
|
||||||
title:
|
|
||||||
value: "{World Wide Developer Conference 2020}"
|
|
||||||
short: WWDC 2020
|
|
||||||
organization: Apple Inc.
|
|
||||||
location: Mountain View, CA
|
|
||||||
- type: Video
|
|
||||||
runtime: "00:13:42"
|
|
||||||
url: { value: https://developer.apple.com/videos/play/wwdc2020/10111/, date: 2020-09-17 }
|
|
||||||
|
Before Width: | Height: | Size: 1.1 MiB |
@@ -1,111 +0,0 @@
|
|||||||
#import "@preview/polylux:0.3.1": *
|
|
||||||
#import "@preview/codly:0.2.0": *
|
|
||||||
#import "@preview/pinit:0.1.3": *
|
|
||||||
#import "../template.typ": *
|
|
||||||
|
|
||||||
#show: everything => ktu-theme(everything)
|
|
||||||
#show: codly-init.with()
|
|
||||||
#codly(
|
|
||||||
fill: luma(240),
|
|
||||||
zebra-color: luma(240),
|
|
||||||
|
|
||||||
display-name: false,
|
|
||||||
display-icon: false,
|
|
||||||
enable-numbers: false,
|
|
||||||
stroke-width: 2pt,
|
|
||||||
stroke-color: black
|
|
||||||
)
|
|
||||||
|
|
||||||
#ktu-title-slide[
|
|
||||||
= Pristatymo tema
|
|
||||||
|
|
||||||
#box[
|
|
||||||
#set text(size: 18pt)
|
|
||||||
Autoriai: Vardenis Pavardenis, Petras Petraitis
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
#ktu-outline-slide[
|
|
||||||
== Turinys
|
|
||||||
|
|
||||||
1. Įvadas
|
|
||||||
2. Dėstymas
|
|
||||||
3. Išvados
|
|
||||||
]
|
|
||||||
|
|
||||||
#ktu-main-slide[
|
|
||||||
== Įvadas
|
|
||||||
|
|
||||||
#lorem(60)
|
|
||||||
]
|
|
||||||
|
|
||||||
#ktu-main-slide[
|
|
||||||
== Daug teksto
|
|
||||||
|
|
||||||
#lorem(130)
|
|
||||||
]
|
|
||||||
|
|
||||||
#ktu-no-vertical-slide[
|
|
||||||
== Daug teksto, kitas variantas
|
|
||||||
|
|
||||||
#only((1,2))[Būti]#only(2)[, ar nebūti]?
|
|
||||||
|
|
||||||
#lorem(120)
|
|
||||||
]
|
|
||||||
|
|
||||||
#ktu-no-vertical-slide[
|
|
||||||
== Kodas 1
|
|
||||||
|
|
||||||
#text(size:15pt)[
|
|
||||||
```python
|
|
||||||
import sys
|
|
||||||
import signal
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
from analyser.app import App
|
|
||||||
from analyser.qt_compat import QtWidgets
|
|
||||||
from analyser.settings import Settings
|
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
|
||||||
warnings.filterwarnings("ignore", category=DeprecationWarning)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
settings = Settings()
|
|
||||||
app = QtWidgets.QApplication(sys.argv)
|
|
||||||
ex = App(settings)
|
|
||||||
sys.excepthook = ex.excepthook
|
|
||||||
sys.exit(app.exec_())
|
|
||||||
```]
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
#ktu-no-vertical-slide[
|
|
||||||
== Kodas 2
|
|
||||||
|
|
||||||
```java
|
|
||||||
public interface SortedSet<E> extends Set<E> {
|
|
||||||
// Grąžinamas aibės poaibis iki element.
|
|
||||||
Set<E> headSet(E element);
|
|
||||||
// Grąžinamas aibės poaibis nuo element1 iki element2.
|
|
||||||
Set<E> subSet(E element1, E element2);
|
|
||||||
// Grąžinamas aibės poaibis nuo element.
|
|
||||||
Set<E> tailSet(E element);
|
|
||||||
// Grąžinamas atvirkštinis iteratorius.
|
|
||||||
Iterator<E> descendingIterator();
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#only(2)[
|
|
||||||
#place(
|
|
||||||
top+left,
|
|
||||||
dx: 600pt, dy: 200pt
|
|
||||||
)[#pin("test")]
|
|
||||||
|
|
||||||
#pinit-point-from(
|
|
||||||
pin-dx: -240pt,
|
|
||||||
pin-dy: -90pt,
|
|
||||||
"test",
|
|
||||||
[Ką tai reiškia?]
|
|
||||||
)
|
|
||||||
]
|
|
||||||
]
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<style xmlns="http://purl.org/net/xbiblio/csl" version="1.0" default-locale="lt-LT" class="in-text">
|
<style xmlns="http://purl.org/net/xbiblio/csl" version="1.0" default-locale="lt-LT" class="in-text">
|
||||||
<info>
|
<info>
|
||||||
<title>ISO-690 (numeric, Lietuvių kalba)</title>
|
<title>ISO-690 (numeric, Lietuvių kalba)</title>
|
||||||
@@ -9,6 +9,10 @@
|
|||||||
<name>Linas Valiukas</name>
|
<name>Linas Valiukas</name>
|
||||||
<email>[email protected]</email>
|
<email>[email protected]</email>
|
||||||
</author>
|
</author>
|
||||||
|
<contributor>
|
||||||
|
<name>Dominykas Svetikas</name>
|
||||||
|
<email>[email protected]</email>
|
||||||
|
</contributor>
|
||||||
<category citation-format="numeric"/>
|
<category citation-format="numeric"/>
|
||||||
<category field="generic-base"/>
|
<category field="generic-base"/>
|
||||||
<summary>ISO 690 style for the Vilnius university, Faculty of Communication. (Numeric version)</summary>
|
<summary>ISO 690 style for the Vilnius university, Faculty of Communication. (Numeric version)</summary>
|
||||||
@@ -158,9 +162,9 @@
|
|||||||
</macro>
|
</macro>
|
||||||
<macro name="issue">
|
<macro name="issue">
|
||||||
<group delimiter=", ">
|
<group delimiter=", ">
|
||||||
<text variable="volume" prefix="Vol. "/>
|
<text variable="volume" prefix="Vol. "/>
|
||||||
<text variable="issue" prefix="no. "/>
|
<text variable="issue" prefix="no. "/>
|
||||||
<text variable="page" prefix="p. "/>
|
<text variable="page" prefix="p. "/>
|
||||||
</group>
|
</group>
|
||||||
</macro>
|
</macro>
|
||||||
<macro name="isbn">
|
<macro name="isbn">
|
||||||
@@ -171,14 +175,13 @@
|
|||||||
<sort>
|
<sort>
|
||||||
<key variable="citation-number" sort="ascending"/>
|
<key variable="citation-number" sort="ascending"/>
|
||||||
</sort>
|
</sort>
|
||||||
<layout vertical-align="sup" prefix="[" suffix="]" delimiter=",">
|
<layout prefix="[" suffix="]" delimiter=", ">
|
||||||
<text variable="citation-number"/>
|
<text variable="citation-number"/>
|
||||||
</layout>
|
</layout>
|
||||||
</citation>
|
</citation>
|
||||||
<bibliography>
|
<bibliography>
|
||||||
<sort>
|
<sort>
|
||||||
<key macro="author"/>
|
<key variable="citation-number"/>
|
||||||
<key variable="title"/>
|
|
||||||
</sort>
|
</sort>
|
||||||
<layout suffix=".">
|
<layout suffix=".">
|
||||||
<text variable="citation-number" suffix=". "/>
|
<text variable="citation-number" suffix=". "/>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/// Whether to number figures per section or not.
|
||||||
|
/// If true, figures will be numbered like "1.1", "1.2", "2.1", etc.
|
||||||
|
/// If false, figures will be numbered like "1", "2", "3", etc.
|
||||||
|
///
|
||||||
|
/// TODO: figure out how to deal with numbering on sections such as
|
||||||
|
/// Appendix and other non-standard sections.
|
||||||
|
#let __FIG_PER_SECTION = state("svetikas.lt/ktu-paper/figure-numbering-per-section", false)
|
||||||
|
|
||||||
|
/// Whether to uppercase section titles or not.
|
||||||
|
/// If true, section titles will be uppercased.
|
||||||
|
/// If false, section titles will be displayed as-is.
|
||||||
|
#let __UPPERCASE_SECTION_TITLES = state("svetikas.lt/ktu-paper/uppercase-section-titles", false)
|
||||||
|
|
||||||
|
#let __DEBUG_AUTHOR_TABLE = state("$ktu-template-DEBUG_AUTHOR_TABLE", false)
|
||||||
|
#let debug-author-table() = {
|
||||||
|
__DEBUG_AUTHOR_TABLE.update(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let __HEADING_EXPERIMENT = state("$ktu-template-HEADING_EXPERIMENT", false)
|
||||||
|
#let enable-heading-experiment() = {
|
||||||
|
__HEADING_EXPERIMENT.update(true)
|
||||||
|
}
|
||||||
@@ -0,0 +1,396 @@
|
|||||||
|
// This file includes logic for displaying figures in the document, including numbering, captions, and references. It also includes logic for handling figure numbering per section or globally, based on the configuration set in `config.typ`.
|
||||||
|
#import "config.typ": __FIG_PER_SECTION
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// Figure kinds
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// Localizations for the recognized referenceable figure kinds, keyed by `repr(func)`.
|
||||||
|
/// - supplement: used in captions (the caption adds the separator, e.g. "1 pav.").
|
||||||
|
/// - ref-name: used in references, e.g. "(žr. 1 pav.)". Either a string or a
|
||||||
|
/// function `count => string`, called with the number of elements mentioned
|
||||||
|
/// together, e.g. "(žr. 1 priedą)" vs "(žr. 1, 2 priedus)".
|
||||||
|
/// - single-name: full word used when the figure is the only one of its kind and
|
||||||
|
/// therefore unnumbered, e.g. "Paveikslas. ..." and "(žr. paveikslas)".
|
||||||
|
#let __figure-kinds = (
|
||||||
|
table: (supplement: "lentelė", ref-name: "lentelė", single-name: "lentelė"),
|
||||||
|
image: (supplement: "pav", ref-name: "pav.", single-name: "paveikslas"),
|
||||||
|
raw: (supplement: "kodo frag", ref-name: "kodo frag.", single-name: "kodo fragmentas"),
|
||||||
|
equation: (supplement: "lygtis", ref-name: "formulė", single-name: "lygtis"),
|
||||||
|
// Appendices are headings, not figures, but they use the same referencing
|
||||||
|
appendix: (
|
||||||
|
supplement: "priedas",
|
||||||
|
ref-name: count => if count == 1 { "priedą" } else { "priedus" },
|
||||||
|
single-name: "priedas",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
/// Figure kinds registered by the document author via `ktu-paper(figureKinds: ...)`.
|
||||||
|
#let __USER_FIGURE_KINDS = state("ktu-user-figure-kinds", (:))
|
||||||
|
|
||||||
|
/// Validates author-supplied kinds and fills in defaults (`ref-name` falls back
|
||||||
|
/// to `supplement`).
|
||||||
|
#let __normalize-figure-kinds(kinds) = {
|
||||||
|
let normalized = (:)
|
||||||
|
for (key, spec) in kinds {
|
||||||
|
assert(
|
||||||
|
"supplement" in spec,
|
||||||
|
message: "figure kind `" + key + "` needs a `supplement`",
|
||||||
|
)
|
||||||
|
normalized.insert(key, (
|
||||||
|
supplement: spec.supplement,
|
||||||
|
ref-name: spec.at("ref-name", default: spec.supplement),
|
||||||
|
single-name: spec.at("single-name", default: spec.supplement),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
normalized
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Recognized kinds merged with the author's. Must be called in a context.
|
||||||
|
#let __all-figure-kinds() = __figure-kinds + __USER_FIGURE_KINDS.get()
|
||||||
|
|
||||||
|
/// Resets all figure and equation counters (used when numbering per section).
|
||||||
|
/// Must be called in a context.
|
||||||
|
#let __reset-figure-counters() = {
|
||||||
|
let custom = (..__USER_FIGURE_KINDS.get().keys(),)
|
||||||
|
for kind in (image, table, raw, ..custom) {
|
||||||
|
counter(figure.where(kind: kind)).update(0)
|
||||||
|
}
|
||||||
|
counter(math.equation).update(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns the caption supplement text for a figure kind (e.g. `table`, `math.equation`).
|
||||||
|
#let __fig-supplement(func) = __figure-kinds.at(repr(func)).supplement
|
||||||
|
|
||||||
|
/// Finds the first recognized kind ("table", "image", "raw" or "equation") inside
|
||||||
|
/// `node`, descending through wrappers (align, block, grid, stack, ...).
|
||||||
|
/// Returns the key into `__figure-kinds`, or `none` if nothing is recognized.
|
||||||
|
#let __find-figure-kind(node) = {
|
||||||
|
if type(node) != content { return none }
|
||||||
|
|
||||||
|
let key = repr(node.func())
|
||||||
|
if key in __figure-kinds { return key }
|
||||||
|
|
||||||
|
// Single-child wrappers
|
||||||
|
for field in ("body", "child") {
|
||||||
|
if node.has(field) {
|
||||||
|
let found = __find-figure-kind(node.at(field))
|
||||||
|
if found != none { return found }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Multi-child containers
|
||||||
|
if node.has("children") {
|
||||||
|
for child in node.children {
|
||||||
|
let found = __find-figure-kind(child)
|
||||||
|
if found != none { return found }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
none
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Resolves the `__figure-kinds` key of a figure element. An explicit custom
|
||||||
|
/// (string) kind always wins; otherwise the kind is detected from the body.
|
||||||
|
#let __figure-key(fig) = {
|
||||||
|
if type(fig.kind) == str { return fig.kind }
|
||||||
|
let found = __find-figure-kind(fig.body)
|
||||||
|
if found != none { found } else { repr(fig.kind) }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns the caption supplement of a figure element.
|
||||||
|
#let __figure-supplement-of(fig) = {
|
||||||
|
let key = __figure-key(fig)
|
||||||
|
let kinds = __all-figure-kinds()
|
||||||
|
assert(
|
||||||
|
key in kinds,
|
||||||
|
message: "unregistered figure kind `" + key + "`: register it with ktu-paper(figureKinds: ...)",
|
||||||
|
)
|
||||||
|
kinds.at(key).supplement
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// Numbering
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// Resolves a figure's number (global "1" or section-based "1.1") at `loc`,
|
||||||
|
/// returned as a string.
|
||||||
|
#let __get-figure-number(fig-item, loc) = {
|
||||||
|
assert(
|
||||||
|
type(fig-item) == content and fig-item.func() == figure,
|
||||||
|
message: "can only get figure number for figure elements",
|
||||||
|
)
|
||||||
|
|
||||||
|
let fig-counter = counter(figure.where(kind: fig-item.kind))
|
||||||
|
|
||||||
|
if __FIG_PER_SECTION.at(loc) {
|
||||||
|
let chapter = counter(heading).at(loc).at(0, default: 0)
|
||||||
|
let fig-num = fig-counter.at(loc).at(0, default: 1)
|
||||||
|
str(chapter) + "." + str(fig-num)
|
||||||
|
} else {
|
||||||
|
str(fig-counter.at(loc).at(0))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Resolves an equation's number (global "2" or section-based "1.2") at `loc` without parentheses.
|
||||||
|
/// `loc` is the location of the equation.
|
||||||
|
#let __get-equation-number(loc) = {
|
||||||
|
let number = counter(math.equation).at(loc).at(0)
|
||||||
|
if __FIG_PER_SECTION.at(loc) {
|
||||||
|
let chapter = counter(heading).at(loc).at(0, default: 0)
|
||||||
|
str(chapter) + "." + str(number)
|
||||||
|
} else {
|
||||||
|
str(number)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Numbering function for `math.equation`: "(2)" or, when numbering per
|
||||||
|
/// section, "(1.2)".
|
||||||
|
#let __equation-numbering(..nums) = context {
|
||||||
|
let number = nums.pos().first()
|
||||||
|
if __FIG_PER_SECTION.get() {
|
||||||
|
let chapter = counter(heading).get().at(0, default: 0)
|
||||||
|
// TODO: this is a hack to prevent the numbers from being completely
|
||||||
|
// part of a regex match against math.equation.
|
||||||
|
// It would be better to render math equation numbers as a separate element, so that regexes don't see them at all.
|
||||||
|
[(#box[#chapter].#box[#number])]
|
||||||
|
} else {
|
||||||
|
[(#number)]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns the number of a located figure element as a string, formatted
|
||||||
|
/// according to the current numbering scheme.
|
||||||
|
#let __get-locatable-element-number(element) = context {
|
||||||
|
assert(type(element) == content, message: "can only reference elements of type content")
|
||||||
|
assert(element.func() == figure, message: "referenced element does not have a figure function")
|
||||||
|
__get-figure-number(element, element.location())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Appendix headings carry an "appendix-heading" metadata marker as their
|
||||||
|
/// first child (or as their whole body, when the appendix has no title) and
|
||||||
|
/// are numbered separately from normal headings.
|
||||||
|
#let __is-appendix-heading(item) = {
|
||||||
|
let body = item.body
|
||||||
|
if body.has("children") {
|
||||||
|
body.children.at(0, default: none) == metadata("appendix-heading")
|
||||||
|
} else {
|
||||||
|
body == metadata("appendix-heading")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns the title of an appendix heading element (everything after the
|
||||||
|
/// marker), or `none` if the appendix has no title.
|
||||||
|
#let __appendix-title(item) = {
|
||||||
|
let body = item.body
|
||||||
|
if not body.has("children") { return none }
|
||||||
|
let rest = body.children.slice(1)
|
||||||
|
if rest.len() == 0 { none } else { rest.join() }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns the number (int) of an appendix heading element: its position among
|
||||||
|
/// all appendices, in document order. Must be called in a context.
|
||||||
|
#let __appendix-number(item) = {
|
||||||
|
query(selector(heading).before(item.location(), inclusive: true))
|
||||||
|
.filter(h => __is-appendix-heading(h))
|
||||||
|
.len()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Parses a dotted number such as "12" or "1.12.5" into an array of ints.
|
||||||
|
/// Returns `none` if any part is not purely numeric.
|
||||||
|
#let __parse-number(value) = {
|
||||||
|
let parts = value.split(".")
|
||||||
|
if parts.all(p => p.match(regex("^\\d+$")) != none) {
|
||||||
|
parts.map(int)
|
||||||
|
} else {
|
||||||
|
none
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Sorts `(location, number)` entries. If every number is numeric (optionally
|
||||||
|
/// dotted, e.g. "1.12.5"), sorts component-wise numerically; otherwise falls
|
||||||
|
/// back to plain string ordering.
|
||||||
|
#let __sort-entries(entries) = {
|
||||||
|
let keys = entries.map(e => __parse-number(e.at(1)))
|
||||||
|
if keys.all(k => k != none) {
|
||||||
|
entries.zip(keys).sorted(key: pair => pair.at(1)).map(pair => pair.at(0))
|
||||||
|
} else {
|
||||||
|
entries.sorted(key: e => e.at(1))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// Single-figure handling
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// Figure kinds that are left unnumbered when the document contains only one
|
||||||
|
/// captioned figure of that kind: "Lentelė. Aprašas" and "(žr. lentelė)"
|
||||||
|
/// instead of "1 lentelė. Aprašas" and "(žr. 1 lentelė)". The word used comes
|
||||||
|
/// from the kind's `single-name`.
|
||||||
|
/// Keys are `__figure-key` values.
|
||||||
|
#let __UNNUMBERED_WHEN_SINGLE = ("table", "image")
|
||||||
|
|
||||||
|
/// Whether `fig` is the only captioned figure of its kind in the document and
|
||||||
|
/// its kind is listed in `__UNNUMBERED_WHEN_SINGLE`. Must be called in a context.
|
||||||
|
#let __is-single-unnumbered(fig) = {
|
||||||
|
if __figure-key(fig) not in __UNNUMBERED_WHEN_SINGLE { return false }
|
||||||
|
query(figure.where(kind: fig.kind)).filter(f => f.caption != none).len() == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Capitalizes the first letter of `value` ("lentelė" -> "Lentelė").
|
||||||
|
#let __capitalize(value) = {
|
||||||
|
let first = value.first()
|
||||||
|
upper(first) + value.slice(first.len())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Caption label of a figure element: "1 lentelė." normally, or
|
||||||
|
/// "Lentelė." for a single unnumbered figure.
|
||||||
|
#let __caption-label(fig) = context {
|
||||||
|
let supplement = __figure-supplement-of(fig)
|
||||||
|
if __is-single-unnumbered(fig) {
|
||||||
|
let name = __all-figure-kinds().at(__figure-key(fig)).single-name
|
||||||
|
[#__capitalize(name).]
|
||||||
|
} else {
|
||||||
|
[#__get-figure-number(fig, fig.location()) #supplement.]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// References
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// Returns a number for the given reference target.
|
||||||
|
/// Panics for a figure that is the only one of its kind,
|
||||||
|
/// since such figures have no number.
|
||||||
|
/// - target (label): Label to get the reference number for.
|
||||||
|
#let ref-no(target) = context {
|
||||||
|
if type(target) != label {
|
||||||
|
panic("ref-no expects a label as input")
|
||||||
|
}
|
||||||
|
|
||||||
|
let item = query(target).first()
|
||||||
|
let loc = item.location()
|
||||||
|
let kind = item.func()
|
||||||
|
|
||||||
|
let number = if kind == figure {
|
||||||
|
if __is-single-unnumbered(item) {
|
||||||
|
panic(
|
||||||
|
"ref-no: "
|
||||||
|
+ str(target)
|
||||||
|
+ " is the only "
|
||||||
|
+ __figure-key(item)
|
||||||
|
+ " in the document and is therefore unnumbered; "
|
||||||
|
+ "refer to it with @"
|
||||||
|
+ str(target)
|
||||||
|
+ " (or custom-ref) instead",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
__get-figure-number(item, loc)
|
||||||
|
} else if kind == math.equation {
|
||||||
|
"(" + __get-equation-number(loc) + ")"
|
||||||
|
} else if kind == heading {
|
||||||
|
if __is-appendix-heading(item) {
|
||||||
|
str(__appendix-number(item))
|
||||||
|
} else {
|
||||||
|
counter(heading).at(loc).map(str).join(".")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic("referencing unknown type: " + repr(kind))
|
||||||
|
}
|
||||||
|
|
||||||
|
link(loc, number)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Create a custom reference for multiple targets of the same type.
|
||||||
|
/// - targets (label...): Labels to create a custom reference for.
|
||||||
|
#let custom-ref(..targets) = context {
|
||||||
|
let group-key = none
|
||||||
|
let group-name = none // a string, or a function of the number of mentions
|
||||||
|
let single-name = none // set when the target is a lone, unnumbered figure
|
||||||
|
let entries = () // (location, number) pairs
|
||||||
|
|
||||||
|
for target in targets.pos() {
|
||||||
|
let item = query(target).first()
|
||||||
|
let loc = item.location()
|
||||||
|
|
||||||
|
// (kind key used for grouping, ref-name spec, number)
|
||||||
|
let (key, name, number) = if item.func() == math.equation {
|
||||||
|
("equation", __figure-kinds.equation.ref-name, __get-equation-number(loc))
|
||||||
|
} else if item.func() == figure {
|
||||||
|
let kind = __figure-key(item)
|
||||||
|
let kinds = __all-figure-kinds()
|
||||||
|
if kind not in kinds {
|
||||||
|
panic("unregistered figure kind `" + kind + "`: register it with ktu-paper(figureKinds: ...)")
|
||||||
|
}
|
||||||
|
if __is-single-unnumbered(item) { single-name = kinds.at(kind).single-name }
|
||||||
|
(kind, kinds.at(kind).ref-name, __get-figure-number(item, loc))
|
||||||
|
} else if item.func() == heading and __is-appendix-heading(item) {
|
||||||
|
("appendix", __figure-kinds.appendix.ref-name, str(__appendix-number(item)))
|
||||||
|
} else {
|
||||||
|
panic("referencing unknown type: " + repr(item.func()))
|
||||||
|
}
|
||||||
|
|
||||||
|
if group-key != none and group-key != key {
|
||||||
|
panic("custom-ref does not support grouping different elements together")
|
||||||
|
}
|
||||||
|
group-key = key
|
||||||
|
group-name = name
|
||||||
|
entries.push((loc, number))
|
||||||
|
}
|
||||||
|
|
||||||
|
if entries.len() > 0 {
|
||||||
|
if single-name != none {
|
||||||
|
// The only figure of its kind: no number, e.g. "(žr. lentelė)"
|
||||||
|
[(žr. #link(entries.first().at(0), single-name))]
|
||||||
|
} else {
|
||||||
|
let links = __sort-entries(entries).map(e => link(e.at(0), e.at(1)))
|
||||||
|
let name = if type(group-name) == function { group-name(entries.len()) } else { group-name }
|
||||||
|
[(žr. #links.join(", ") #name)]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Show rule for `@label` references. Equations render as a bare "(1.2)";
|
||||||
|
/// figures delegate to `custom-ref`, so "(žr. 1 pav.)" is built in one place.
|
||||||
|
/// Anything else (headings, citations, unregistered figure kinds) keeps
|
||||||
|
/// Typst's default rendering.
|
||||||
|
#let __format-ref(it) = {
|
||||||
|
let el = it.element
|
||||||
|
if el == none { return it }
|
||||||
|
|
||||||
|
if el.func() == math.equation {
|
||||||
|
let loc = el.location()
|
||||||
|
link(loc, "(" + __get-equation-number(loc) + ")")
|
||||||
|
} else if el.func() == figure and __figure-key(el) in __all-figure-kinds() {
|
||||||
|
custom-ref(it.target)
|
||||||
|
} else if el.func() == heading and __is-appendix-heading(el) {
|
||||||
|
custom-ref(it.target)
|
||||||
|
} else {
|
||||||
|
it
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// Figure layout
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// Formats a figure with a caption and number.
|
||||||
|
#let __format-figure(it) = {
|
||||||
|
let caption = it.caption
|
||||||
|
|
||||||
|
// If caption is not provided, just show the figure body
|
||||||
|
if caption == none { return it.body }
|
||||||
|
|
||||||
|
set text(size: 11pt)
|
||||||
|
|
||||||
|
let caption-line = [*#__caption-label(it)* #caption.body]
|
||||||
|
|
||||||
|
// Tables have captions at the top
|
||||||
|
if it.kind == table {
|
||||||
|
align(left, caption-line)
|
||||||
|
it.body
|
||||||
|
} else {
|
||||||
|
it.body
|
||||||
|
align(center, caption-line)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,256 @@
|
|||||||
|
#import "config.typ": __DEBUG_AUTHOR_TABLE
|
||||||
|
|
||||||
|
/// Wrapper around the table function that returns a KTU style conformant table.
|
||||||
|
/// This includes setting text size to 10 pt.
|
||||||
|
#let ktu-table(..args) = {
|
||||||
|
show table: it => {
|
||||||
|
set text(size: 10pt)
|
||||||
|
// TODO: FIXME line spacing is defined differently
|
||||||
|
set par(leading: 1em - 0.75em) // intervalas tarp eilučių -- 1
|
||||||
|
it
|
||||||
|
}
|
||||||
|
table(
|
||||||
|
..args
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let ktu-author-table(
|
||||||
|
authors: (),
|
||||||
|
alignment: right,
|
||||||
|
namesFirst: true, // if false, roles will be displayed first
|
||||||
|
) = context {
|
||||||
|
// The layout should be a list of lists whose elements are (name, role) pairs.
|
||||||
|
assert(authors.len() > 0, message: "author table must have at least one author")
|
||||||
|
assert(authors.all(it => it.len() == 2), message: "each author entry must be a pair of name and role")
|
||||||
|
|
||||||
|
let frame(color) = (x, y) => (
|
||||||
|
left: 0pt,
|
||||||
|
right: 0pt,
|
||||||
|
top: if y == 0 { 0.5pt + color } else { 0pt },
|
||||||
|
bottom: 0.5pt + color,
|
||||||
|
)
|
||||||
|
set table(
|
||||||
|
inset: 5.4pt,
|
||||||
|
stroke: if __DEBUG_AUTHOR_TABLE.get() {
|
||||||
|
0.5pt + rgb("D4AF37")
|
||||||
|
} else {
|
||||||
|
frame(rgb("D4AF37"))
|
||||||
|
},
|
||||||
|
)
|
||||||
|
show table.cell: it => context {
|
||||||
|
[#it]
|
||||||
|
if it.body == [] {
|
||||||
|
v(10pt)
|
||||||
|
} else {
|
||||||
|
v(0pt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if alignment == center {
|
||||||
|
align(center, table(
|
||||||
|
columns: (198.5pt + 56.7pt),
|
||||||
|
table.header([]),
|
||||||
|
..for author in authors {
|
||||||
|
let (name, role) = author
|
||||||
|
name = [*#name*]
|
||||||
|
if not namesFirst {
|
||||||
|
(role, name) = (name, role)
|
||||||
|
}
|
||||||
|
(
|
||||||
|
align(center)[
|
||||||
|
#set block(below: 8pt)
|
||||||
|
#block[#name]
|
||||||
|
#block[#role]
|
||||||
|
|
||||||
|
],
|
||||||
|
[],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
))
|
||||||
|
} else {
|
||||||
|
align(alignment, table(
|
||||||
|
columns: (198.5pt, 56.7pt),
|
||||||
|
table.header([], []),
|
||||||
|
..for author in authors {
|
||||||
|
let (name, role) = author
|
||||||
|
name = [*#name*]
|
||||||
|
if not namesFirst {
|
||||||
|
(role, name) = (name, role)
|
||||||
|
}
|
||||||
|
(
|
||||||
|
align(left)[
|
||||||
|
#set block(below: 8pt)
|
||||||
|
#block[#name]
|
||||||
|
#block[#role]
|
||||||
|
|
||||||
|
],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
)
|
||||||
|
},
|
||||||
|
))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// This function constructs the title page header block for KTU reports. It includes the university logo, name, subheaders, the main and sub titles of the report.
|
||||||
|
///
|
||||||
|
/// - bigTitle (content): The main title of the report, usually the name of the work. Displayed in 18 pt font.
|
||||||
|
/// - subTitles (): Additional titles or information to be displayed under the main title, such as the type of work. Displayed in 14 pt font. If not provided, defaults to "Rašto darbo tipas".
|
||||||
|
/// - subHeaders (): Additional header information to be displayed under the university name, such as the faculty. If not provided, defaults to "Fakulteto pavadinimas".
|
||||||
|
/// ->
|
||||||
|
#let ktu-title-header-block(
|
||||||
|
bigTitle: highlight[Didelis pavadinimas],
|
||||||
|
subTitles: (),
|
||||||
|
subHeaders: (),
|
||||||
|
) = {
|
||||||
|
let parsedSubtext = if subHeaders.len() > 0 {
|
||||||
|
subHeaders
|
||||||
|
} else {
|
||||||
|
(
|
||||||
|
highlight[Fakulteto pavadinimas],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
let subTitles = if subTitles.len() > 0 {
|
||||||
|
subTitles
|
||||||
|
} else {
|
||||||
|
(
|
||||||
|
highlight[Rašto darbo tipas],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Top of the title page
|
||||||
|
v(20pt)
|
||||||
|
align(center)[
|
||||||
|
#image("assets/ktu-logo.png", width: 2.46cm, height: 2.69cm)
|
||||||
|
#v(25pt)
|
||||||
|
#block[*Kauno technologijos universitetas*]
|
||||||
|
#for value in parsedSubtext {
|
||||||
|
block[#value]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
// The title page information
|
||||||
|
v(91pt)
|
||||||
|
align(center)[
|
||||||
|
#set par(justify: false)
|
||||||
|
#set linebreak(justify: false)
|
||||||
|
#block(text(size: 18pt, hyphenate: false)[*#bigTitle*])
|
||||||
|
#for value in subTitles {
|
||||||
|
block(text(size: 14pt)[#value])
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
#let ktu-heading-page(
|
||||||
|
faculty: highlight[Fakulteto pavadinimas],
|
||||||
|
department: none, // optional
|
||||||
|
title: highlight[Rašto darbo pavadinimas],
|
||||||
|
subtitles: highlight[Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)],
|
||||||
|
authors: (
|
||||||
|
(highlight[Vardenis Pavardenis], highlight[Projekto autorius]),
|
||||||
|
(highlight[Vardenis Pavardenis], highlight[Vadovas]),
|
||||||
|
),
|
||||||
|
place: highlight[Kaunas],
|
||||||
|
year: highlight[#datetime.today().year()],
|
||||||
|
centerAuthors: false,
|
||||||
|
authorNamesFirst: true, // if false, roles will be displayed first
|
||||||
|
) = {
|
||||||
|
let subHeaders = (faculty,)
|
||||||
|
if department != none {
|
||||||
|
subHeaders = (faculty, department)
|
||||||
|
}
|
||||||
|
if type(subtitles) != array {
|
||||||
|
subtitles = (subtitles,)
|
||||||
|
}
|
||||||
|
ktu-title-header-block(
|
||||||
|
subHeaders: subHeaders,
|
||||||
|
bigTitle: title,
|
||||||
|
subTitles: subtitles,
|
||||||
|
)
|
||||||
|
v(94pt)
|
||||||
|
if centerAuthors {
|
||||||
|
ktu-author-table(authors: authors, namesFirst: authorNamesFirst, alignment: center)
|
||||||
|
} else {
|
||||||
|
ktu-author-table(authors: authors, namesFirst: authorNamesFirst)
|
||||||
|
}
|
||||||
|
align(center + bottom, block([*#place, #year*]))
|
||||||
|
}
|
||||||
|
|
||||||
|
#let ktu-heading-page-centered(
|
||||||
|
faculty: highlight[Fakulteto pavadinimas],
|
||||||
|
department: none, // optional
|
||||||
|
title: highlight[Rašto darbo pavadinimas],
|
||||||
|
subtitles: highlight[Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)],
|
||||||
|
authors: (
|
||||||
|
(highlight[Vardenis Pavardenis], highlight[Projekto autorius]),
|
||||||
|
(highlight[Vardenis Pavardenis], highlight[Vadovas]),
|
||||||
|
),
|
||||||
|
authorNamesFirst: true, // if false, roles will be displayed first
|
||||||
|
place: highlight[Kaunas],
|
||||||
|
year: highlight[#datetime.today().year()],
|
||||||
|
) = {
|
||||||
|
ktu-heading-page(
|
||||||
|
faculty: faculty,
|
||||||
|
department: department,
|
||||||
|
title: title,
|
||||||
|
subtitles: subtitles,
|
||||||
|
authors: authors,
|
||||||
|
place: place,
|
||||||
|
year: year,
|
||||||
|
centerAuthors: true,
|
||||||
|
authorNamesFirst: authorNamesFirst,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let ktu-heading-page-normal(
|
||||||
|
faculty: highlight[Fakulteto pavadinimas],
|
||||||
|
department: none, // optional
|
||||||
|
title: highlight[Rašto darbo pavadinimas],
|
||||||
|
subtitles: highlight[Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)],
|
||||||
|
authors: (
|
||||||
|
(highlight[Vardenis Pavardenis], highlight[Projekto autorius]),
|
||||||
|
(highlight[Vardenis Pavardenis], highlight[Vadovas]),
|
||||||
|
),
|
||||||
|
authorNamesFirst: true, // if false, roles will be displayed first
|
||||||
|
place: highlight[Kaunas],
|
||||||
|
year: highlight[#datetime.today().year()],
|
||||||
|
) = {
|
||||||
|
ktu-heading-page(
|
||||||
|
faculty: faculty,
|
||||||
|
department: department,
|
||||||
|
title: title,
|
||||||
|
subtitles: subtitles,
|
||||||
|
authors: authors,
|
||||||
|
place: place,
|
||||||
|
year: year,
|
||||||
|
centerAuthors: false,
|
||||||
|
authorNamesFirst: authorNamesFirst,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let ktu-academic-honestly-declaration-page(
|
||||||
|
faculty: highlight[Informatikos fakultetas],
|
||||||
|
author: highlight[Vardenis Pavardenis],
|
||||||
|
projectTitle: highlight[Projekto pavadinimas],
|
||||||
|
) = {
|
||||||
|
ktu-title-header-block(
|
||||||
|
subHeaders: (faculty, author),
|
||||||
|
bigTitle: projectTitle,
|
||||||
|
subTitles: ("Akademinio sąžiningumo deklaracija",),
|
||||||
|
)
|
||||||
|
v(20pt)
|
||||||
|
[
|
||||||
|
Patvirtinu, kad:
|
||||||
|
+ baigiamąjį projektą parengiau savarankiškai ir sąžiningai, nepažeisdama(s) kitų asmenų autoriaus ar kitų teisių, laikydamasi(s) Lietuvos Respublikos autorių teisių ir gretutinių teisių įstatymo nuostatų, Kauno technologijos universiteto (toliau -- Universitetas) intelektinės nuosavybės valdymo ir perdavimo nuostatų bei Universiteto akademinės etikos kodekse nustatytų etikos reikalavimų;
|
||||||
|
+ baigiamajame projekte visi pateikti duomenys ir tyrimų rezultatai yra teisingi ir gauti teisėtai, nei viena šio projekto dalis nėra plagijuota nuo jokių spausdintinių ar elektroninių šaltinių, visos baigiamojo projekto tekste pateiktos citatos ir nuorodos yra nurodytos literatūros sąraše;
|
||||||
|
+ įstatymų nenumatytų piniginių sumų už baigiamąjį projektą ar jo dalis niekam nesu mokėjęs (-usi);
|
||||||
|
+ suprantu, kad išaiškėjus nesąžiningumo ar kitų asmenų teisių pažeidimo faktui, man bus taikomos akademinės nuobaudos pagal Universitete galiojančią tvarką ir būsiu pašalinta(s) iš Universiteto, o baigiamasis projektas gali būti pateiktas Akademinės etikos ir procedūrų kontrolieriaus tarnybai nagrinėjant galimą akademinės etikos pažeidimą.
|
||||||
|
|
||||||
|
#v(10pt)
|
||||||
|
#h(58%) #author
|
||||||
|
|
||||||
|
#h(58%) _Patvirtinta elektroniniu būdu_
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,549 @@
|
|||||||
|
#import "@preview/codly:2.0.0" as codly
|
||||||
|
#import "config.typ": debug-author-table, enable-heading-experiment, __HEADING_EXPERIMENT, __FIG_PER_SECTION, __UPPERCASE_SECTION_TITLES
|
||||||
|
#import "fragments.typ": (
|
||||||
|
ktu-table,
|
||||||
|
|
||||||
|
// building blocks
|
||||||
|
ktu-author-table, ktu-title-header-block,
|
||||||
|
|
||||||
|
ktu-heading-page, ktu-heading-page-centered, ktu-heading-page-normal,
|
||||||
|
ktu-academic-honestly-declaration-page
|
||||||
|
)
|
||||||
|
#import "figures.typ": (
|
||||||
|
ref-no, custom-ref,
|
||||||
|
|
||||||
|
__caption-label,
|
||||||
|
__reset-figure-counters,
|
||||||
|
__equation-numbering,
|
||||||
|
__normalize-figure-kinds,
|
||||||
|
__USER_FIGURE_KINDS,
|
||||||
|
|
||||||
|
__format-ref,
|
||||||
|
__format-figure,
|
||||||
|
__figure-kinds,
|
||||||
|
|
||||||
|
__is-appendix-heading,
|
||||||
|
__appendix-title,
|
||||||
|
__appendix-number,
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Paruošta pagal "Rašto ..."
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Further reading required:
|
||||||
|
* - Double line spacing | https://github.com/typst/typst/issues/106
|
||||||
|
* - Proposal: change `leading` option to `line-height` | https://github.com/typst/typst/issues/4224
|
||||||
|
*/
|
||||||
|
|
||||||
|
#let __METADATA_HEADING_ALIGN_LEFT = metadata("heading-align-left");
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Insert a heading without a number.
|
||||||
|
///
|
||||||
|
/// Usually used for introductory or summary sections at the start and end.
|
||||||
|
/// - headingElement (heading): The heading's title.
|
||||||
|
/// - alignLeft (bool): Whether the heading should be left-aligned or centered.
|
||||||
|
/// ->
|
||||||
|
#let unnumbered-heading(headingElement, alignLeft: false) = {
|
||||||
|
let fields = headingElement.fields()
|
||||||
|
let body = fields.body
|
||||||
|
let level = fields.at("level", default: 1)
|
||||||
|
|
||||||
|
if alignLeft {
|
||||||
|
body = body + __METADATA_HEADING_ALIGN_LEFT
|
||||||
|
}
|
||||||
|
|
||||||
|
heading(level: level, numbering: none, body)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Insert an appendix (priedas).
|
||||||
|
///
|
||||||
|
/// Appendices are numbered 1, 2, 3, ... in the order they appear in the
|
||||||
|
/// document, so place them in the order they are first mentioned in the text.
|
||||||
|
/// Each appendix should start on a new page: put a `#pagebreak()` before it.
|
||||||
|
/// "N priedas" is written in the top right
|
||||||
|
/// corner. The optional title is written below it like a chapter title (bold),
|
||||||
|
/// exactly as given: start it with a capital letter, the rest in lowercase.
|
||||||
|
/// Appendices are included in the table of contents.
|
||||||
|
///
|
||||||
|
/// Give it a label to refer to it from the text: `#appendix-item[Pavadinimas] <pr-konfig>`
|
||||||
|
/// and then `@pr-konfig` or `#custom-ref(<pr-konfig>)` gives "(žr. 1 priedą)".
|
||||||
|
/// - title (content | none): Optional appendix title.
|
||||||
|
/// -> heading
|
||||||
|
#let appendix-item(..title) = {
|
||||||
|
assert(
|
||||||
|
title.named().len() == 0 and title.pos().len() <= 1,
|
||||||
|
message: "appendix-item takes at most one argument: the appendix title",
|
||||||
|
)
|
||||||
|
let title = title.pos().at(0, default: none)
|
||||||
|
heading(
|
||||||
|
if title == none { metadata("appendix-heading") } else { metadata("appendix-heading") + title },
|
||||||
|
level: 2,
|
||||||
|
numbering: none,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Utility function to round numbers with padded zeros
|
||||||
|
#let round-and-pad(number, decimals) = {
|
||||||
|
let rounded = calc.round(number, digits: decimals)
|
||||||
|
let s = str(rounded)
|
||||||
|
let parts = s.split(".")
|
||||||
|
let integer-part = parts.at(0)
|
||||||
|
let decimal-part = if parts.len() == 2 { parts.at(1) } else { "" }
|
||||||
|
|
||||||
|
let padded-decimal = if decimals > 0 {
|
||||||
|
let current-decimal-length = decimal-part.len()
|
||||||
|
let padding-needed = decimals - current-decimal-length
|
||||||
|
let trailing-zeros = ""
|
||||||
|
for _ in range(padding-needed) {
|
||||||
|
trailing-zeros = trailing-zeros + "0"
|
||||||
|
}
|
||||||
|
if decimal-part == "" {
|
||||||
|
"." + trailing-zeros
|
||||||
|
} else {
|
||||||
|
"." + decimal-part + trailing-zeros
|
||||||
|
}.slice(0, decimals + 1)
|
||||||
|
} else {
|
||||||
|
""
|
||||||
|
}
|
||||||
|
integer-part + padded-decimal
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// Returns a KTU template-conformant outline.
|
||||||
|
/// - depth (int | none): Same as outline depth.
|
||||||
|
/// - indent (auto | function | relative): Same as outline indent.
|
||||||
|
/// - target (function | label | location | selector): Same as outline target.
|
||||||
|
/// - title (auto | content | none): Same as outline title.
|
||||||
|
/// -> outline
|
||||||
|
#let __ktu_outline(
|
||||||
|
depth: none,
|
||||||
|
indent: 0em, // Disable the default outline indenting
|
||||||
|
target: heading,
|
||||||
|
title: auto,
|
||||||
|
) = {
|
||||||
|
// TODO: įtrauka
|
||||||
|
set block(spacing: 0em)
|
||||||
|
// genius solution by @two_horus on Discord (364397430059302912)
|
||||||
|
show outline: o => context {
|
||||||
|
// If it's a heading, show the default outline with bold text
|
||||||
|
if (o.target == selector(heading)) {
|
||||||
|
// Determine whether to uppercase section titles based on the global setting
|
||||||
|
let isUpper = __UPPERCASE_SECTION_TITLES.get()
|
||||||
|
|
||||||
|
// Define known target widths based on KTU template
|
||||||
|
let targets = (0.64cm, 0.96cm, 1.28cm, 1.6cm, 1.92cm)
|
||||||
|
|
||||||
|
// Apply custom outline entry formatting
|
||||||
|
show outline.entry: it => {
|
||||||
|
// Recompute the gap based on the prefix content, so that the outline entry is indented
|
||||||
|
// from the left regardless of the length of the prefix (based on the requirement)
|
||||||
|
let isAppendix = __is-appendix-heading(it.element)
|
||||||
|
|
||||||
|
// Appendices are listed as "N priedas. Pavadinimas", the number being the prefix
|
||||||
|
let prefixContent = if isAppendix {
|
||||||
|
context [#__appendix-number(it.element)]
|
||||||
|
} else {
|
||||||
|
it.prefix()
|
||||||
|
}
|
||||||
|
let measurement = measure(prefixContent)
|
||||||
|
let target = if isAppendix { 0.64cm } else { targets.at(it.level - 1, default: 0.64cm) }
|
||||||
|
let newGap = target - measurement.width
|
||||||
|
|
||||||
|
// Uppercase body if need be
|
||||||
|
let bodyContent = it.element.body
|
||||||
|
if isAppendix {
|
||||||
|
let title = __appendix-title(it.element)
|
||||||
|
let name = __figure-kinds.appendix.supplement
|
||||||
|
bodyContent = if title == none { [#name] } else { [#name. #title] }
|
||||||
|
} else if isUpper and (it.level == 1 or it.element.numbering == none) {
|
||||||
|
bodyContent = upper(bodyContent)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reconstruct the it.inner content with the new body
|
||||||
|
let formattedInner = {
|
||||||
|
bodyContent
|
||||||
|
[ ] // whitespace is required for backwards compat
|
||||||
|
box(width: 1fr, it.fill)
|
||||||
|
[ ] // whitespace is required for backwards compat
|
||||||
|
it.page()
|
||||||
|
}
|
||||||
|
|
||||||
|
link(
|
||||||
|
it.element.location(),
|
||||||
|
it.indented(prefixContent, formattedInner, gap: newGap),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
show outline.entry.where(level: 1): e => {
|
||||||
|
strong(e)
|
||||||
|
}
|
||||||
|
o
|
||||||
|
|
||||||
|
// If it's an image
|
||||||
|
} else if (o.target == figure.where(kind: image)) {
|
||||||
|
show outline.entry: it => link(
|
||||||
|
it.element.location(),
|
||||||
|
it.indented(
|
||||||
|
[*#__caption-label(it.element)*],
|
||||||
|
[ #it.inner()], gap: 0pt
|
||||||
|
),
|
||||||
|
)
|
||||||
|
o
|
||||||
|
|
||||||
|
// If it is a table, show table formatting
|
||||||
|
} else if (o.target == figure.where(kind: table)) {
|
||||||
|
show outline.entry: it => link(
|
||||||
|
it.element.location(),
|
||||||
|
it.indented(
|
||||||
|
[*#__caption-label(it.element)*],
|
||||||
|
[ #it.inner()], gap: 0pt
|
||||||
|
),
|
||||||
|
)
|
||||||
|
o
|
||||||
|
|
||||||
|
// If it is a table, show table formatting
|
||||||
|
} else if (o.target == figure.where(kind: raw)) {
|
||||||
|
show outline.entry: it => link(
|
||||||
|
it.element.location(),
|
||||||
|
it.indented(
|
||||||
|
[*#__caption-label(it.element)*],
|
||||||
|
[ #it.inner()], gap: 0pt
|
||||||
|
),
|
||||||
|
)
|
||||||
|
o
|
||||||
|
|
||||||
|
// Otherwise, try to determine what kind of outline it is
|
||||||
|
} else {
|
||||||
|
|
||||||
|
/*[
|
||||||
|
#o.target #type(o.target),
|
||||||
|
#(o.target == "heading")
|
||||||
|
#(o.target == heading)
|
||||||
|
#(o.target == figure.where(kind: heading))
|
||||||
|
#(o.target == heading.where())
|
||||||
|
#(o.target == selector(heading))
|
||||||
|
]*/
|
||||||
|
|
||||||
|
// Any other figure kind (generally, user defined kinds)
|
||||||
|
show outline.entry: it => link(
|
||||||
|
it.element.location(),
|
||||||
|
it.indented(
|
||||||
|
[*#__caption-label(it.element)*],
|
||||||
|
[ #it.inner()], gap: 0pt
|
||||||
|
),
|
||||||
|
)
|
||||||
|
o
|
||||||
|
}
|
||||||
|
}
|
||||||
|
outline(depth: depth, indent: indent, target: target, title: title)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Doesn't work in Typst 0.12.0 due to relative paths
|
||||||
|
#let bibliography-list(path) = {
|
||||||
|
bibliography(path, title: "Literatūros sąrašas", full: true)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns a KTU style conformant outline.
|
||||||
|
/// - depth (int | none): Same as outline depth.
|
||||||
|
/// - indent (auto | function | relative): Same as outline indent.
|
||||||
|
/// - target (function | label | location | selector): Same as outline target.
|
||||||
|
/// - title (auto | content | none): Same as outline title.
|
||||||
|
/// -> outline
|
||||||
|
#let ktu-outline(
|
||||||
|
depth: none,
|
||||||
|
indent: 0em, // Disable the default outline indenting
|
||||||
|
target: heading,
|
||||||
|
title: auto,
|
||||||
|
) = {
|
||||||
|
__ktu_outline(depth: depth, indent: indent, target: target, title: title)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let ktu-table-of-contents(depth: 3) = {
|
||||||
|
ktu-outline(target: heading, title: "Turinys", depth: depth)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let ktu-table-list() = {
|
||||||
|
ktu-outline(title: heading("Lentelių sąrašas", outlined: true), target: figure.where(kind: table))
|
||||||
|
}
|
||||||
|
|
||||||
|
#let ktu-picture-list() = {
|
||||||
|
ktu-outline(title: heading("Paveikslų sąrašas", outlined: true), target: figure.where(kind: image))
|
||||||
|
}
|
||||||
|
|
||||||
|
#let ktu-code-list() = {
|
||||||
|
ktu-outline(title: heading("Kodo fragmentų sąrašas", outlined: true), target: figure.where(kind: raw))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Define a custom outline for a specific figure type.
|
||||||
|
/// This function creates an outline entry with a specified title and figure type.
|
||||||
|
/// The outline entry will link to the figure of the specified type.
|
||||||
|
/// - title (str): Title of the outline
|
||||||
|
/// - kind (str): Type of the figure
|
||||||
|
#let custom-list(title, kind) = {
|
||||||
|
__ktu_outline(title: heading(title, outlined: true), target: figure.where(kind: kind))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// `code` option defaults for the library entrypoint.
|
||||||
|
#let __CODE_DEFAULTS = (
|
||||||
|
font: "Hack",
|
||||||
|
spacing: 80%,
|
||||||
|
fill: white,
|
||||||
|
stroke: 0.5pt + black,
|
||||||
|
numbers: true,
|
||||||
|
display-name: false,
|
||||||
|
display-icon: false,
|
||||||
|
)
|
||||||
|
|
||||||
|
/// Applies the code block styling to the body.
|
||||||
|
/// - code (dictionary | none): Options, merged over `__CODE_DEFAULTS`.
|
||||||
|
/// `none` leaves raw blocks untouched.
|
||||||
|
#let __setup-code(code, body) = {
|
||||||
|
if code == none {
|
||||||
|
return body
|
||||||
|
}
|
||||||
|
let opts = __CODE_DEFAULTS + code
|
||||||
|
let known = __CODE_DEFAULTS.keys()
|
||||||
|
for key in opts.keys() {
|
||||||
|
assert(
|
||||||
|
key in known,
|
||||||
|
message: "ktu-paper: unknown `code` option \"" + key + "\", expected one of: " + known.join(", "),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
show raw.where(block: true): codly.new
|
||||||
|
show: codly.set_(number-enabled: opts.numbers)
|
||||||
|
show: codly.line-set_(fill: opts.fill, stroke: opts.stroke)
|
||||||
|
show: codly.lang-set_(
|
||||||
|
display-name: opts.display-name,
|
||||||
|
display-icon: opts.display-icon,
|
||||||
|
)
|
||||||
|
show raw: set text(font: opts.font, spacing: opts.spacing)
|
||||||
|
body
|
||||||
|
}
|
||||||
|
|
||||||
|
#let __page_rules(font: "Times New Roman", body) = {
|
||||||
|
// Page size and margins
|
||||||
|
set page(
|
||||||
|
paper: "a4",
|
||||||
|
width: 210mm,
|
||||||
|
height: 297mm,
|
||||||
|
margin: (
|
||||||
|
left: 30mm,
|
||||||
|
right: 10mm,
|
||||||
|
bottom: 20mm,
|
||||||
|
top: 20mm,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
set page(width: 595pt, height: 842pt)
|
||||||
|
|
||||||
|
// Numbering rules
|
||||||
|
set page(numbering: none, number-align: right)
|
||||||
|
|
||||||
|
// Use Lithuanian quotes
|
||||||
|
set smartquote(quotes: "„“")
|
||||||
|
|
||||||
|
// Heading numbering
|
||||||
|
set heading(numbering: "1.")
|
||||||
|
|
||||||
|
// Number equations
|
||||||
|
set math.equation(numbering: __equation-numbering)
|
||||||
|
|
||||||
|
// Set text font
|
||||||
|
set text(
|
||||||
|
font: font,
|
||||||
|
size: 12pt,
|
||||||
|
lang: "lt",
|
||||||
|
// Change where the bounding box is drawn for the text
|
||||||
|
top-edge: "ascender",
|
||||||
|
bottom-edge: "descender",
|
||||||
|
kerning: false, // Disable kerning
|
||||||
|
)
|
||||||
|
|
||||||
|
// Text line interval, defined differently in Typst
|
||||||
|
let leading = 1.15em // Your line spacing (1, 1.5, 2, etc.)
|
||||||
|
let leading = leading - 0.75em // "Normalization"
|
||||||
|
set par(leading: leading)
|
||||||
|
|
||||||
|
// Indentation for lists and enumerations
|
||||||
|
set enum(indent: 12pt)
|
||||||
|
set list(indent: 12pt)
|
||||||
|
|
||||||
|
body
|
||||||
|
}
|
||||||
|
|
||||||
|
#let setup-code(body, ..ignored) = body
|
||||||
|
|
||||||
|
#let setup-page(
|
||||||
|
font: "Times New Roman",
|
||||||
|
uppercaseSectionTitles: false,
|
||||||
|
unnumberedHeadingAlignment: center,
|
||||||
|
body,
|
||||||
|
) = {
|
||||||
|
show: __page_rules.with(font: font)
|
||||||
|
|
||||||
|
// Pagal formaliuosius rašto darbų reikalavimus
|
||||||
|
|
||||||
|
// Tarpas tarp teksto pastraipų
|
||||||
|
set par(spacing: 10pt)
|
||||||
|
set block(below: 10pt)
|
||||||
|
|
||||||
|
// Teksto lygiuotė, abipusė
|
||||||
|
set par(justify: true)
|
||||||
|
set linebreak(justify: true)
|
||||||
|
|
||||||
|
let maybe-uppercase(body) = {
|
||||||
|
if uppercaseSectionTitles {
|
||||||
|
upper(body)
|
||||||
|
} else {
|
||||||
|
body
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Antraštės
|
||||||
|
// Force them into blocks so they don't count as paragraphs
|
||||||
|
show heading: it => {
|
||||||
|
// Align everything left
|
||||||
|
set align(left)
|
||||||
|
|
||||||
|
// Visų antraščių teksto dydis vienodas
|
||||||
|
// Visų antraščių teksto šifras paryškintas
|
||||||
|
set text(size: 12pt)
|
||||||
|
set block(below: 10pt)
|
||||||
|
|
||||||
|
let useExperiment = __HEADING_EXPERIMENT.get()
|
||||||
|
|
||||||
|
// TODO: intervalas tarp eilučių – 1,15 kiekvienai antraštei
|
||||||
|
|
||||||
|
// Priedas: kiekvienas pradedamas naujame lape, dešiniajame viršutiniame
|
||||||
|
// kampe rašoma "N priedas", pavadinimas (jei yra) – kaip skyriaus pavadinimas
|
||||||
|
if __is-appendix-heading(it) {
|
||||||
|
align(right, block(below: 10pt, text(weight: "regular")[
|
||||||
|
#__appendix-number(it) #__figure-kinds.appendix.supplement
|
||||||
|
]))
|
||||||
|
let title = __appendix-title(it)
|
||||||
|
if title != none {
|
||||||
|
block(below: 10pt, title)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Antraštė be nr.
|
||||||
|
if it.numbering == none {
|
||||||
|
// Centruota lygiuotė by default, but can be overridden by the user
|
||||||
|
let explicitlyAlignLeft = (
|
||||||
|
it.body.has("children")
|
||||||
|
and it.body.children.len() > 1
|
||||||
|
and it.body.children.at(1) == __METADATA_HEADING_ALIGN_LEFT
|
||||||
|
)
|
||||||
|
|
||||||
|
// If the user explicitly set alignLeft to true, we should align left regardless of the global setting
|
||||||
|
let targetAlign = if explicitlyAlignLeft { left } else { unnumberedHeadingAlignment }
|
||||||
|
|
||||||
|
set align(targetAlign)
|
||||||
|
|
||||||
|
// atstumas prieš ir po antraštės - 10 pt
|
||||||
|
block[#maybe-uppercase(it.body)]
|
||||||
|
if useExperiment {
|
||||||
|
v(10pt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skyrius
|
||||||
|
if it.numbering != none and it.level == 1 {
|
||||||
|
// abipusė lygiuotė
|
||||||
|
set par(justify: true)
|
||||||
|
|
||||||
|
// Reset figure counters if numbering per section is enabled
|
||||||
|
if __FIG_PER_SECTION.get() {
|
||||||
|
__reset-figure-counters()
|
||||||
|
}
|
||||||
|
|
||||||
|
// po antraštės - 10 pt
|
||||||
|
block[#counter(heading).display() #maybe-uppercase(it.body)]
|
||||||
|
if useExperiment {
|
||||||
|
v(10pt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Poskyris ir skyrelis
|
||||||
|
if it.numbering != none and it.level != 1 {
|
||||||
|
// abipusė lygiuotė
|
||||||
|
set par(justify: true)
|
||||||
|
|
||||||
|
// prieš ir po antraštės - 10 pt
|
||||||
|
if useExperiment {
|
||||||
|
v(10pt)
|
||||||
|
}
|
||||||
|
block[#counter(heading).display() #it.body]
|
||||||
|
if useExperiment {
|
||||||
|
v(10pt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reference style and numbering
|
||||||
|
show ref: it => __format-ref(it)
|
||||||
|
|
||||||
|
// Figure captions and numbering
|
||||||
|
show figure: it => __format-figure(it)
|
||||||
|
|
||||||
|
// Bibliography citing style
|
||||||
|
set bibliography(style: "assets/iso690-numeric-lt.csl")
|
||||||
|
|
||||||
|
// Block equations are left-aligned
|
||||||
|
show math.equation.where(block: true): it => {
|
||||||
|
align(left, it)
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Configure the template for a KTU paper.
|
||||||
|
/// - font (str): Text font to use for the paper.
|
||||||
|
/// - figureNumberingPerSection (bool): Whether to number figures per section rather than globally.
|
||||||
|
/// - uppercaseSectionTitles (bool): Whether to uppercase section titles.
|
||||||
|
/// - unnumberedHeadingAlignment (alignment): Alignment for unnumbered headings.
|
||||||
|
/// - figureKinds (dictionary): Extra figure kinds, e.g.
|
||||||
|
/// `(command: (supplement: "komanda", ref-name: "komanda", single-name: "komanda"))`.
|
||||||
|
/// Use them with `figure(kind: "command", ...)`. Keys:
|
||||||
|
/// - `supplement` (required): text after the number in captions, e.g. "1 komanda.".
|
||||||
|
/// - `ref-name`: text used in references, e.g. "(žr. 1 komanda)". Defaults to `supplement`.
|
||||||
|
/// Can also be a function `count => string`, called with the number of elements
|
||||||
|
/// referenced together, for kinds whose wording depends on it, e.g.
|
||||||
|
/// `count => if count == 1 { "komandą" } else { "komandas" }`.
|
||||||
|
/// - `single-name`: full word used when the figure is the only one of its kind
|
||||||
|
/// and is left unnumbered, e.g. "Komanda." and "(žr. komanda)". Defaults to `supplement`.
|
||||||
|
/// Currently only tables and images are left unnumbered when single, so this only matters for kinds added there.
|
||||||
|
/// - code (dictionary | none): Code block configuration, or `none` to leave raw blocks unstyled. Keys:
|
||||||
|
/// - `font` (str): Monospace font. Defaults to "Hack".
|
||||||
|
/// - `spacing` (relative): Word spacing of code text. Defaults to `80%`.
|
||||||
|
/// - `fill` (paint): Background of code lines. Defaults to `white`.
|
||||||
|
/// - `stroke` (stroke | none): Outline around the code block. Defaults to `0.5pt + black`; `none` removes it.
|
||||||
|
/// - `numbers` (bool): Show line numbers. Defaults to `true`.
|
||||||
|
/// - `display-name` (bool): Show the language name badge. Defaults to `false`.
|
||||||
|
/// - `display-icon` (bool): Show the language icon badge. Defaults to `false`.
|
||||||
|
#let ktu-paper(
|
||||||
|
font: "Times New Roman",
|
||||||
|
figureNumberingPerSection: false,
|
||||||
|
figureKinds: (:),
|
||||||
|
code: (:),
|
||||||
|
// Not sure about formal conformity of deviating
|
||||||
|
// from the defaults of the next options,
|
||||||
|
// but some modules may require them
|
||||||
|
uppercaseSectionTitles: false,
|
||||||
|
unnumberedHeadingAlignment: center,
|
||||||
|
body,
|
||||||
|
) = context {
|
||||||
|
show: setup-page.with(
|
||||||
|
font: font,
|
||||||
|
uppercaseSectionTitles: uppercaseSectionTitles,
|
||||||
|
unnumberedHeadingAlignment: unnumberedHeadingAlignment,
|
||||||
|
)
|
||||||
|
__FIG_PER_SECTION.update(figureNumberingPerSection)
|
||||||
|
__USER_FIGURE_KINDS.update(__normalize-figure-kinds(figureKinds))
|
||||||
|
__UPPERCASE_SECTION_TITLES.update(uppercaseSectionTitles)
|
||||||
|
__setup-code(code, body)
|
||||||
|
}
|
||||||
@@ -1,738 +0,0 @@
|
|||||||
#import "@preview/wrap-it:0.1.0": wrap-content
|
|
||||||
#import "@preview/codly:1.0.0": codly, codly-init
|
|
||||||
|
|
||||||
// Laboratorinio darbo ataskaita
|
|
||||||
//
|
|
||||||
|
|
||||||
#let unnumbered-heading(text) = {
|
|
||||||
set heading(numbering: none)
|
|
||||||
[#text]
|
|
||||||
}
|
|
||||||
|
|
||||||
#let bibliography-list(path) = {
|
|
||||||
bibliography(path, title: "Literatūros sąrašas", full: true)
|
|
||||||
}
|
|
||||||
|
|
||||||
#let table-list() = {
|
|
||||||
outline(title: heading("Lentelių sąrašas", outlined: true), target: figure.where(kind: table))
|
|
||||||
}
|
|
||||||
|
|
||||||
#let picture-list() = {
|
|
||||||
outline(title: heading("Paveikslų sąrašas", outlined: true), target: figure.where(kind: image))
|
|
||||||
}
|
|
||||||
|
|
||||||
#let setup-code(body) = {
|
|
||||||
show: codly-init.with()
|
|
||||||
codly(
|
|
||||||
fill: white,
|
|
||||||
zebra-fill: none,
|
|
||||||
stroke: none,
|
|
||||||
display-name: false,
|
|
||||||
display-icon: false,
|
|
||||||
)
|
|
||||||
body
|
|
||||||
}
|
|
||||||
|
|
||||||
#let setup-page(body) = {
|
|
||||||
// Pagal formaliuosius rašto darbų reikalavimus
|
|
||||||
|
|
||||||
|
|
||||||
set page(
|
|
||||||
// Puslapio matmenys
|
|
||||||
paper: "a4",
|
|
||||||
width: 210mm,
|
|
||||||
height: 297mm,
|
|
||||||
|
|
||||||
numbering: none,
|
|
||||||
number-align: right,
|
|
||||||
|
|
||||||
// paraščių dydžiai
|
|
||||||
margin: (
|
|
||||||
right: 10mm,
|
|
||||||
left: 30mm,
|
|
||||||
bottom: 20mm,
|
|
||||||
top: 20mm
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Bendrasis teksto šriftas
|
|
||||||
set text(
|
|
||||||
font: "Times New Roman",
|
|
||||||
size: 12pt,
|
|
||||||
lang: "lt",
|
|
||||||
//style: "normal",
|
|
||||||
//weight: "regular",
|
|
||||||
//spacing: 200%
|
|
||||||
)
|
|
||||||
|
|
||||||
// TODO: investigate paragraphs
|
|
||||||
|
|
||||||
|
|
||||||
// Tarp eilučių paragrafe
|
|
||||||
|
|
||||||
// TODO: intervalas tarp eilučių is defined differently in Typst
|
|
||||||
|
|
||||||
set par(
|
|
||||||
leading: 0.65em,
|
|
||||||
justify: true
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
// Tarp paragrafų
|
|
||||||
set block(below: 10pt)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Antraštės
|
|
||||||
show heading: it => [
|
|
||||||
|
|
||||||
// Align everything left
|
|
||||||
#set align(left)
|
|
||||||
|
|
||||||
// Visų antraščių teksto dydis vienodas
|
|
||||||
// Visų antraščių teksto šifras paryškintas
|
|
||||||
#set text(size: 12pt)
|
|
||||||
|
|
||||||
// TODO: intervalas tarp eilučių – 1,15 kiekvienai antraštei
|
|
||||||
|
|
||||||
// Antraštė be nr.
|
|
||||||
#if it.numbering == none {
|
|
||||||
// Rašoma naujame puslapyje
|
|
||||||
//pagebreak()
|
|
||||||
|
|
||||||
// Centruota lygiuotė
|
|
||||||
set align(center)
|
|
||||||
|
|
||||||
// atstumas prieš ir po antraštės - 10 pt
|
|
||||||
v(10pt)
|
|
||||||
[#it.body]
|
|
||||||
v(10pt)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Skyrius
|
|
||||||
#if it.numbering != none and it.level == 1 {
|
|
||||||
// Rašoma naujame puslapyje
|
|
||||||
//pagebreak()
|
|
||||||
|
|
||||||
// abipusė lygiuotė
|
|
||||||
set par(justify: true)
|
|
||||||
|
|
||||||
// po antraštės - 10 pt
|
|
||||||
[#counter(heading).display() #it.body]
|
|
||||||
v(10pt)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Poskyris ir skyrelis
|
|
||||||
#if it.numbering != none and it.level != 1 {
|
|
||||||
// abipusė lygiuotė
|
|
||||||
set par(justify: true)
|
|
||||||
|
|
||||||
// prieš ir po antraštės - 10 pt
|
|
||||||
v(10pt)
|
|
||||||
[#counter(heading).display() #it.body]
|
|
||||||
v(10pt)
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Nustatom paveikslėlius ir figūras
|
|
||||||
set figure.caption(separator: [.])
|
|
||||||
show figure.caption: it => [
|
|
||||||
#let supplement = it.supplement
|
|
||||||
#if it.kind == image {
|
|
||||||
supplement = "pav"
|
|
||||||
} else if it.kind == table {
|
|
||||||
supplement = "lentelė"
|
|
||||||
} else {
|
|
||||||
supplement = [#it.kind]
|
|
||||||
}
|
|
||||||
*#it.counter.display(it.numbering) #supplement#it.separator* #it.body
|
|
||||||
]
|
|
||||||
|
|
||||||
// Lentelės pirma eilutė
|
|
||||||
show table.cell.where(y: 0): it => [
|
|
||||||
#set align(left)
|
|
||||||
#set par(justify: false)
|
|
||||||
#set text(size: 10pt) // Šrifto dydis
|
|
||||||
#v(3pt)
|
|
||||||
// Paryškintas
|
|
||||||
*#it*
|
|
||||||
#v(3pt)
|
|
||||||
]
|
|
||||||
|
|
||||||
show table.cell: it => [
|
|
||||||
#set align(left)
|
|
||||||
#set par(justify: false)
|
|
||||||
#set text(size: 10pt)
|
|
||||||
#v(3pt)
|
|
||||||
#it
|
|
||||||
#v(3pt)
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
// Code
|
|
||||||
show raw: set text(font: "Hack", spacing: 80%)
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
show outline.where(target: figure.where(kind: image)): it => {
|
|
||||||
it.fields()
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Use Lithuanian quotes
|
|
||||||
set smartquote(quotes: "„“")
|
|
||||||
|
|
||||||
set heading(numbering: "1.")
|
|
||||||
|
|
||||||
// Set bibliography and citing style
|
|
||||||
set bibliography(style: "Assets/iso690-numeric-lt.csl")
|
|
||||||
|
|
||||||
// Return the body
|
|
||||||
body
|
|
||||||
}
|
|
||||||
|
|
||||||
#let lab-report(
|
|
||||||
title,
|
|
||||||
subTitles,
|
|
||||||
type: none,
|
|
||||||
authors: none,
|
|
||||||
recipients: none,
|
|
||||||
recipientRole: none,
|
|
||||||
authorRole: none,
|
|
||||||
body
|
|
||||||
) = {
|
|
||||||
show: setup-page.with()
|
|
||||||
|
|
||||||
// Title page
|
|
||||||
[
|
|
||||||
// Top of the title page
|
|
||||||
#v(4pt)
|
|
||||||
#align(center)[
|
|
||||||
#image("Assets/ktu-logo.png", width: 2.46cm, height: 2.69cm)
|
|
||||||
#v(26pt)*Kauno technologijos universitetas*
|
|
||||||
#v(4pt)Informatikos fakultetas
|
|
||||||
#v(94pt)
|
|
||||||
]
|
|
||||||
|
|
||||||
// The title page information
|
|
||||||
#align(center)[
|
|
||||||
#set block(below: 16pt)
|
|
||||||
#text(size: 18pt)[*#title*]
|
|
||||||
#v(4pt)
|
|
||||||
#for subTitle in subTitles {
|
|
||||||
[
|
|
||||||
#v(-5pt)
|
|
||||||
#text(size: 14pt)[#subTitle]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
#v(100pt)
|
|
||||||
]
|
|
||||||
|
|
||||||
// Written by and intended for
|
|
||||||
// TODO: support multiple authors
|
|
||||||
#v(15pt)
|
|
||||||
#align(left)[
|
|
||||||
#for author in authors {
|
|
||||||
[
|
|
||||||
//#v(-5pt)
|
|
||||||
#h(300pt)*#author*
|
|
||||||
#parbreak()
|
|
||||||
]
|
|
||||||
}
|
|
||||||
#h(300pt)#authorRole
|
|
||||||
#v(12pt)
|
|
||||||
#for recipient in recipients {
|
|
||||||
[
|
|
||||||
//#v(-5pt)
|
|
||||||
#h(300pt)*#recipient*
|
|
||||||
#parbreak()
|
|
||||||
]
|
|
||||||
}
|
|
||||||
#parbreak()
|
|
||||||
#h(300pt)#recipientRole
|
|
||||||
]
|
|
||||||
|
|
||||||
// Footer of place where it was written and year
|
|
||||||
#align(center+bottom)[
|
|
||||||
*Kaunas, #datetime.today().year()*
|
|
||||||
]
|
|
||||||
|
|
||||||
// Begin numbering from the outline
|
|
||||||
#set page(
|
|
||||||
numbering: "1"
|
|
||||||
)
|
|
||||||
|
|
||||||
#outline(
|
|
||||||
title: "Turinys",
|
|
||||||
target: heading
|
|
||||||
)
|
|
||||||
|
|
||||||
#pagebreak()
|
|
||||||
|
|
||||||
#body
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// A template function to create a stylized report
|
|
||||||
#let ataskaita(
|
|
||||||
title,
|
|
||||||
subTitles,
|
|
||||||
type: none,
|
|
||||||
authors: none,
|
|
||||||
recipients: none,
|
|
||||||
recipientRole: none,
|
|
||||||
authorRole: none,
|
|
||||||
body
|
|
||||||
) = {
|
|
||||||
|
|
||||||
// Setup page properties
|
|
||||||
set page(
|
|
||||||
paper: "a4",
|
|
||||||
width: 210mm,
|
|
||||||
height: 297mm,
|
|
||||||
numbering: none,
|
|
||||||
number-align: right,
|
|
||||||
margin: (
|
|
||||||
right: 10mm,
|
|
||||||
left: 30mm,
|
|
||||||
bottom: 20mm,
|
|
||||||
top: 20mm
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
set par(
|
|
||||||
leading: 1.15em
|
|
||||||
)
|
|
||||||
|
|
||||||
set par(
|
|
||||||
leading: 6pt
|
|
||||||
)
|
|
||||||
|
|
||||||
show: all => [
|
|
||||||
#set text(
|
|
||||||
font: "Times New Roman",
|
|
||||||
size: 12pt,
|
|
||||||
style: "normal",
|
|
||||||
weight: "regular",
|
|
||||||
spacing: 200%
|
|
||||||
)
|
|
||||||
#all
|
|
||||||
]
|
|
||||||
|
|
||||||
// Nustatom visus paragrafus
|
|
||||||
show heading: it => [
|
|
||||||
#set align(left)
|
|
||||||
#set text(
|
|
||||||
font: "Times New Roman",
|
|
||||||
size: 12pt
|
|
||||||
)
|
|
||||||
#counter(heading).display() #it.body
|
|
||||||
#v(0.35cm)
|
|
||||||
]
|
|
||||||
|
|
||||||
show heading.where(numbering: none): it => [
|
|
||||||
#set align(center)
|
|
||||||
#set text(
|
|
||||||
font: "Times New Roman",
|
|
||||||
size: 12pt
|
|
||||||
)
|
|
||||||
#it.body
|
|
||||||
];
|
|
||||||
|
|
||||||
// Setup figures
|
|
||||||
set figure.caption(separator: [.])
|
|
||||||
show figure.caption: it => [
|
|
||||||
#let supplement = it.supplement
|
|
||||||
#if it.kind == image {
|
|
||||||
supplement = "pav"
|
|
||||||
}
|
|
||||||
#if it.kind == table {
|
|
||||||
supplement = "lentelė"
|
|
||||||
}
|
|
||||||
#it.counter.display(it.numbering) #supplement#it.separator #it.body
|
|
||||||
]
|
|
||||||
|
|
||||||
// Setup heading numbering
|
|
||||||
set heading(numbering: "1.")
|
|
||||||
|
|
||||||
// Use Lithuanian quotes
|
|
||||||
set smartquote(quotes: "„“")
|
|
||||||
|
|
||||||
// Set bibliography and citing style
|
|
||||||
set bibliography(style: "Assets/iso690-numeric-lt.csl")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Title page
|
|
||||||
[
|
|
||||||
// Top of the title page
|
|
||||||
#v(20pt)
|
|
||||||
#align(center)[
|
|
||||||
#image("Assets/ktu-logo.png", width: 2.46cm, height: 2.69cm)
|
|
||||||
#v(20pt)*Kauno technologijos universitetas*
|
|
||||||
#v(0pt)Informatikos fakultetas
|
|
||||||
#v(83pt)
|
|
||||||
]
|
|
||||||
|
|
||||||
// The title page information
|
|
||||||
#align(center)[
|
|
||||||
#text(size: 18pt)[*#title*]
|
|
||||||
#for subTitle in subTitles {
|
|
||||||
[
|
|
||||||
#v(-5pt)
|
|
||||||
#text(size: 14pt)[#subTitle]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
#v(100pt)
|
|
||||||
]
|
|
||||||
|
|
||||||
// Written by and intended for
|
|
||||||
// TODO: support multiple authors
|
|
||||||
#v(15pt)
|
|
||||||
#align(left)[
|
|
||||||
#for author in authors {
|
|
||||||
[
|
|
||||||
//#v(-5pt)
|
|
||||||
#h(300pt)*#author*
|
|
||||||
#parbreak()
|
|
||||||
]
|
|
||||||
}
|
|
||||||
#h(300pt)#authorRole
|
|
||||||
#v(12pt)
|
|
||||||
#for recipient in recipients {
|
|
||||||
[
|
|
||||||
//#v(-5pt)
|
|
||||||
#h(300pt)*#recipient*
|
|
||||||
#parbreak()
|
|
||||||
]
|
|
||||||
}
|
|
||||||
#parbreak()
|
|
||||||
#h(300pt)#recipientRole
|
|
||||||
]
|
|
||||||
|
|
||||||
// Footer of place where it was written and year
|
|
||||||
#align(center+bottom)[
|
|
||||||
*Kaunas, #datetime.today().year()*
|
|
||||||
]
|
|
||||||
|
|
||||||
#pagebreak()
|
|
||||||
|
|
||||||
// Begin numbering from the outline
|
|
||||||
#set page(
|
|
||||||
numbering: "1"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Add an outline
|
|
||||||
#outline(
|
|
||||||
title: "Turinys"
|
|
||||||
)
|
|
||||||
|
|
||||||
#pagebreak()
|
|
||||||
|
|
||||||
#body
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bibliography shorthand
|
|
||||||
#let bibl(path) = {
|
|
||||||
[
|
|
||||||
#bibliography(
|
|
||||||
path,
|
|
||||||
title: "Literatūros sąrašas",
|
|
||||||
full: true
|
|
||||||
)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// PRESENTATION
|
|
||||||
#import "@preview/polylux:0.3.1": *
|
|
||||||
|
|
||||||
// The margins are set automatically to 2.5/21 times the smaller dimension of the page. This results in 2.5cm margins for an A4 page.
|
|
||||||
#let autoMarginSize = 2.5/21 * 7.50in
|
|
||||||
#let margins = (
|
|
||||||
top: autoMarginSize,
|
|
||||||
right: autoMarginSize,
|
|
||||||
left: autoMarginSize,
|
|
||||||
bottom: autoMarginSize
|
|
||||||
);
|
|
||||||
|
|
||||||
#let ktu-theme(body) = {
|
|
||||||
|
|
||||||
set page(
|
|
||||||
fill: white,
|
|
||||||
numbering: "1",
|
|
||||||
number-align: right,
|
|
||||||
width: 13.33in,
|
|
||||||
height: 7.50in,
|
|
||||||
margin: margins,
|
|
||||||
footer: {
|
|
||||||
locate(loc => {
|
|
||||||
let page-counter = counter(page).display("1")
|
|
||||||
if loc.page() != 1 {
|
|
||||||
place(bottom+right, dx: 18pt, dy: -20pt)[
|
|
||||||
#set text(size: 14pt)
|
|
||||||
*#page-counter*
|
|
||||||
]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// Default content size
|
|
||||||
set text(size: 22pt, font: "Arial")
|
|
||||||
|
|
||||||
// First level heading size
|
|
||||||
show heading.where(level: 1): it => [
|
|
||||||
#set text(size: 50pt)
|
|
||||||
#it.body
|
|
||||||
];
|
|
||||||
|
|
||||||
// Second level heading size
|
|
||||||
show heading.where(level: 2): it => [
|
|
||||||
#set text(size: 30pt)
|
|
||||||
#it.body
|
|
||||||
];
|
|
||||||
|
|
||||||
// Embed the body
|
|
||||||
body
|
|
||||||
}
|
|
||||||
|
|
||||||
#let ktu-title-slide(body) = {
|
|
||||||
polylux-slide[
|
|
||||||
// Content
|
|
||||||
#set align(bottom)
|
|
||||||
#box(width: 80%)[
|
|
||||||
#body
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
// Horizontal line
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
dx: 222pt,
|
|
||||||
dy: -200pt,
|
|
||||||
pad(
|
|
||||||
right: -margins.right + 100pt,
|
|
||||||
left: -margins.left,
|
|
||||||
scale(
|
|
||||||
x: 300%,
|
|
||||||
rotate(
|
|
||||||
-90deg,
|
|
||||||
image("Assets/image12.svg")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
/*
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
dx: 190pt,
|
|
||||||
//dy: -200pt,
|
|
||||||
dy: -88pt,
|
|
||||||
pad(
|
|
||||||
//right: -margins.right + 100pt,
|
|
||||||
//left: -margins.left,
|
|
||||||
scale(
|
|
||||||
y: 10%,
|
|
||||||
x: 10%,
|
|
||||||
image("Assets/image4.svg")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
*/
|
|
||||||
|
|
||||||
// KTU logo
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
dx: 792pt,
|
|
||||||
dy: -40pt,
|
|
||||||
image("Assets/ktu-logo.png", height: 36mm)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Vertical line
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
dx: 360pt,
|
|
||||||
dy: 385pt,
|
|
||||||
pad(
|
|
||||||
top: -margins.top,
|
|
||||||
bottom: -margins.bottom,
|
|
||||||
rotate(
|
|
||||||
-90deg,
|
|
||||||
scale(
|
|
||||||
y: -100%,
|
|
||||||
image("Assets/image15.svg")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Text on the vertical line side
|
|
||||||
#place(top, dx: 670pt, dy: 250pt)[
|
|
||||||
#set text(size: 15pt)
|
|
||||||
#rotate(-90deg)[
|
|
||||||
*UŽ KIEKVIENOS TECHNOLOGIJOS – ŽMOGUS*
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
#let ktu-outline-slide(body) = {
|
|
||||||
polylux-slide[
|
|
||||||
// Content
|
|
||||||
#box(
|
|
||||||
pad(
|
|
||||||
left: 90pt,
|
|
||||||
body
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
// KTU logo
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
//dx: 792pt,
|
|
||||||
dx: -50pt,
|
|
||||||
dy: -40pt,
|
|
||||||
image("Assets/ktu-logo.png", height: 36mm)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Vertical line
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
dx: -360pt,
|
|
||||||
dy: 385pt,
|
|
||||||
pad(
|
|
||||||
top: -margins.top,
|
|
||||||
bottom: -margins.bottom,
|
|
||||||
rotate(
|
|
||||||
90deg,
|
|
||||||
scale(
|
|
||||||
y: -100%,
|
|
||||||
x: -100%,
|
|
||||||
image("Assets/image15.svg")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Text on the vertical line side
|
|
||||||
#place(top, dx: -170pt, dy: 250pt)[
|
|
||||||
#set text(size: 15pt)
|
|
||||||
#rotate(-90deg)[
|
|
||||||
*UŽ KIEKVIENOS TECHNOLOGIJOS – ŽMOGUS*
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
#let ktu-main-slide(body) = {
|
|
||||||
let header = body.children.find(it => { return it.func() == heading })
|
|
||||||
|
|
||||||
polylux-slide[
|
|
||||||
// Content
|
|
||||||
#block(width: 95%, height: 100%)[
|
|
||||||
#header
|
|
||||||
#v(36pt)
|
|
||||||
#body.children.filter(it => {return it.func() != heading}).join()
|
|
||||||
]
|
|
||||||
|
|
||||||
// DECORATIONS
|
|
||||||
// Horizontal line
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
dy: 44pt,
|
|
||||||
pad(
|
|
||||||
right: -margins.right + 94pt,
|
|
||||||
left: -margins.left,
|
|
||||||
image("Assets/image15.svg")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
// KTU logo
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
dx: 820pt,
|
|
||||||
dy: 0pt,
|
|
||||||
image("Assets/ktu-text.svg", height: 10mm)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Vertical line
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
dx: 800pt,
|
|
||||||
pad(
|
|
||||||
top: -margins.top,
|
|
||||||
bottom: -margins.bottom,
|
|
||||||
image("Assets/image12.svg")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Text on the vertical line side
|
|
||||||
#place(top, dx: 700pt, dy: 250pt)[
|
|
||||||
#set text(size: 13pt)
|
|
||||||
#rotate(-90deg)[
|
|
||||||
*UŽ KIEKVIENOS TECHNOLOGIJOS – ŽMOGUS*
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
#let ktu-no-vertical-slide(body) = {
|
|
||||||
let header = body.children.find(it => { return it.func() == heading })
|
|
||||||
|
|
||||||
polylux-slide[
|
|
||||||
// Content
|
|
||||||
#block(width: 100%, height: 100%)[
|
|
||||||
#header
|
|
||||||
#v(36pt)
|
|
||||||
#body.children.filter(it => {return it.func() != heading}).join()
|
|
||||||
]
|
|
||||||
|
|
||||||
// DECORATIONS
|
|
||||||
// Horizontal line
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
dy: 1.52cm,
|
|
||||||
pad(
|
|
||||||
right: -margins.right,
|
|
||||||
left: -margins.left,
|
|
||||||
image("Assets/image15.svg")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
// KTU logo
|
|
||||||
#place(
|
|
||||||
top,
|
|
||||||
dx: 820pt,
|
|
||||||
dy: 0pt,
|
|
||||||
image("Assets/ktu-text.svg", height: 10mm)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,159 @@
|
|||||||
|
#import "@local/ktu-paper:0.5.0": (
|
||||||
|
ktu-paper,
|
||||||
|
ktu-table-of-contents, ktu-picture-list, ktu-table-list, ktu-code-list,
|
||||||
|
ktu-heading-page-normal,
|
||||||
|
ktu-table,
|
||||||
|
unnumbered-heading,
|
||||||
|
custom-ref, ref-no
|
||||||
|
)
|
||||||
|
|
||||||
|
#show: ktu-paper.with(
|
||||||
|
font: "Times New Roman", // or Arial
|
||||||
|
figureNumberingPerSection: true,
|
||||||
|
figureKinds: (
|
||||||
|
veryCustomKind: (supplement: "komanda", ref-name: "komanda"),
|
||||||
|
),
|
||||||
|
// Code blocks, optional, `code: none` disables styling
|
||||||
|
code: (
|
||||||
|
font: "Hack",
|
||||||
|
spacing: 80%,
|
||||||
|
fill: white,
|
||||||
|
stroke: 0.5pt + black,
|
||||||
|
numbers: true,
|
||||||
|
display-name: false,
|
||||||
|
display-icon: false,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
#show math.equation: it => {
|
||||||
|
show regex("\d+\.\d+"): it => {show ".": {","+h(0pt)}
|
||||||
|
it}
|
||||||
|
it
|
||||||
|
}
|
||||||
|
|
||||||
|
#ktu-heading-page-normal(
|
||||||
|
faculty: highlight[Informatikos fakultetas],
|
||||||
|
title: highlight[Laboratorinio darbo ataskaitos pavadinimas],
|
||||||
|
subtitles: (
|
||||||
|
"Laboratorinio darbo ataskaita",
|
||||||
|
highlight[Studijų modulio pavadinimas (kodas)]
|
||||||
|
),
|
||||||
|
authors: (
|
||||||
|
(highlight[Vardenis Pavardenis], "Ataskaitą parengė"),
|
||||||
|
(highlight[Pareigų ir mokslo laipsnio sutrumpinimas Vardenis Pavardenis], "Laboratoriniam darbui vadovavo"),
|
||||||
|
),
|
||||||
|
authorNamesFirst: false,
|
||||||
|
place: "Kaunas",
|
||||||
|
year: datetime.today().year(),
|
||||||
|
)
|
||||||
|
#pagebreak()
|
||||||
|
#set page(numbering: "1")
|
||||||
|
|
||||||
|
#ktu-table-of-contents()
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
#ktu-picture-list()
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
#ktu-table-list()
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
#ktu-code-list()
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
#unnumbered-heading[= Įvadas]
|
||||||
|
#lorem(50)
|
||||||
|
|
||||||
|
#pagebreak()
|
||||||
|
= Skyrius
|
||||||
|
#lorem(50)
|
||||||
|
|
||||||
|
== Poskyrius
|
||||||
|
#lorem(50)
|
||||||
|
|
||||||
|
=== Dalis
|
||||||
|
#lorem(50)
|
||||||
|
|
||||||
|
#pagebreak()
|
||||||
|
= Komponentai
|
||||||
|
|
||||||
|
== Paveikslai
|
||||||
|
Galima gauti paveikslo numerį #ref-no(<image-label>) arba visą paveikslo nuorodą #custom-ref(<image-label>).
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
image("images/santaka.png", width: 70%),
|
||||||
|
caption: [
|
||||||
|
Paveikslo pavadinimas
|
||||||
|
],
|
||||||
|
) <image-label>
|
||||||
|
|
||||||
|
|
||||||
|
== Paveikslų "grid" išdėstymas
|
||||||
|
Paveikslus taip pat galima sudėti į "grid" išdėstymą, į jį kreiptis kaip numerį #ref-no(<image-grid-label>) arba visą nuorodą #custom-ref(<image-grid-label>).
|
||||||
|
|
||||||
|
#figure(grid(
|
||||||
|
columns: 2,
|
||||||
|
gutter: 2mm,
|
||||||
|
image("images/santaka.png", width: 100%),
|
||||||
|
image("images/santaka.png", width: 100%),
|
||||||
|
), caption: [
|
||||||
|
Paveikslėliai "grid'e"
|
||||||
|
]) <image-grid-label>
|
||||||
|
|
||||||
|
|
||||||
|
== Lentelės
|
||||||
|
|
||||||
|
Galima gauti lentelės numerį /*#ref-no(<table-label>)*/ arba visą lentelės nuorodą #custom-ref(<table-label>).
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
ktu-table(
|
||||||
|
columns: (auto, 1fr, 1fr, 1fr),
|
||||||
|
align: (x, y) => { horizon + left },
|
||||||
|
table.header([*Stulpelio pavadinimas*], [*Stulpelio pavadinimas*], [*Stulpelio pavadinimas*], [*Stulpelio pavadinimas*]),
|
||||||
|
[Eilutė 1], [...], [...], [...],
|
||||||
|
[Eilutė 2], [...], [...], [...],
|
||||||
|
[Eilutė 3], [...], [...], [...],
|
||||||
|
[Eilutė 4], [...], [...], [...],
|
||||||
|
),
|
||||||
|
caption: [Lentelės pavadinimas],
|
||||||
|
) <table-label>
|
||||||
|
|
||||||
|
|
||||||
|
== Formulės
|
||||||
|
Formules galima išreikšti eilutėje, pavyzdžiui $E = m c^2$ arba atskiroje eilutėje, pavyzdžiui:
|
||||||
|
$
|
||||||
|
E = m c^2
|
||||||
|
$ <formula-label>
|
||||||
|
|
||||||
|
// TODO: fix
|
||||||
|
Formulės atskiroje eilutėje numeruojamos besąlygiškai, galima gauti formulės numerį #ref-no(<formula-label>) arba visą formulės nuorodą #custom-ref(<formula-label>).
|
||||||
|
|
||||||
|
== Kodo fragmentai
|
||||||
|
Kodo fragmentus galima išreikšti eilutėje, pavyzdžiui `print("Hello, world!")` arba atskiroje eilutėje, pavyzdžiui:
|
||||||
|
#figure(```python
|
||||||
|
def main():
|
||||||
|
print("Hello, world!")
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
```, caption: [
|
||||||
|
Python kodas
|
||||||
|
]) <code-label>
|
||||||
|
|
||||||
|
Galima gauti kodo fragmento numerį #ref-no(<code-label>) arba visą kodo fragmento nuorodą #custom-ref(<code-label>).
|
||||||
|
|
||||||
|
== Naudotojo apibrėžtos figūros
|
||||||
|
|
||||||
|
Naudotojai tai pat gali apibrėžti savo figūras, pavyzdžiui, komandų fragmentus. Pavyzdžiui, galima apibrėžti komandų fragmentą su papildoma informacija ir naudoti jį dokumente. Galima gauti kodo fragmento numerį #ref-no(<custom-figure-label>) arba visą kodo fragmento nuorodą #custom-ref(<custom-figure-label>).
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
```sh
|
||||||
|
npm install foo
|
||||||
|
```,
|
||||||
|
kind: "veryCustomKind",
|
||||||
|
supplement: "...",
|
||||||
|
caption: [Diegimo komanda],
|
||||||
|
) <custom-figure-label>
|
||||||
|
|
||||||
|
#pagebreak()
|
||||||
|
= Išvados
|
||||||
|
#lorem(50)
|
||||||
|
After Width: | Height: | Size: 206 KiB |
@@ -0,0 +1,203 @@
|
|||||||
|
#import "@local/ktu-paper:0.5.0": (
|
||||||
|
ktu-paper,
|
||||||
|
ktu-table-of-contents, ktu-picture-list, ktu-table-list,
|
||||||
|
ktu-heading-page-normal,
|
||||||
|
ktu-table,
|
||||||
|
custom-ref, ref-no
|
||||||
|
)
|
||||||
|
|
||||||
|
#show: ktu-paper.with(
|
||||||
|
font: "Times New Roman",
|
||||||
|
)
|
||||||
|
|
||||||
|
#show math.equation: it => {
|
||||||
|
show regex("\d+\.\d+"): it => {show ".": {","+h(0pt)}
|
||||||
|
it}
|
||||||
|
it
|
||||||
|
}
|
||||||
|
|
||||||
|
#ktu-heading-page-normal(
|
||||||
|
faculty: "Fakulteto pavadinimas",
|
||||||
|
title: "Rašto darbo pavadinimas",
|
||||||
|
subtitles: "Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)",
|
||||||
|
authors: (
|
||||||
|
("Vardenis Pavardenis", "Projekto autorius"),
|
||||||
|
("Vardenis Pavardenis", "Vadovas"),
|
||||||
|
),
|
||||||
|
place: "Kaunas",
|
||||||
|
year: datetime.today().year(),
|
||||||
|
)
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
#ktu-table-of-contents()
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
#ktu-picture-list()
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
#ktu-table-list()
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
= Sąrašai
|
||||||
|
|
||||||
|
Vienas sąrašas:
|
||||||
|
1. Vienas;
|
||||||
|
2. Du;
|
||||||
|
3. Trys.
|
||||||
|
|
||||||
|
Kitas sąrašas:
|
||||||
|
- Vienas;
|
||||||
|
- Du;
|
||||||
|
- Trys.
|
||||||
|
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
= Skyrius
|
||||||
|
|
||||||
|
== Poskyris
|
||||||
|
|
||||||
|
=== Skyrelis
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
== Matematikos poskyris
|
||||||
|
|
||||||
|
Skaitiniams tipams yra naudojamas histogramos. Histogramų binų (stulpelių) skaičius nustatomas formule: $1 + 3.22 dot log_10 n$, kur n -- imties dydis.
|
||||||
|
|
||||||
|
Mūsų atveju, $n = 4908$, tada $"binų skaičius" approx 12.88 = 12$.
|
||||||
|
|
||||||
|
== Tolydaus tipo atributai
|
||||||
|
|
||||||
|
Šias apskaičiuotas charakteristikas pateikiame lentelėje:
|
||||||
|
|
||||||
|
#{
|
||||||
|
show table.cell: set text(size: 8pt)
|
||||||
|
[#figure(
|
||||||
|
ktu-table(
|
||||||
|
columns: (25mm, 13mm, 17mm, 20mm, auto, auto, auto, auto, auto, auto, 17mm),
|
||||||
|
align: (x, y) => if x == 0 or y == 0 { horizon + left } else { horizon + right },
|
||||||
|
table.header([*Atributo pavadinimas*], [*Kiekis (eilučių skaičius)*], [*Trūkstamos reikšmės, %*], [*Kardinalumas*], [*Min reikšmė*], [*Max reikšmė*], [*1-asis kvartilis*], [*Mediana*], [*3-iasis kvartilis*], [*Vidurkis*], [*Standartinis nuokrypis*]),
|
||||||
|
[age], [5110], [0,0], [104], [0,08], [82,0], [25,0], [45,0], [61,0], [43,227], [22,613],
|
||||||
|
[avg_glucose_level], [5110], [0,0], [3979], [55,12], [271,74], [77,245], [91,885], [114,09], [106,148], [45,284],
|
||||||
|
[bmi], [5110], [3,933], [418], [10,3], [97,6], [23,5], [28,1], [33,1], [28,893], [7,854],
|
||||||
|
),
|
||||||
|
caption: [
|
||||||
|
Skaitinio tipo atributų statistinės charakteristikos
|
||||||
|
],
|
||||||
|
) <tab-1>]
|
||||||
|
}
|
||||||
|
|
||||||
|
Įdomus pastebėjimas, kad amžiaus minimali reikšmė yra "0,080". Tai yra logiška, kadangi yra vaikų duomenų. Kitas pastebėjimas -- trūksta "bmi" duomenų 3,9% visų įrašų. Atributų kardinalumas yra aukštas, todėl juos tikrai galima laikyti tolydžiais.
|
||||||
|
|
||||||
|
|
||||||
|
Duomenų sklaidą yra patogu pavaizduoti ir stačiakampe diagrama:
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
image("images/santaka.png", width: 70%),
|
||||||
|
caption: [
|
||||||
|
Skaitinių atributų stačiakampė diagrama
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
Matome, kad "avg_glucose_level" ir "bmi" atributai turi gana daug išimčių. Tačiau čia reikia būti atsargiems, kadangi išimtys nustatomos kaip reikšmės už interkvartilinio intervalo. Patikrinkime ar šios vertės nėra įvedimo klaidos.
|
||||||
|
|
||||||
|
Anot https://www.who.int/data/gho/indicator-metadata-registry/imr-details/2380, normalus gliukozės lygis nevalgius yra apie 70-100 mg/dL. Lyginant su mmol/L, tikėtina, kad "avg_glucose_level" yra matuojamas mg/dL. Tada matome, kad maksimali vertė 2,72 kartų didesnė už normą.
|
||||||
|
|
||||||
|
Kūno masės indekso rodiklis apskaičiuojamas formule: $"BMI" = "svoris" / "ūgis" = "kg" / "m"^2$. Tikrinami maksimalią vertę darykime prielaidą, kad asmens ūgis = 1,6 m, tada svoris = $97 dot 1.6^2$ = 248,32 kg.
|
||||||
|
|
||||||
|
== Duomenų problemų taisymas
|
||||||
|
|
||||||
|
#lorem(70)
|
||||||
|
|
||||||
|
#lorem(70)
|
||||||
|
|
||||||
|
#lorem(70)
|
||||||
|
|
||||||
|
Kažkas... $[Q_1 - 1.5 dot "IQR"; Q_3 + 1.5 dot "IQR"]$ intervale.
|
||||||
|
|
||||||
|
#figure(```python
|
||||||
|
def main():
|
||||||
|
print("Hello, world!")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
```, caption: [
|
||||||
|
Python kodas
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
== Image grids
|
||||||
|
|
||||||
|
#lorem(120)
|
||||||
|
|
||||||
|
Paveikslėlius galima grupuoti į "grid" #custom-ref(<image-grid-2>, <image-grid-3>)
|
||||||
|
|
||||||
|
#figure(grid(
|
||||||
|
columns: 2,
|
||||||
|
gutter: 2mm,
|
||||||
|
image("images/santaka.png", width: 100%),
|
||||||
|
image("images/santaka.png", width: 100%),
|
||||||
|
), caption: [
|
||||||
|
Paveikslėliai "grid'e" 1
|
||||||
|
]) <image-grid-2>
|
||||||
|
|
||||||
|
#figure(grid(
|
||||||
|
columns: 3,
|
||||||
|
gutter: 2mm,
|
||||||
|
image("images/santaka.png", width: 100%),
|
||||||
|
image("images/santaka.png", width: 100%),
|
||||||
|
image("images/santaka.png", width: 100%),
|
||||||
|
image("images/santaka.png", width: 100%),
|
||||||
|
image("images/santaka.png", width: 100%),
|
||||||
|
), caption: [
|
||||||
|
Paveikslėliai "grid'e" 2
|
||||||
|
]) <image-grid-3>
|
||||||
|
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
= Skyrius
|
||||||
|
|
||||||
|
#lorem(160) Gauti skaičiai @table-1 tikrai dideli.
|
||||||
|
|
||||||
|
#{
|
||||||
|
show table.cell: set text(size: 8pt)
|
||||||
|
[#figure(
|
||||||
|
table(
|
||||||
|
columns: (33mm, 13mm, 17mm, 20mm, 13mm, 13mm, 13mm, 13mm, 13mm, 13mm, 17mm),
|
||||||
|
align: (x, y) => if x == 0 or y == 0 { horizon + left } else { horizon + right },
|
||||||
|
|
||||||
|
[*Atributo pavadinimas*], [*Kiekis (eilučių skaičius)*], [*Trūkstamos reikšmės, %*], [*Kardinalumas*], [*Min reikšmė*], [*Max reikšmė*], [*1-asis kvartilis*], [*Mediana*], [*3-iasis kvartilis*], [*Vidurkis*], [*Standartinis nuokrypis*],
|
||||||
|
[age], [4908], [0.0], [104], [0.08], [82.0], [25.0], [44.0], [60.0], [42.869], [22.556],
|
||||||
|
[hypertension], [4908], [0.0], [2], [0], [1], [0.0], [0.0], [0.0], [0.092], [0.289],
|
||||||
|
[heart_disease], [4908], [0.0], [2], [0], [1], [0.0], [0.0], [0.0], [0.05], [0.217],
|
||||||
|
[avg_glucose_level], [4908], [0.0], [3851], [55.12], [271.74], [77.0675], [91.68], [113.495], [105.297], [44.426],
|
||||||
|
[bmi], [4908], [0.0], [418], [10.3], [97.6], [23.5], [28.1], [33.1], [28.895], [7.854],
|
||||||
|
[stroke], [4908], [0.0], [2], [0], [1], [0.0], [0.0], [0.0], [0.043], [0.202],
|
||||||
|
),
|
||||||
|
caption: [
|
||||||
|
Lentelės pavadinimas
|
||||||
|
],
|
||||||
|
) <table-1>]
|
||||||
|
}
|
||||||
|
|
||||||
|
Kažkokia formulė apibrėžiama taip:
|
||||||
|
|
||||||
|
$
|
||||||
|
Z = (X - mu) / sigma
|
||||||
|
$
|
||||||
|
|
||||||
|
čia $X$ -- imtis, $mu$ -- imties vidurkis, $sigma$ -- imties standartinis nuokrypis. Fragmentas pateikiamas #ref-no(<image-1>) paveikslėlyje.
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
image("images/santaka.png", width: 90%),
|
||||||
|
caption: [
|
||||||
|
Paveikslėlio pavadinimas
|
||||||
|
],
|
||||||
|
) <image-1>
|
||||||
|
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
= Išvados
|
||||||
|
|
||||||
|
- Viską bandėme.
|
||||||
|
- Viskas pavyko.
|
||||||
@@ -1,29 +1,45 @@
|
|||||||
#import "../template.typ": lab-report, table-list, picture-list, bibliography-list, unnumbered-heading
|
#import "@local/ktu-paper:0.5.0": (
|
||||||
|
ktu-paper,
|
||||||
#show: lab-report.with(
|
ktu-table-of-contents, ktu-picture-list, ktu-table-list,
|
||||||
"Kompiuterinis raštingumas",
|
ktu-heading-page-normal,
|
||||||
(
|
ktu-table,
|
||||||
[Technologinis projektas],
|
unnumbered-heading,
|
||||||
[Typst šablonas]
|
custom-ref, ref-no
|
||||||
),
|
|
||||||
authors: ("Vardenis Pavardenis",),
|
|
||||||
recipients: (
|
|
||||||
"lekt. Petras Petraitis",
|
|
||||||
),
|
|
||||||
authorRole: "Studentas",
|
|
||||||
recipientRole: "Dėstytojas"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
#set list(marker: [--])
|
#show: ktu-paper.with(
|
||||||
|
font: "Times New Roman",
|
||||||
|
)
|
||||||
|
|
||||||
#table-list()
|
#show figure: it => {
|
||||||
|
set block(breakable: true)
|
||||||
|
it
|
||||||
|
}
|
||||||
|
#set list(indent: 0.63cm, marker: [--])
|
||||||
|
|
||||||
|
#ktu-heading-page-normal(
|
||||||
|
faculty: "Fakulteto pavadinimas",
|
||||||
|
title: "Rašto darbo pavadinimas",
|
||||||
|
subtitles: "Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)",
|
||||||
|
authors: (
|
||||||
|
("Vardenis Pavardenis", "Projekto autorius"),
|
||||||
|
("Vardenis Pavardenis", "Vadovas"),
|
||||||
|
),
|
||||||
|
place: "Kaunas",
|
||||||
|
year: datetime.today().year(),
|
||||||
|
)
|
||||||
#pagebreak()
|
#pagebreak()
|
||||||
|
|
||||||
#picture-list()
|
#ktu-table-of-contents()
|
||||||
|
|
||||||
#pagebreak()
|
#pagebreak()
|
||||||
|
|
||||||
|
#ktu-picture-list()
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
#ktu-table-list()
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
|
|
||||||
#unnumbered-heading[= Įvadas]
|
#unnumbered-heading[= Įvadas]
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
@@ -37,7 +53,6 @@ Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam
|
|||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam:
|
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam:
|
||||||
|
|
||||||
- Ut antiopam efficiendi deterruisset sit.
|
- Ut antiopam efficiendi deterruisset sit.
|
||||||
- Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim.
|
- Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim.
|
||||||
|
|
||||||
@@ -47,125 +62,99 @@ An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id
|
|||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
// TODO: lentele
|
|
||||||
#[
|
|
||||||
#show figure: set block(breakable: true)
|
|
||||||
#figure(
|
#figure(
|
||||||
table(
|
table(
|
||||||
columns: 5,
|
columns: (40mm, 35mm, 44mm, auto),
|
||||||
table.header(
|
align: (x, y) => top + left,
|
||||||
[Stiliaus pavadinimas],
|
|
||||||
[Stiliaus pavadinimas galerijoje],
|
|
||||||
[Stiliaus formalieji reikalavimai],
|
|
||||||
[Stiliaus naudojimo aprašymas],
|
|
||||||
[Pritaikyta?]
|
|
||||||
),
|
|
||||||
[Antraštė non-TOC], [Antraštė non-TOC],
|
|
||||||
[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių – 1,15, atstumas prieš ir po antraštės – 10 pt, centruota lygiuotė.],
|
|
||||||
[Antraštėms, kurios nėra įtraukiamos į turinį: "Turinys".],
|
|
||||||
[Ne],
|
|
||||||
|
|
||||||
|
table.header(
|
||||||
|
[*Stiliaus pavadinimas*], [*Stiliaus pavadinimas galerijoje*],
|
||||||
|
[*Stiliaus formalieji reikalavimai*], [*Stiliaus naudojimo aprašymas*],
|
||||||
|
),
|
||||||
|
|
||||||
|
[Antraštė non-TOC], [Antraštė non-TOC],
|
||||||
|
[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių -- 1,15, atstumas prieš ir po antraštės -- 10 pt, centruota lygiuotė.], [Antraštėms, kurios nėra įtraukiamos į turinį: „Turinys“.],
|
||||||
|
|
||||||
[Antraštė be nr.], [Antraštė be nr.],
|
[Antraštė be nr.], [Antraštė be nr.],
|
||||||
[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių – 1,15, atstumas prieš ir po antraštės – 10 pt, centruota lygiuotė, antraštė rašoma naujame puslapyje – po puslapio skirtuko.],
|
[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių -- 1,15, atstumas prieš ir po antraštės -- 10 pt, centruota lygiuotė, antraštė rašoma naujame puslapyje – po puslapio skirtuko.],
|
||||||
[Antraštėms, kurios įtraukiamos į turinį, bet nėra numeruojamos: „Lentelių sąrašas“, „Paveikslų sąrašas“, „Santrumpų ir terminų sąrašas“, „Įvadas“, „Išvados“, „Literatūros sąrašas“, „Informacijos šaltinių sąrašas“, „Priedai“.],
|
[Antraštėms, kurios įtraukiamos į turinį, bet nėra numeruojamos: „Lentelių sąrašas“, „Paveikslų sąrašas“, „Santrumpų ir terminų sąrašas“, „Įvadas“, „Išvados“, „Literatūros sąrašas“, „Informacijos šaltinių sąrašas“, „Priedai“.],
|
||||||
[Trūksta intervalo],
|
|
||||||
|
|
||||||
[1. Heading 1,Skyrius], [Skyrius],
|
[\1. Heading 1,Skyrius], [Skyrius],
|
||||||
[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių – 1,15, atstumas po antraštės – 10 pt, abipusė lygiuotė, antraštė rašoma naujame puslapyje – po puslapio skirtuko.],
|
[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių -- 1,15, atstumas po antraštės -- 10 pt, abipusė lygiuotė, antraštė rašoma naujame puslapyje – po puslapio skirtuko.],
|
||||||
[Skyrių antraštėms, kurios įtraukiamos į turinį ir yra numeruojamos.],
|
[Skyrių antraštėms, kurios įtraukiamos į turinį ir yra numeruojamos.],
|
||||||
[Trūksta intervalo],
|
|
||||||
|
|
||||||
[1.1. Heading 2,Poskyris ], [Poskyris],
|
[1.1. Heading 2,Poskyris], [Poskyris],
|
||||||
table.cell(rowspan: 2)[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių – 1,15, atstumas prieš ir po antraštės – 10 pt, abipusė lygiuotė, numeracija siejama su aukštesnio lygio antrašte.],
|
table.cell(rowspan: 2)[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių -- 1,15, atstumas prieš ir po antraštės -- 10 pt, abipusė lygiuotė, numeracija siejama su aukštesnio lygio antrašte.],
|
||||||
[Poskyrių antraštėms, kurios įtraukiamos į turinį ir yra numeruojamos.],
|
[Poskyrių antraštėms, kurios įtraukiamos į turinį ir yra numeruojamos.],
|
||||||
[Trūksta intervalo],
|
|
||||||
|
|
||||||
|
|
||||||
[1.1.1. Heading 4,Skyrelis], [Skyrelis],
|
[1.1.1. Heading 4,Skyrelis], [Skyrelis],
|
||||||
[Skyrelių antraštėms, kurios įtraukiamos į turinį ir yra numeruojamos.],
|
[Skyrelių antraštėms, kurios įtraukiamos į turinį ir yra numeruojamos.],
|
||||||
[Trūksta intervalo],
|
|
||||||
|
|
||||||
[Tekstas], [Tekstas],
|
[Tekstas], [Tekstas],
|
||||||
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, atstumas po pastraipos – 10 pt, abipusė lygiuotė.],
|
[Šrifto dydis 12 pt, intervalas tarp eilučių -- 1,15, atstumas po pastraipos -- 10 pt, abipusė lygiuotė.],
|
||||||
[Tekstui visose rašto darbo dalyse (įvade, skyriuose, poskyriuose ir t.t.).],
|
[Tekstui visose rašto darbo dalyse (įvade, skyriuose, poskyriuose ir t.t.).],
|
||||||
[],
|
|
||||||
|
|
||||||
[List Bullet;Sąrašas (suženklintas)], [Sąrašas (suženklintas)],
|
[List Bullet;Sąrašas (suženklintas)], [Sąrašas (suženklintas)],
|
||||||
[Pirmos pastraipos eilutės įtrauka – 0,63 cm, šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, atstumas tarp tokio paties stiliaus pastraipų – 0 pt, atstumas po sąrašo – 10 pt, abipusė lygiuotė.],
|
[Pirmos pastraipos eilutės įtrauka – 0,63 cm, šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, atstumas tarp tokio paties stiliaus pastraipų – 0 pt, atstumas po sąrašo – 10 pt, abipusė lygiuotė.],
|
||||||
[Tekstui, kuris pateikiamas suženklintu sąrašu.],
|
[Tekstui, kuris pateikiamas suženklintu sąrašu.],
|
||||||
[],
|
|
||||||
|
|
||||||
[List Number;Sąrašas (numeruotas)], [Sąrašas (numeruotas)],
|
[List Number;Sąrašas (numeruotas)], [],
|
||||||
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, atstumas tarp tokio paties stiliaus pastraipų – 0 pt, atstumas po sąrašo – 10 pt, abipusė lygiuotė.],
|
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, atstumas tarp tokio paties stiliaus pastraipų – 0 pt, atstumas po sąrašo – 10 pt, abipusė lygiuotė.],
|
||||||
[Tekstui, kuris pateikiamas sunumeruotu sąrašu.],
|
[Tekstui, kuris pateikiamas sunumeruotu sąrašu.],
|
||||||
[],
|
|
||||||
|
|
||||||
[Footnote Text;Išnašos tekstas], [Išnašos tekstas],
|
[Footnote Text;Išnašos tekstas], [Išnašos tekstas],
|
||||||
[Šrifto dydis 10 pt, intervalas tarp eilučių – 1,15, atstumas prieš ir po sąrašo – 0 pt, abipusė lygiuotė.],
|
[Šrifto dydis 10 pt, intervalas tarp eilučių – 1,15, atstumas prieš ir po sąrašo – 0 pt, abipusė lygiuotė.],
|
||||||
[Tekstui, kuris pateikiamas išnašose.],
|
[Tekstui, kuris pateikiamas išnašose.],
|
||||||
[],
|
|
||||||
|
|
||||||
[Lentelės pavad.], [Lentelės pavad.],
|
[Lentelės pavad.], [Lentelės pavad.],
|
||||||
[Šrifto dydis 11 pt, intervalas tarp eilučių – 1,15, atstumas prieš pavadinimą – 10 pt, po pavadinimo – 3 pt, lygiuotė prie kairiojo krašto.],
|
[Šrifto dydis 11 pt, intervalas tarp eilučių – 1,15, atstumas prieš pavadinimą – 10 pt, po pavadinimo – 3 pt, lygiuotė prie kairiojo krašto.],
|
||||||
[Lentelių pavadinimams (numeris ir žodis lentelė rašomas paryškintu šriftu).],
|
[Lentelių pavadinimams (numeris ir žodis lentelė rašomas paryškintu šriftu).],
|
||||||
[],
|
|
||||||
|
|
||||||
[Lentelės I eil.], [Lentelės I eil.],
|
[Lentelės I eil.], [],
|
||||||
[Šrifto dydis 10 pt, šriftas paryškintas, intervalas tarp eilučių – 1,15, atstumas prieš ir po pastraipos – 3 pt, lygiuotė prie kairiojo krašto.],
|
[Šrifto dydis 10 pt, šriftas paryškintas, intervalas tarp eilučių – 1,15, atstumas prieš ir po pastraipos – 3 pt, lygiuotė prie kairiojo krašto.],
|
||||||
[Tekstui lentelės antraštinei (pirmai) eilutei.],
|
[Tekstui lentelės antraštinei (pirmai) eilutei.],
|
||||||
[Trūksta intervalo],
|
|
||||||
|
|
||||||
[Lentelė], [Lentelė],
|
[Lentelė], [],
|
||||||
[Šrifto dydis 10 pt, intervalas tarp eilučių – 1, atstumas prieš ir po pastraipos – 3 pt, lygiuotė prie kairiojo krašto.],
|
[Šrifto dydis 10 pt, intervalas tarp eilučių – 1, atstumas prieš ir po pastraipos – 3 pt, lygiuotė prie kairiojo krašto.],
|
||||||
[Tekstui lentelėje.],
|
[Tekstui lentelėje.],
|
||||||
[Trūksta intervalo],
|
|
||||||
|
|
||||||
[Caption,Paveikslo pavad.], [Paveikslo pavad.],
|
[Caption,Paveikslo pavad.], [],
|
||||||
[Šrifto dydis 11 pt, intervalas tarp eilučių – 1,15, atstumas prieš ir po pavadinimo – 10 pt, centruota lygiuotė.],
|
[Šrifto dydis 11 pt, intervalas tarp eilučių – 1,15, atstumas prieš ir po pavadinimo – 10 pt, centruota lygiuotė.],
|
||||||
[Paveikslų pavadinimams (numeris ir santrumpa pav. rašoma paryškintu šriftu).],
|
[Paveikslų pavadinimams (numeris ir santrumpa pav. rašoma paryškintu šriftu).],
|
||||||
[],
|
|
||||||
|
|
||||||
[Figure;Paveikslas], [Paveikslas],
|
[Figure;Paveikslas], [],
|
||||||
[Atstumas prieš ir po paveikslo – 10 pt, centruota lygiuotė.],
|
[Atstumas prieš ir po paveikslo – 10 pt, centruota lygiuotė.], [Paveikslui, iliustracijai .],
|
||||||
[Paveikslui, iliustracijai .],
|
|
||||||
[],
|
|
||||||
|
|
||||||
[Bibliography,Bibliografija], [Bibliografija],
|
[Bibliography,Bibliografija], [Bibliografija],
|
||||||
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, atstumas tarp tokio paties stiliaus pastraipų – 2 pt, abipusė lygiuotė.],
|
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, atstumas tarp tokio paties stiliaus pastraipų – 2 pt, abipusė lygiuotė.],
|
||||||
[Literatūros ir Informacijos šaltinių sąrašuose nurodytiems šaltiniams.],
|
[Literatūros ir Informacijos šaltinių sąrašuose nurodytiems šaltiniams.],
|
||||||
[],
|
|
||||||
|
|
||||||
[Priedas], [Priedas],
|
[Priedas], [Priedas],
|
||||||
[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių – 1,15, atstumas prieš ir po antraštės – 10 pt, lygiuotė prie kairiojo krašto.],
|
[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių – 1,15, atstumas prieš ir po antraštės – 10 pt, lygiuotė prie kairiojo krašto.],
|
||||||
[Priedo numeriui, žodžiui _priedas_, priedo pavadinimui.],
|
[Priedo numeriui, žodžiui _priedas_, priedo pavadinimui.],
|
||||||
[],
|
|
||||||
|
|
||||||
[TOC 1,Turinys 1], [Turinys 1],
|
[TOC 1,Turinys 1], [Turinys 1],
|
||||||
[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių – 1,15, įtrauka – 0,64.],
|
[Šrifto dydis 12 pt, šriftas paryškintas, intervalas tarp eilučių – 1,15, įtrauka – 0,64.],
|
||||||
[Turinyje esančioms antraštėms, kurios nėra numeruojamos („Lentelių sąrašas“, „Paveikslų sąrašas“, „Santrumpų ir terminų sąrašas“, „Įvadas“, „Išvados“, „Literatūros sąrašas“, „Informacijos šaltinių sąrašas“, „Priedai“) ir numeruojamai antraštei „Skyriaus pavadinimas“.],
|
[Turinyje esančioms antraštėms, kurios nėra numeruojamos („Lentelių sąrašas“, „Paveikslų sąrašas“, „Santrumpų ir terminų sąrašas“, „Įvadas“, „Išvados“, „Literatūros sąrašas“, „Informacijos šaltinių sąrašas“, „Priedai“) ir numeruojamai antraštei „Skyriaus pavadinimas“.],
|
||||||
[],
|
|
||||||
|
|
||||||
[TOC 2,Turinys 2], [Turinys 2],
|
[TOC 2,Turinys 2], [Turinys 2],
|
||||||
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, įtrauka – 0,96.],
|
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, įtrauka – 0,96.],
|
||||||
[Turinyje esančiai antraštei „Poskyrio pavadinimas“.],
|
[Turinyje esančiai antraštei „Poskyrio pavadinimas“.],
|
||||||
[],
|
|
||||||
|
|
||||||
[TOC 3,Turinys 3], [Turinys 3],
|
[TOC 3,Turinys 3], [Turinys 3],
|
||||||
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, įtrauka – 1,28.],
|
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, įtrauka – 1,28.],
|
||||||
[Turinyje esančiai antraštei „Skyrelio pavadinimas“. ],
|
[Turinyje esančiai antraštei „Skyrelio pavadinimas“. ],
|
||||||
[],
|
|
||||||
|
|
||||||
[TOC 4,Turinys 4], [Turinys 4],
|
[TOC 4,Turinys 4], [Turinys 4],
|
||||||
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, įtrauka – 0,64.],
|
[Šrifto dydis 12 pt, intervalas tarp eilučių – 1,15, įtrauka – 0,64.],
|
||||||
[Numeruotiems priedams.],
|
[Numeruotiems priedams.],
|
||||||
[],
|
),
|
||||||
),
|
caption: [
|
||||||
caption: "Pagrindiniai rašto darbo stiliai ir jų aprašymai"
|
Pagrindiniai rašto darbo stiliai ir jų aprašymai
|
||||||
)
|
],
|
||||||
]
|
) <tab-1>
|
||||||
|
|
||||||
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has #footnote[Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id.].
|
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has1.
|
||||||
|
|
||||||
=== Skyrelio pavadinimas
|
=== Skyrelio pavadinimas
|
||||||
|
|
||||||
@@ -175,15 +164,14 @@ Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis ato
|
|||||||
2. Sed dolorem quaerendum ne, prompta instructior ne pri.
|
2. Sed dolorem quaerendum ne, prompta instructior ne pri.
|
||||||
3. Et mel partiendo suscipiantur, docendi abhorreant ea sit.
|
3. Et mel partiendo suscipiantur, docendi abhorreant ea sit.
|
||||||
|
|
||||||
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea #footnote[Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit.]. In sumo inani numquam has.
|
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea2. In sumo inani numquam has.
|
||||||
|
|
||||||
=== Skyrelio pavadinimas
|
=== Skyrelio pavadinimas
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
||||||
|
|
||||||
|
|
||||||
== Poskyrio pavadinimas
|
== Poskyrio pavadinimas
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
@@ -193,7 +181,6 @@ Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam
|
|||||||
#pagebreak()
|
#pagebreak()
|
||||||
|
|
||||||
= Skyriaus pavadinimas
|
= Skyriaus pavadinimas
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
||||||
@@ -203,22 +190,22 @@ Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam
|
|||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
image("image1.png", width: 60%),
|
image("images/santaka.png", width: 11.2cm, height: 8cm),
|
||||||
caption: [Kauno technologijos universiteto "Santakos" slėnio fasadas]
|
caption: [
|
||||||
)
|
Kauno technologijos universiteto „Santakos“ slėnio fasadas
|
||||||
|
],
|
||||||
|
) <image-1>
|
||||||
|
|
||||||
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
||||||
|
|
||||||
== Poskyrio pavadinimas
|
== Poskyrio pavadinimas
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te:
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te:
|
||||||
|
|
||||||
1. Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam.
|
1. Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam.
|
||||||
2. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim.
|
2. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim.
|
||||||
3. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
3. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
||||||
|
|
||||||
=== Skyrelio pavadinimas
|
=== Skyrelio pavadinimas
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
- Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam.
|
- Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam.
|
||||||
@@ -226,7 +213,7 @@ Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis ato
|
|||||||
|
|
||||||
An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
||||||
|
|
||||||
=== Skyrelio pavadinimas
|
=== Skyrelio pavadinimas
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
@@ -234,20 +221,15 @@ Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam
|
|||||||
|
|
||||||
#pagebreak()
|
#pagebreak()
|
||||||
|
|
||||||
= Skyriaus pavadinimas
|
= Skyriaus pavadinimas
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
||||||
|
|
||||||
== Poskyrio pavadinimas
|
== Poskyrio pavadinimas
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
||||||
|
|
||||||
== Poskyrio pavadinimas
|
== Poskyrio pavadinimas
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
||||||
@@ -255,14 +237,13 @@ Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam
|
|||||||
#pagebreak()
|
#pagebreak()
|
||||||
|
|
||||||
#unnumbered-heading[= Išvados]
|
#unnumbered-heading[= Išvados]
|
||||||
|
|
||||||
1. Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
1. Lorem ipsum dolor sit amet, eam ex decore persequeris, sit at illud lobortis atomorum. Sed dolorem quaerendum ne, prompta instructior ne pri. Et mel partiendo suscipiantur, docendi abhorreant ea sit. Recteque imperdiet eum te.
|
||||||
|
|
||||||
2. Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
2. Eu eum decore inimicus consetetur, cu usu habeo corpora intellegam. Ut antiopam efficiendi deterruisset sit. Mel sint eirmod id, qui quot virtute id, dolor nemore forensibus usu id. Fugit dolore voluptatum cu vim. An vix veniam graecis insolens, sit posse iusto id. Ut vim ceteros percipit, id quo ubique recusabo, eum sint lucilius ea. In sumo inani numquam has.
|
||||||
|
|
||||||
#pagebreak()
|
#pagebreak()
|
||||||
|
|
||||||
#bibliography-list("examples/bibl.yml")
|
#unnumbered-heading[= Literatūros sąrašas]
|
||||||
|
1. Literatūros šaltinis
|
||||||
// TODO: Informacijos šaltinių sąrašas (pagal poreikį)
|
2. Literatūros šaltinis
|
||||||
// TODO: Priedai (pagal poreikį)
|
3. Literatūros šaltinis
|
||||||
|
4. Literatūros šaltinis
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Clean up previous test results
|
||||||
|
if [ -d "tests/original-res" ]; then
|
||||||
|
rm -r tests/original-res
|
||||||
|
fi
|
||||||
|
if [ -d "tests/modified-res" ]; then
|
||||||
|
rm -r tests/modified-res
|
||||||
|
fi
|
||||||
|
if [ -d "tests/modified" ]; then
|
||||||
|
rm -r tests/modified
|
||||||
|
fi
|
||||||
|
if [ -d "tests/original/src" ]; then
|
||||||
|
rm -r tests/original/src
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p tests/original-res
|
||||||
|
mkdir -p tests/modified-res
|
||||||
|
|
||||||
|
# Copy current template
|
||||||
|
cp -r src/ tests/original/src
|
||||||
|
|
||||||
|
cp -r tests/original tests/modified
|
||||||
|
# replace the "#import "@local/ktu-paper:0.1.0""
|
||||||
|
# with "#import "./src/lib.typ"" in the modified files
|
||||||
|
find tests/modified -type f -name "*.typ" -exec \
|
||||||
|
sed -i 's/#import "@local\/ktu-paper:0.1.0"/#import ".\/src\/lib.typ"/g' {} \;
|
||||||
|
find tests/modified -type f -name "ataskaita.typ" -exec \
|
||||||
|
sed -i 's/setup-page/ktu-paper/g' {} \;
|
||||||
|
|
||||||
|
# Compile the original document
|
||||||
|
typst compile --root tests/original tests/original/ataskaita.typ "tests/original-res/{0p}.png"
|
||||||
|
# Compile the modified document
|
||||||
|
typst compile --root tests/modified tests/modified/ataskaita.typ "tests/modified-res/{0p}.png"
|
||||||
|
typst compile --root tests/modified tests/modified/ataskaita.typ "tests/modified.pdf"
|
||||||
|
|
||||||
|
# Compare the results
|
||||||
|
diff -r tests/original-res tests/modified-res
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "No differences found between original and modified results."
|
||||||
|
else
|
||||||
|
echo "Differences found between original and modified results."
|
||||||
|
fi
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
[package]
|
||||||
|
name = "ktu-paper"
|
||||||
|
version = "0.5.0"
|
||||||
|
compiler = "0.15.0"
|
||||||
|
entrypoint = "src/lib.typ"
|
||||||
|
repository = "https://github.com/svetikas/ktu-paper"
|
||||||
|
authors = ["Dominykas Svetikas <https://svetikas.lt>"]
|
||||||
|
license = "MIT"
|
||||||
|
description = "KTU report template to use for writing lab reports or final thesis."
|
||||||
|
|
||||||
|
[template]
|
||||||
|
path = "template"
|
||||||
|
entrypoint = "main.typ"
|
||||||