modefy readme, add deb generater config sile stdeb.cfg

This commit is contained in:
Tan, Kian-ting 2021-07-05 22:45:12 +08:00
parent 2806c8ec33
commit 6240476f3d
5 changed files with 243 additions and 39 deletions

View file

@ -24,6 +24,8 @@ see `src/manual.pdf`
## Packaging
### Python Wheel file (.whl)
To make a wheel package, run the following command in the root folder:
`python3 setup.py bdist_wheel`
@ -33,3 +35,17 @@ and then:
`cd dist; ls`
`Clochur-x.y.z-py3-none-any.whl` will be in it.
### Ubuntu/Debian .deb file
Before package it, you should install [Stdeb](https://pypi.org/project/stdeb) first.
python3 setup.py sdist
cd dist
py2dsc -x ../stdeb.cfg Clochur-x.y.z.tar.gz
cd deb_dist/clochur-x.y.z
cd dpkg-buildpackage -rfakeroot -uc -us
cd ..; ls
...
clochur_x.y.z-1_all.deb
...

View file

@ -1,9 +1,9 @@
[def-syntax q [[_] [str "\""]]]
[script "packages/font-fallback"]
[script "packages/grid"]
%[script "packages/grid"]
[script "packages/image"]
[script "packages/url"]
[script "packages/verbatim"]
[define section-var 1]
[define sub-section-var 1]
@ -21,8 +21,12 @@
]]]
% custom macro
[def-syntax mono
[[_ x][font-family "Noto Sans Mono CJK TC" x]]]
% custom macro
[def-syntax subsection
[[_ x][str-append-many
[set! section-title [str-append [str-append [str sub-section-var] [str ". " ]] [str x]]]
@ -40,16 +44,21 @@
[docu-para [[class "book"][papersize "b5"]]]
[docu
[call grid [[spacing "15pt"]]]
[call set [[parameter "document.baselineskip"][value "20pt"]]] % baselineskip changing
%[call grid [[spacing "15pt"]]]
[call font:add-fallback [[family "Noto Serif CJK TC"]]]
[font-size "30pt" "Huan-gîng 使用 Clochur!"]
[font-size "20pt" "Welcome to use"] [font [[family "sligeach_orig"][size "20pt"]] "Clóċur"][font-size "20pt" ", a toy editor, toy intepreter and a toy typesetting-engine frontend."]
[call bigskip]
Author: Yoxem Chen (aka Tan, Kian-ting) <[call href [[src "mailto:yoxem.tem98@nctu.edu.tw"]] "yoxem.tem98@nctu.edu.tw"]>
Website: [call href [[src "https://www.github.com/Yoxem/Clochur"]] "https://www.github.com/Yoxem/Clochur"]
[call bigskip]
[section "What is Clochur?"]
@ -149,6 +158,13 @@ It will show
"docu"
To modify the preferece of \[docu\], you should use \[docu-para\] before using it. Eg.
[mono "[docu-para [[papersize \"B5\"]]]
[docu ...]"]
can change the paper size to B5
To type brackets \[ & \], you should type \\\[ & \\\] respectively; and to type blackslash \\, you should type \\\\. To type quotation mark \", you should type \\\". A word or a sentence between 2 quotation marks (\") will be shown without the quotation marks. eg: [font-family "Noto Sans Mono CJK TC" "\"It will be there.\""]
will be shown as:
@ -159,58 +175,226 @@ To make the quotation mark shown, you should enclose it between quotation mark \
"\"It will be there.\""
[subsection "Arimetic calculation and variable and function definition"]
It can using [mono "+ - * /"] to calculate plus, minus, multiplication, and division. and print the result in the pdf. eg.
[font [[family "FreeSerif"][weight "900"]] "Arimetic calculation"]
[mono "The result of 3 * 6 = [* 3 6]."]
will output
The result of 3 * 6 = [* 3 6].
[font [[family "FreeSerif"][weight "900"]] "Define variable and change variable value"]
To define a variable, you should use [mono "define"]:
[mono "[define x [* 5 3]]"]
To change the value of a defined variable, you should use [mono "set!"]:
[mono "[set! x 10]"]
[font [[family "FreeSerif"][weight "900"]] "Define function and using lambda function"]
To define a function, you should using [mono "define"] and a [mono "lambda"] function. It supports currying:
[mono "[define add1 [lambda [x] [+ x 1]]]"]
[mono "[add1 7] % return 8"][call smallskip]
[mono "[[lambda [x] [+ x 2]] 9] % return 11"][call smallskip]
[mono "[define sqrt-sum [lambda [y] [lambda [x] [+ [* x x] [* y y]]]]] % currying"][call smallskip]
[mono "[call smallskip] % add line breaker"][call smallskip]
[mono "[sqrt-sum 3][call smallskip] % return closure and force to break line"][call smallskip]
[mono "[[sqrt-sum 3] 4] % return 25"][call smallskip]
[mono "[define sum [lambda [x y] [+ x y]]][call smallskip] % define multi-var function and break line"][call smallskip]
[mono "[sum 9 10]"]
[define add1 [lambda [x] [+ x 1]]]
[add1 7]
[[lambda [x] [+ x 2]] 9] % return 11
[define sqrt-sum [lambda [y] [lambda [x] [+ [* x x] [* y y]]]]] % currying
[call smallskip]
[sqrt-sum 3][call smallskip]
[[sqrt-sum 3] 4] % return 25
[define sum [lambda [x y] [+ x y]]][call smallskip] % define multi-var function and break line
[sum 9 10]
[mono "if, <, >, =, <=, >="] can be used to create recursive function. eg.[call smallskip]
[mono "[define a [lambda [x] [if [= x 1] 2 [str-append x [a [- x 1]]]]]][call smallskip]"][call smallskip]
[mono "[a 5]"]
[define function1 [lambda [x] [if [= x 1] [str 1] [str-append [str x] [function1 [- x 1]]]]]][call smallskip]
It returns
[function1 5]
[subsection "Font formatting"]
Bacically, you can use macro [mono "font"] to set the [str "font"] style. the attribute value should be quoted. eg.
[mono
"[font [[family \"Noto Serif CJK TC\"]] \"漢字測試。\"][call smallskip] %Set the font-family to write CJK characters"]
[mono "%set font family and font weight from 100 (thiner), 200, ..., 900 (bolder)
[font [[family \"FreeSerif\"][weight \"900\"]] \"font weight test\"]"]
[mono "% set font style to italic and insert expression as it's argument
[font [[style \"italic\"]] [str [+ 9 9]]]"]
[mono "% set font size
[font [[size \"30pt\"]] \"text size test\""]
will get
[font [[family "Noto Serif CJK TC"]] "漢字測試。"][call smallskip] %Set the font-family to write CJK characters:
%set font family and font weight from 100 (thiner), 200, ..., 900 (bolder)
[font [[family "FreeSerif"][weight "900"]] "font weight test"]
% set font style to italic and and insert expression as it's argument
[font [[style "italic"]] [str [+ 9 9]]]
% set font size
[font [[size "30pt"]] "text size test"]
You can use the macros [mono "[bold {text}]"], [mono "[italic {text}]"], [mono "[font-family {font-family} {text}]"] and [mono "[font-size {font-size} {text}]"] to get these effects.
Using [mono "underline"] macro, can [str "underline"] a word. eg:
[mono "[underline \"underline test\"]"]
will get
[underline "underline test"]
[subsection "Call SILE function and packages"]
You can call sile function with [mono "call"], the usage is:
[mono "[call function {[[para1 val1]{[para2 val2]}...]]} argument]"]
Those inside braces {} is optional.
To use SILE package, you can use macro[mono "[script source-origin]"].
For example, to add a url, you can add:
[script "packages/url"]
[call href [[src "https://www.example.com"]] "https://www.example.com"]
[subsection "Macro"]
Macro is not a function, its syntax is changed before being evaluating.
Using [font-family "Noto Sans Mono CJK TC" "def-syntax"], you can add your macro to sile. the example is a "custom-section" macro:
[call noindent][font-family "Noto Sans Mono CJK TC" "[def-syntax subsection"]
[call noindent][font-family "Noto Sans Mono CJK TC" "[define custom-section-title \"\"]"]
[call noindent][font-family "Noto Sans Mono CJK TC" "[define custom-sub-section-var 0]"]
[call noindent][font-family "Noto Sans Mono CJK TC" "[[_ x][str-append"]
[call noindent][font-family "Noto Sans Mono CJK TC" "[def-syntax custom-subsection"]
[call noindent][font-family "Noto Sans Mono CJK TC" "[set! section-title [str-append [str-append [str sub-section-var] [str \". \" ]] [str x]]]"]
[call noindent][font-family "Noto Sans Mono CJK TC" "[[_ x][str-append-many"]
[call noindent][font-family "Noto Sans Mono CJK TC" "[font [[size \"16pt\"][weight \"600\"]] section-title]"]
[call noindent][font-family "Noto Sans Mono CJK TC" "[set! custom-section-title [str-append [str-append [str sub-section-var] [str \". \"]] [str x]]]"]
[call noindent][font-family "Noto Sans Mono CJK TC" "set! sub-section-var [+ sub-section-var 1]]]]]"]
[call noindent][font-family "Noto Sans Mono CJK TC" "[font [[size \"16pt\"][weight \"600\"]] custom-section-title]"]
[call noindent][font-family "Noto Sans Mono CJK TC" "[set! custom-sub-section-var [+ custom-sub-section-var 1]]]]]"]
[define custom-section-title ""]
[define custom-sub-section-var 1]
[def-syntax custom-subsection
[[_ x][str-append-many
[set! custom-section-title [str-append [str-append [str custom-sub-section-var] [str ". "]] [str x]]]
[font [[size "16pt"][weight "600"]] custom-section-title]
[set! custom-sub-section-var [+ custom-sub-section-var 1]]]]]
[mono "[custom-subsection \"123\"]"] will be:
[custom-subsection "123"]
[subsection "Other function and macro"]
[font [[family "FreeSerif"][weight "900"]] "String appending"]
You can use [mono "[str-append str1 str2]"] to append a string to another, and you can use [mono "[str-append-many str1 str2 {str3 ...}]"] to append 2 or more strings. eg.
[str-append [str 1] [str 2]]
[str-append-many [str 1] [str 2] [str 3]]
it can use to combine many commands, because the output is the combination of commands.
[font [[family "FreeSerif"][weight "900"]] "Print and begin"]
[mono "[print str]"] print the str to the terminal, and [mono "[begin exp1 {exp2 ...}]"] executes the commands and return the return value of the last command.
[font [[family "FreeSerif"][weight "900"]] "List"]
[mono "[ls item1 {item2 ...}]"] create a list. eg:
[mono "[ls 1 2 3 4]"] returns
[ls 1 2 3 4]
[mono "car"] get the 1st element, and [mono "cdr"] get the rest of the list. [mono "[list-ref list index]"] get the ith-index (start from 0) of list, and [mono "[cons item list]"] combine a item to a list. eg.
[mono "[define list [ls \"a\" \"b\" \"c\"]]"]
[mono "[car list] % returns \"a\""]
[mono "[cdr list] % returns [\"b\" \"c\"]"]
[mono "[ls-ref list 1] % returns \"b\""]
[mono "[cons 5 list] % returns \"b\""]
will get
[str "underline
bold
italic
font-size
font-family
font
begin
cons
car
cdr
ls-ref
ls
begin
script
docu-para
call
xml-to-string
[define list [ls "a" "b" "c"]]
SILE
print
set!
def-syntax
define function, closure, lambda
str
str-append
str-append-many" ]]
[car list] % returns "a"
[cdr list] % returns ["b" "c"]
[ls-ref list 1] % returns "b"
[cons 5 list] % returns [5 "a" "b" "c"]
]

View file

@ -19,7 +19,7 @@ setup(
description='''A S-expression like typesetting language powered by SILE engine
with a simple editor''',
url="http://yoxem.github.com",
url="https://github.com/Yoxem/Clochur",
install_requires=['PyQt5>=5.15', 'QScintilla>=2.12'],

View file

@ -4,5 +4,5 @@
version_no = "0.0.1"
about_info = '''A S-expression-like typesetting language powered by SILE engine with a simple text text editor.
http://yoxem.github.com
https://github.com/Yoxem/Clochur
(c) 2021 Yoxem Chen <yoxem.tem98@nctu.edu.tw>'''

4
stdeb.cfg Normal file
View file

@ -0,0 +1,4 @@
[DEFAULT]
Package3: clochur
Depends3: python3-pyqt5, python3-pyqt5.qsci, python3-pyqt5.qtwebengine, sile
Build-Depends: python3-pyqt5, python3-pyqt5.qsci, python3-pyqt5.qtwebengine, sile