3
.gitignore
vendored
@ -26,3 +26,6 @@ build/
|
||||
doc/api/
|
||||
/web/swadesh
|
||||
/web/tibetan-lexicon-layout
|
||||
/web/style/.sass-cache/
|
||||
/web/style/*.css
|
||||
/web/eittland-files/GIS/
|
||||
|
13
Dockerfile
@ -2,15 +2,18 @@ FROM google/dart:2.7
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN mkdir /pub-cache
|
||||
# Get Dart dependencies
|
||||
RUN mkdir -p /pub-cache
|
||||
ENV PUB_CACHE=/pub-cache
|
||||
ENV PATH="${PATH}:/pub-cache/bin"
|
||||
RUN pub global activate webdev
|
||||
# RUN pub global activate stagehand
|
||||
|
||||
ADD pubspec.* /app/
|
||||
RUN pub get
|
||||
ADD . /app/
|
||||
RUN pub get --offline
|
||||
|
||||
# EXPOSE 8010
|
||||
RUN apt update && apt install ruby-sass ruby-dev build-essential -y
|
||||
RUN gem install sass-listen
|
||||
|
||||
ADD . /app/
|
||||
|
||||
CMD ["./start.sh"]
|
||||
|
30
TODOs.org
Normal file
@ -0,0 +1,30 @@
|
||||
* TODO Organization of HTML [4/4]
|
||||
** DONE Add link to images that don’t have any
|
||||
CLOSED: [2020-05-05 mar. 13:31]
|
||||
** DONE Add English links detection
|
||||
CLOSED: [2020-05-05 mar. 13:31]
|
||||
** DONE Add button to display TOC
|
||||
CLOSED: [2020-04-28 mar. 22:30]
|
||||
** DONE Add share links [5/5]
|
||||
CLOSED: [2020-04-29 mer. 00:03]
|
||||
*** DONE Add Twitter share
|
||||
CLOSED: [2020-04-28 mar. 23:22]
|
||||
*** DONE Add Reddit share
|
||||
CLOSED: [2020-04-28 mar. 23:23]
|
||||
*** DONE Add Facebook share
|
||||
CLOSED: [2020-04-28 mar. 23:23]
|
||||
*** DONE Add LinkedIn share
|
||||
CLOSED: [2020-04-29 mer. 00:03]
|
||||
*** DONE Add Email share
|
||||
CLOSED: [2020-04-29 mer. 00:03]
|
||||
* TODO Styling [5/5]
|
||||
** DONE Images
|
||||
CLOSED: [2020-05-05 mar. 13:31]
|
||||
** DONE Mobile version
|
||||
CLOSED: [2020-05-05 mar. 13:31]
|
||||
** DONE Tables
|
||||
CLOSED: [2020-05-02 Sat 12:09]
|
||||
** DONE Hint bubbles for phonetics (Ñyqy)
|
||||
CLOSED: [2020-04-28 mar. 22:31]
|
||||
** DONE Links
|
||||
CLOSED: [2020-04-29 mer. 00:03]
|
@ -4,8 +4,7 @@ services:
|
||||
web:
|
||||
build: .
|
||||
ports:
|
||||
- "8010:8010"
|
||||
command: webdev serve --release web:8010 --hostname 0.0.0.0
|
||||
- "8010:8080"
|
||||
restart: always
|
||||
volumes:
|
||||
- ./web/:/app/web/
|
||||
|
@ -8,7 +8,7 @@ environment:
|
||||
sdk: '>=2.5.0 <3.0.0'
|
||||
|
||||
dependencies:
|
||||
js: '^0.6.1+1'
|
||||
html: '^0.14.0+3'
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^1.8.0
|
||||
|
3
start.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
sass --watch web/style/:web/style -tcompressed &
|
||||
webdev serve --release --hostname 0.0.0.0
|
@ -1,5 +1,5 @@
|
||||
# -*- mode: org; org-confirm-babel-evaluate: nil -*-
|
||||
#+TITLE: Une Grammaire du TEMPLATE
|
||||
#+TITLE: TEMPLATE
|
||||
#+HTML_HEAD: <meta name="description" content="Grammaire détaillée de la langue construite TEMPLATE" />
|
||||
#+HTML_HEAD: <meta property="og:title" content="Grammaire du TEMPLATE" />
|
||||
#+HTML_HEAD: <meta property="og:description" content="Grammaire détaillée de la langue construite TEMPLATE" />
|
||||
|
@ -1,75 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2019-2020 Lucien Cartier-Tilet
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
$bg: #2c3e50;
|
||||
$darkerbg: #34495e;
|
||||
$textcolor: #ecf0f1;
|
||||
$tablecolor: #263646;
|
||||
|
||||
html {
|
||||
background-color: $darkerbg;
|
||||
}
|
||||
|
||||
thead {
|
||||
tr {
|
||||
@extend html;
|
||||
}
|
||||
}
|
||||
|
||||
.tooltiptext {
|
||||
@extend html;
|
||||
}
|
||||
|
||||
.tooltiptext::after {
|
||||
border-color: $darkerbg transparent transparent transparent;
|
||||
}
|
||||
|
||||
body {
|
||||
color: $textcolor;
|
||||
}
|
||||
|
||||
.title {
|
||||
@extend body;
|
||||
}
|
||||
|
||||
a {
|
||||
@extend body;
|
||||
}
|
||||
|
||||
th {
|
||||
border: 1px solid $tablecolor;
|
||||
}
|
||||
|
||||
td {
|
||||
@extend th;
|
||||
}
|
||||
|
||||
pre {
|
||||
@extend th;
|
||||
}
|
||||
|
||||
table {
|
||||
border: 2px solid $tablecolor;
|
||||
}
|
||||
|
||||
#content {
|
||||
background-color: $bg;
|
||||
}
|
||||
|
||||
#postamble{
|
||||
background-color: $bg;
|
||||
}
|
@ -1,765 +0,0 @@
|
||||
.org-bold {
|
||||
/* bold */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-bold-italic {
|
||||
/* bold-italic */
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-buffer-menu-buffer {
|
||||
/* buffer-menu-buffer */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-builtin {
|
||||
/* font-lock-builtin-face */
|
||||
color: #7a378b;
|
||||
}
|
||||
|
||||
.org-button {
|
||||
/* button */
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-calendar-today {
|
||||
/* calendar-today */
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-change-log-acknowledgement {
|
||||
/* change-log-acknowledgement */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-change-log-conditionals {
|
||||
/* change-log-conditionals */
|
||||
color: #a0522d;
|
||||
}
|
||||
|
||||
.org-change-log-date {
|
||||
/* change-log-date */
|
||||
color: #8b2252;
|
||||
}
|
||||
|
||||
.org-change-log-email {
|
||||
/* change-log-email */
|
||||
color: #a0522d;
|
||||
}
|
||||
|
||||
.org-change-log-file {
|
||||
/* change-log-file */
|
||||
color: #0000ff;
|
||||
}
|
||||
|
||||
.org-change-log-function {
|
||||
/* change-log-function */
|
||||
color: #a0522d;
|
||||
}
|
||||
|
||||
.org-change-log-list {
|
||||
/* change-log-list */
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-change-log-name {
|
||||
/* change-log-name */
|
||||
color: #008b8b;
|
||||
}
|
||||
|
||||
.org-comint-highlight-input {
|
||||
/* comint-highlight-input */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-comint-highlight-prompt {
|
||||
/* comint-highlight-prompt */
|
||||
color: #00008b;
|
||||
}
|
||||
|
||||
.org-comment {
|
||||
/* font-lock-comment-face */
|
||||
color: #999988;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-comment-delimiter {
|
||||
/* font-lock-comment-delimiter-face */
|
||||
color: #999988;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-completions-annotations {
|
||||
/* completions-annotations */
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-completions-common-part {
|
||||
/* completions-common-part */
|
||||
color: #000000;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.org-completions-first-difference {
|
||||
/* completions-first-difference */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-constant {
|
||||
/* font-lock-constant-face */
|
||||
color: #008b8b;
|
||||
}
|
||||
|
||||
.org-diary {
|
||||
/* diary */
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
.org-diff-context {
|
||||
/* diff-context */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-diff-file-header {
|
||||
/* diff-file-header */
|
||||
background-color: #b3b3b3;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-diff-function {
|
||||
/* diff-function */
|
||||
background-color: #cccccc;
|
||||
}
|
||||
|
||||
.org-diff-header {
|
||||
/* diff-header */
|
||||
background-color: #cccccc;
|
||||
}
|
||||
|
||||
.org-diff-hunk-header {
|
||||
/* diff-hunk-header */
|
||||
background-color: #cccccc;
|
||||
}
|
||||
|
||||
.org-diff-index {
|
||||
/* diff-index */
|
||||
background-color: #b3b3b3;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-diff-nonexistent {
|
||||
/* diff-nonexistent */
|
||||
background-color: #b3b3b3;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-diff-refine-change {
|
||||
/* diff-refine-change */
|
||||
background-color: #d9d9d9;
|
||||
}
|
||||
|
||||
.org-dired-directory {
|
||||
/* dired-directory */
|
||||
color: #0000ff;
|
||||
}
|
||||
|
||||
.org-dired-flagged {
|
||||
/* dired-flagged */
|
||||
color: #ff0000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-dired-header {
|
||||
/* dired-header */
|
||||
color: #228b22;
|
||||
}
|
||||
|
||||
.org-dired-ignored {
|
||||
/* dired-ignored */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-dired-mark {
|
||||
/* dired-mark */
|
||||
color: #008b8b;
|
||||
}
|
||||
|
||||
.org-dired-marked {
|
||||
/* dired-marked */
|
||||
color: #ff0000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-dired-perm-write {
|
||||
/* dired-perm-write */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-dired-symlink {
|
||||
/* dired-symlink */
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-dired-warning {
|
||||
/* dired-warning */
|
||||
color: #ff0000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-doc {
|
||||
/* font-lock-doc-face */
|
||||
color: #8b2252;
|
||||
}
|
||||
|
||||
.org-escape-glyph {
|
||||
/* escape-glyph */
|
||||
color: #a52a2a;
|
||||
}
|
||||
|
||||
.org-file-name-shadow {
|
||||
/* file-name-shadow */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-flyspell-duplicate {
|
||||
/* flyspell-duplicate */
|
||||
color: #cdad00;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-flyspell-incorrect {
|
||||
/* flyspell-incorrect */
|
||||
color: #ff4500;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-fringe {
|
||||
/* fringe */
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
.org-function-name {
|
||||
/* font-lock-function-name-face */
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.org-header-line {
|
||||
/* header-line */
|
||||
color: #333333;
|
||||
background-color: #e5e5e5;
|
||||
}
|
||||
|
||||
.org-help-argument-name {
|
||||
/* help-argument-name */
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-highlight {
|
||||
/* highlight */
|
||||
background-color: #b4eeb4;
|
||||
}
|
||||
|
||||
.org-holiday {
|
||||
/* holiday */
|
||||
background-color: #ffc0cb;
|
||||
}
|
||||
|
||||
.org-isearch {
|
||||
/* isearch */
|
||||
color: #b0e2ff;
|
||||
background-color: #cd00cd;
|
||||
}
|
||||
|
||||
.org-isearch-fail {
|
||||
/* isearch-fail */
|
||||
background-color: #ffc1c1;
|
||||
}
|
||||
|
||||
.org-italic {
|
||||
/* italic */
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-keyword {
|
||||
/* font-lock-keyword-face */
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.org-lazy-highlight {
|
||||
/* lazy-highlight */
|
||||
background-color: #afeeee;
|
||||
}
|
||||
|
||||
.org-link {
|
||||
/* link */
|
||||
color: #0000ff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-link-visited {
|
||||
/* link-visited */
|
||||
color: #8b008b;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-log-edit-header {
|
||||
/* log-edit-header */
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-log-edit-summary {
|
||||
/* log-edit-summary */
|
||||
color: #0000ff;
|
||||
}
|
||||
|
||||
.org-log-edit-unknown-header {
|
||||
/* log-edit-unknown-header */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-match {
|
||||
/* match */
|
||||
background-color: #ffff00;
|
||||
}
|
||||
|
||||
.org-next-error {
|
||||
/* next-error */
|
||||
background-color: #eedc82;
|
||||
}
|
||||
|
||||
.org-nobreak-space {
|
||||
/* nobreak-space */
|
||||
color: #a52a2a;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-archived {
|
||||
/* org-archived */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-block {
|
||||
/* org-block */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-block-begin-line {
|
||||
/* org-block-begin-line */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-block-end-line {
|
||||
/* org-block-end-line */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-checkbox {
|
||||
/* org-checkbox */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-org-checkbox-statistics-done {
|
||||
/* org-checkbox-statistics-done */
|
||||
color: #228b22;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-org-checkbox-statistics-todo {
|
||||
/* org-checkbox-statistics-todo */
|
||||
color: #ff0000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-org-clock-overlay {
|
||||
/* org-clock-overlay */
|
||||
background-color: #ffff00;
|
||||
}
|
||||
|
||||
.org-org-code {
|
||||
/* org-code */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-column {
|
||||
/* org-column */
|
||||
background-color: #e5e5e5;
|
||||
}
|
||||
|
||||
.org-org-column-title {
|
||||
/* org-column-title */
|
||||
background-color: #e5e5e5;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-date {
|
||||
/* org-date */
|
||||
color: #a020f0;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-document-info {
|
||||
/* org-document-info */
|
||||
color: #191970;
|
||||
}
|
||||
|
||||
.org-org-document-info-keyword {
|
||||
/* org-document-info-keyword */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-document-title {
|
||||
/* org-document-title */
|
||||
color: #191970;
|
||||
font-size: 144%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-org-done {
|
||||
/* org-done */
|
||||
color: #228b22;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-org-drawer {
|
||||
/* org-drawer */
|
||||
color: #0000ff;
|
||||
}
|
||||
|
||||
.org-org-ellipsis {
|
||||
/* org-ellipsis */
|
||||
color: #b8860b;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-footnote {
|
||||
/* org-footnote */
|
||||
color: #a020f0;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-formula {
|
||||
/* org-formula */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-headline-done {
|
||||
/* org-headline-done */
|
||||
color: #bc8f8f;
|
||||
}
|
||||
|
||||
.org-org-hide {
|
||||
/* org-hide */
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.org-org-latex-and-export-specials {
|
||||
/* org-latex-and-export-specials */
|
||||
color: #8b4513;
|
||||
}
|
||||
|
||||
.org-org-level-1 {
|
||||
/* org-level-1 */
|
||||
color: #0000ff;
|
||||
}
|
||||
|
||||
.org-org-level-2 {
|
||||
/* org-level-2 */
|
||||
color: #a0522d;
|
||||
}
|
||||
|
||||
.org-org-level-3 {
|
||||
/* org-level-3 */
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-org-level-4 {
|
||||
/* org-level-4 */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-level-5 {
|
||||
/* org-level-5 */
|
||||
color: #228b22;
|
||||
}
|
||||
|
||||
.org-org-level-6 {
|
||||
/* org-level-6 */
|
||||
color: #008b8b;
|
||||
}
|
||||
|
||||
.org-org-level-7 {
|
||||
/* org-level-7 */
|
||||
color: #7a378b;
|
||||
}
|
||||
|
||||
.org-org-level-8 {
|
||||
/* org-level-8 */
|
||||
color: #8b2252;
|
||||
}
|
||||
|
||||
.org-org-link {
|
||||
/* org-link */
|
||||
color: #0000ff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-meta-line {
|
||||
/* org-meta-line */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-mode-line-clock {
|
||||
/* org-mode-line-clock */
|
||||
color: #000000;
|
||||
background-color: #bfbfbf;
|
||||
}
|
||||
|
||||
.org-org-mode-line-clock-overrun {
|
||||
/* org-mode-line-clock-overrun */
|
||||
color: #000000;
|
||||
background-color: #ff0000;
|
||||
}
|
||||
|
||||
.org-org-quote {
|
||||
/* org-quote */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-scheduled {
|
||||
/* org-scheduled */
|
||||
color: #006400;
|
||||
}
|
||||
|
||||
.org-org-scheduled-previously {
|
||||
/* org-scheduled-previously */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-scheduled-today {
|
||||
/* org-scheduled-today */
|
||||
color: #006400;
|
||||
}
|
||||
|
||||
.org-org-sexp-date {
|
||||
/* org-sexp-date */
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-org-special-keyword {
|
||||
/* org-special-keyword */
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-org-table {
|
||||
/* org-table */
|
||||
color: #0000ff;
|
||||
}
|
||||
|
||||
.org-org-tag {
|
||||
/* org-tag */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-org-target {
|
||||
/* org-target */
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-time-grid {
|
||||
/* org-time-grid */
|
||||
color: #b8860b;
|
||||
}
|
||||
|
||||
.org-org-todo {
|
||||
/* org-todo */
|
||||
color: #ff0000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-org-upcoming-deadline {
|
||||
/* org-upcoming-deadline */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-verbatim {
|
||||
/* org-verbatim */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-verse {
|
||||
/* org-verse */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-warning {
|
||||
/* org-warning */
|
||||
color: #ff0000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-outline-1 {
|
||||
/* outline-1 */
|
||||
color: #0000ff;
|
||||
}
|
||||
|
||||
.org-outline-2 {
|
||||
/* outline-2 */
|
||||
color: #a0522d;
|
||||
}
|
||||
|
||||
.org-outline-3 {
|
||||
/* outline-3 */
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-outline-4 {
|
||||
/* outline-4 */
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-outline-5 {
|
||||
/* outline-5 */
|
||||
color: #228b22;
|
||||
}
|
||||
|
||||
.org-outline-6 {
|
||||
/* outline-6 */
|
||||
color: #008b8b;
|
||||
}
|
||||
|
||||
.org-outline-7 {
|
||||
/* outline-7 */
|
||||
color: #7a378b;
|
||||
}
|
||||
|
||||
.org-outline-8 {
|
||||
/* outline-8 */
|
||||
color: #8b2252;
|
||||
}
|
||||
|
||||
.org-preprocessor {
|
||||
/* font-lock-preprocessor-face */
|
||||
color: #7a378b;
|
||||
}
|
||||
|
||||
.org-query-replace {
|
||||
/* query-replace */
|
||||
color: #b0e2ff;
|
||||
background-color: #cd00cd;
|
||||
}
|
||||
|
||||
.org-regexp-grouping-backslash {
|
||||
/* font-lock-regexp-grouping-backslash */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-regexp-grouping-construct {
|
||||
/* font-lock-regexp-grouping-construct */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-region {
|
||||
/* region */
|
||||
background-color: #eedc82;
|
||||
}
|
||||
|
||||
.org-secondary-selection {
|
||||
/* secondary-selection */
|
||||
background-color: #ffff00;
|
||||
}
|
||||
|
||||
.org-shadow {
|
||||
/* shadow */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-show-paren-match {
|
||||
/* show-paren-match */
|
||||
background-color: #40e0d0;
|
||||
}
|
||||
|
||||
.org-show-paren-mismatch {
|
||||
/* show-paren-mismatch */
|
||||
color: #ffffff;
|
||||
background-color: #a020f0;
|
||||
}
|
||||
|
||||
.org-string {
|
||||
/* font-lock-string-face */
|
||||
color: #dd1144;
|
||||
}
|
||||
|
||||
.org-tool-bar {
|
||||
/* tool-bar */
|
||||
color: #000000;
|
||||
background-color: #bfbfbf;
|
||||
}
|
||||
|
||||
.org-tooltip {
|
||||
/* tooltip */
|
||||
color: #000000;
|
||||
background-color: #ffffe0;
|
||||
}
|
||||
|
||||
.org-trailing-whitespace {
|
||||
/* trailing-whitespace */
|
||||
background-color: #ff0000;
|
||||
}
|
||||
|
||||
.org-type {
|
||||
/* font-lock-type-face */
|
||||
color: #228b22;
|
||||
}
|
||||
|
||||
.org-underline {
|
||||
/* underline */
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-variable-name {
|
||||
/* font-lock-variable-name-face */
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.org-warning {
|
||||
/* font-lock-warning-face */
|
||||
color: #ff0000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-widget-button {
|
||||
/* widget-button */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.org-widget-button-pressed {
|
||||
/* widget-button-pressed */
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
.org-widget-documentation {
|
||||
/* widget-documentation */
|
||||
color: #006400;
|
||||
}
|
||||
|
||||
.org-widget-field {
|
||||
/* widget-field */
|
||||
background-color: #d9d9d9;
|
||||
}
|
||||
|
||||
.org-widget-inactive {
|
||||
/* widget-inactive */
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-widget-single-line-field {
|
||||
/* widget-single-line-field */
|
||||
background-color: #d9d9d9;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=htmlize.css.map */
|
620
web/css/htmlize.min.css
vendored
@ -1,620 +0,0 @@
|
||||
.org-bold {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-bold-italic {
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-buffer-menu-buffer {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-builtin {
|
||||
color: #7a378b;
|
||||
}
|
||||
|
||||
.org-button {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-calendar-today {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-change-log-acknowledgement {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-change-log-conditionals {
|
||||
color: sienna;
|
||||
}
|
||||
|
||||
.org-change-log-date {
|
||||
color: #8b2252;
|
||||
}
|
||||
|
||||
.org-change-log-email {
|
||||
color: sienna;
|
||||
}
|
||||
|
||||
.org-change-log-file {
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.org-change-log-function {
|
||||
color: sienna;
|
||||
}
|
||||
|
||||
.org-change-log-list {
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-change-log-name {
|
||||
color: #008b8b;
|
||||
}
|
||||
|
||||
.org-comint-highlight-input {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-comint-highlight-prompt {
|
||||
color: #00008b;
|
||||
}
|
||||
|
||||
.org-comment {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-comment-delimiter {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-completions-annotations {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-completions-common-part {
|
||||
color: #000;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.org-completions-first-difference {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-constant {
|
||||
color: #008b8b;
|
||||
}
|
||||
|
||||
.org-diary {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.org-diff-context {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-diff-file-header {
|
||||
background-color: #b3b3b3;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-diff-function {
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
.org-diff-header {
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
.org-diff-hunk-header {
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
.org-diff-index {
|
||||
background-color: #b3b3b3;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-diff-nonexistent {
|
||||
background-color: #b3b3b3;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-diff-refine-change {
|
||||
background-color: #d9d9d9;
|
||||
}
|
||||
|
||||
.org-dired-directory {
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.org-dired-flagged {
|
||||
color: red;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-dired-header {
|
||||
color: #228b22;
|
||||
}
|
||||
|
||||
.org-dired-ignored {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-dired-mark {
|
||||
color: #008b8b;
|
||||
}
|
||||
|
||||
.org-dired-marked {
|
||||
color: red;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-dired-perm-write {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-dired-symlink {
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-dired-warning {
|
||||
color: red;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-doc {
|
||||
color: #8b2252;
|
||||
}
|
||||
|
||||
.org-escape-glyph {
|
||||
color: brown;
|
||||
}
|
||||
|
||||
.org-file-name-shadow {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-flyspell-duplicate {
|
||||
color: #cdad00;
|
||||
font-weight: 700;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-flyspell-incorrect {
|
||||
color: #ff4500;
|
||||
font-weight: 700;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-fringe {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
.org-function-name {
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.org-header-line {
|
||||
color: #333;
|
||||
background-color: #e5e5e5;
|
||||
}
|
||||
|
||||
.org-help-argument-name {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-highlight {
|
||||
background-color: #b4eeb4;
|
||||
}
|
||||
|
||||
.org-holiday {
|
||||
background-color: pink;
|
||||
}
|
||||
|
||||
.org-isearch {
|
||||
color: #b0e2ff;
|
||||
background-color: #cd00cd;
|
||||
}
|
||||
|
||||
.org-isearch-fail {
|
||||
background-color: #ffc1c1;
|
||||
}
|
||||
|
||||
.org-italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.org-keyword {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.org-lazy-highlight {
|
||||
background-color: #afeeee;
|
||||
}
|
||||
|
||||
.org-link {
|
||||
color: #00f;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-link-visited {
|
||||
color: #8b008b;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-log-edit-header {
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-log-edit-summary {
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.org-log-edit-unknown-header {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-match {
|
||||
background-color: #ff0;
|
||||
}
|
||||
|
||||
.org-next-error {
|
||||
background-color: #eedc82;
|
||||
}
|
||||
|
||||
.org-nobreak-space {
|
||||
color: brown;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-archived {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-block {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-block-begin-line {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-block-end-line {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-checkbox {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-org-checkbox-statistics-done {
|
||||
color: #228b22;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-org-checkbox-statistics-todo {
|
||||
color: red;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-org-clock-overlay {
|
||||
background-color: #ff0;
|
||||
}
|
||||
|
||||
.org-org-code {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-column {
|
||||
background-color: #e5e5e5;
|
||||
}
|
||||
|
||||
.org-org-column-title {
|
||||
background-color: #e5e5e5;
|
||||
font-weight: 700;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-date {
|
||||
color: #a020f0;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-document-info {
|
||||
color: #191970;
|
||||
}
|
||||
|
||||
.org-org-document-info-keyword {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-document-title {
|
||||
color: #191970;
|
||||
font-size: 144%;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-org-done {
|
||||
color: #228b22;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-org-drawer {
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.org-org-ellipsis {
|
||||
color: #b8860b;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-footnote {
|
||||
color: #a020f0;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-formula {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-headline-done {
|
||||
color: #bc8f8f;
|
||||
}
|
||||
|
||||
.org-org-hide {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.org-org-latex-and-export-specials {
|
||||
color: #8b4513;
|
||||
}
|
||||
|
||||
.org-org-level-1 {
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.org-org-level-2 {
|
||||
color: sienna;
|
||||
}
|
||||
|
||||
.org-org-level-3 {
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-org-level-4 {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-level-5 {
|
||||
color: #228b22;
|
||||
}
|
||||
|
||||
.org-org-level-6 {
|
||||
color: #008b8b;
|
||||
}
|
||||
|
||||
.org-org-level-7 {
|
||||
color: #7a378b;
|
||||
}
|
||||
|
||||
.org-org-level-8 {
|
||||
color: #8b2252;
|
||||
}
|
||||
|
||||
.org-org-link {
|
||||
color: #00f;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-meta-line {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-mode-line-clock {
|
||||
color: #000;
|
||||
background-color: #bfbfbf;
|
||||
}
|
||||
|
||||
.org-org-mode-line-clock-overrun {
|
||||
color: #000;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
.org-org-quote {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-scheduled {
|
||||
color: #006400;
|
||||
}
|
||||
|
||||
.org-org-scheduled-previously {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-scheduled-today {
|
||||
color: #006400;
|
||||
}
|
||||
|
||||
.org-org-sexp-date {
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-org-special-keyword {
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-org-table {
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.org-org-tag {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-org-target {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-org-time-grid {
|
||||
color: #b8860b;
|
||||
}
|
||||
|
||||
.org-org-todo {
|
||||
color: red;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-org-upcoming-deadline {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-org-verbatim {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-verse {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-org-warning {
|
||||
color: red;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-outline-1 {
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.org-outline-2 {
|
||||
color: sienna;
|
||||
}
|
||||
|
||||
.org-outline-3 {
|
||||
color: #a020f0;
|
||||
}
|
||||
|
||||
.org-outline-4 {
|
||||
color: #b22222;
|
||||
}
|
||||
|
||||
.org-outline-5 {
|
||||
color: #228b22;
|
||||
}
|
||||
|
||||
.org-outline-6 {
|
||||
color: #008b8b;
|
||||
}
|
||||
|
||||
.org-outline-7 {
|
||||
color: #7a378b;
|
||||
}
|
||||
|
||||
.org-outline-8 {
|
||||
color: #8b2252;
|
||||
}
|
||||
|
||||
.org-preprocessor {
|
||||
color: #7a378b;
|
||||
}
|
||||
|
||||
.org-query-replace {
|
||||
color: #b0e2ff;
|
||||
background-color: #cd00cd;
|
||||
}
|
||||
|
||||
.org-regexp-grouping-backslash {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-regexp-grouping-construct {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-region {
|
||||
background-color: #eedc82;
|
||||
}
|
||||
|
||||
.org-secondary-selection {
|
||||
background-color: #ff0;
|
||||
}
|
||||
|
||||
.org-shadow {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-show-paren-match {
|
||||
background-color: #40e0d0;
|
||||
}
|
||||
|
||||
.org-show-paren-mismatch {
|
||||
color: #fff;
|
||||
background-color: #a020f0;
|
||||
}
|
||||
|
||||
.org-string {
|
||||
color: #d14;
|
||||
}
|
||||
|
||||
.org-tool-bar {
|
||||
color: #000;
|
||||
background-color: #bfbfbf;
|
||||
}
|
||||
|
||||
.org-tooltip {
|
||||
color: #000;
|
||||
background-color: #ffffe0;
|
||||
}
|
||||
|
||||
.org-trailing-whitespace {
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
.org-type {
|
||||
color: #228b22;
|
||||
}
|
||||
|
||||
.org-underline {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.org-variable-name {
|
||||
color: teal;
|
||||
}
|
||||
|
||||
.org-warning {
|
||||
color: red;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-widget-button {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.org-widget-button-pressed {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.org-widget-documentation {
|
||||
color: #006400;
|
||||
}
|
||||
|
||||
.org-widget-field {
|
||||
background-color: #d9d9d9;
|
||||
}
|
||||
|
||||
.org-widget-inactive {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
|
||||
.org-widget-single-line-field {
|
||||
background-color: #d9d9d9;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=htmlize.min.css.map */
|
@ -1,74 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2019-2020 Lucien Cartier-Tilet
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
$bg: #eee;
|
||||
$darkerbg: #ddd;
|
||||
$textcolor: #444;
|
||||
|
||||
html {
|
||||
background-color: $bg;
|
||||
}
|
||||
|
||||
thead {
|
||||
tr {
|
||||
@extend html;
|
||||
}
|
||||
}
|
||||
|
||||
.tooltiptext {
|
||||
@extend html;
|
||||
}
|
||||
|
||||
.tooltiptext::after {
|
||||
border-color: $darkerbg transparent transparent transparent;
|
||||
}
|
||||
|
||||
body {
|
||||
color: $textcolor;
|
||||
}
|
||||
|
||||
.title {
|
||||
@extend body;
|
||||
}
|
||||
|
||||
a {
|
||||
@extend body;
|
||||
}
|
||||
|
||||
th {
|
||||
border: 1px solid $textcolor;
|
||||
}
|
||||
|
||||
td {
|
||||
@extend th;
|
||||
}
|
||||
|
||||
pre {
|
||||
@extend th;
|
||||
}
|
||||
|
||||
table {
|
||||
border: 2px solid $textcolor;
|
||||
}
|
||||
|
||||
#content {
|
||||
background-color: $darkerbg;
|
||||
}
|
||||
|
||||
#postamble{
|
||||
@extend #content;
|
||||
}
|
@ -1,240 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2019-2020 Lucien Cartier-Tilet
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic|Roboto+Slab:400,700|Inconsolata:400,700);
|
||||
|
||||
@font-face {
|
||||
font-family: "DoulosSIL";
|
||||
font-display: swap;
|
||||
src: url("https://langue.phundrak.com/fonts/DoulosSIL-R.woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Noto Sans Runes";
|
||||
font-display: swap;
|
||||
src: url("../fonts/NotoSansRunic-Regular.ttf");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Helvetica Neue";
|
||||
font-display: swap;
|
||||
src: url("../fonts/HelveticaNeue.ttf");
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Noto Sans Runes", "DoulosSIL", "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif;
|
||||
font-weight: normal;
|
||||
overflow-x: hidden;
|
||||
font-size: 105%;
|
||||
height: 100%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
#postamble {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#content {
|
||||
max-width: 1100px;
|
||||
margin: 20px auto;
|
||||
padding: 20px;
|
||||
box-shadow: 5px 5px 7px rgba(1, 1, 1, .6);
|
||||
}
|
||||
|
||||
hr {
|
||||
display: block;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
border-style: inset;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
.outline-2 {
|
||||
margin: 0 2px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.outline-text-2 {
|
||||
@extend .outline-2;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.outline-4 {
|
||||
@extend .outline-2;
|
||||
}
|
||||
|
||||
.outline-text-4 {
|
||||
@extend .outline-text-2;
|
||||
}
|
||||
|
||||
.outline-5 {
|
||||
@extend .outline-2;
|
||||
}
|
||||
|
||||
.outline-text-5 {
|
||||
@extend .outline-text-2;
|
||||
}
|
||||
|
||||
.outline-6 {
|
||||
@extend .outline-2;
|
||||
}
|
||||
|
||||
.outline-text-6 {
|
||||
@extend .outline-text-2;
|
||||
}
|
||||
|
||||
h1 {
|
||||
@extend legend;
|
||||
font-size: 4em;
|
||||
box-shadow: inset 0 -50px 0 #1abc9c;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@extend legend;
|
||||
font-size: 150%;
|
||||
box-shadow: inset 0 -20px 0 #16a085;
|
||||
}
|
||||
|
||||
h3 {
|
||||
@extend legend;
|
||||
font-size: 125%;
|
||||
box-shadow: inset 0 -16px 0 #27ae60;
|
||||
}
|
||||
|
||||
h4 {
|
||||
@extend legend;
|
||||
font-size: 115%;
|
||||
box-shadow: inset 0 -15px 0 #e67e22;
|
||||
}
|
||||
|
||||
h5 {
|
||||
@extend legend;
|
||||
font-size: 110%;
|
||||
box-shadow: inset 0 -14px 0 #9b59b6;
|
||||
}
|
||||
|
||||
h4,
|
||||
h5 {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
$linkColor: #9b59b6;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
box-shadow: inset 0 -3px 0 $linkColor;
|
||||
transition: all .3s ease-out;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
box-shadow: inset 0 -21px 0 $linkColor;
|
||||
transition: all .3s ease-in;
|
||||
}
|
||||
|
||||
a[href^="img/"],
|
||||
a[href^="img/"]:hover {
|
||||
box-shadow: 0 0;
|
||||
}
|
||||
|
||||
.figure {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
|
||||
p {
|
||||
margin: 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
.largetable {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
img {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
legend {
|
||||
font-family: "Roboto Slab", "ff-tisa-web-pro", "Georgia", Arial, sans-serif;
|
||||
font-weight: 700;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
table {
|
||||
margin: auto;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.vertical {
|
||||
writing-mode: vertical-rl;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
pre {
|
||||
box-shadow: 3px 3px 3px rgba(1, 1, 1, .6);
|
||||
}
|
||||
|
||||
/* scrollbar *****************************************************************/
|
||||
|
||||
/* width */
|
||||
::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
}
|
||||
|
||||
/* Track */
|
||||
::-webkit-scrollbar-track {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
/* Handle */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #7f8c8d;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
/* Theme switcher ************************************************************/
|
||||
|
||||
.themeBtn {
|
||||
position: fixed;
|
||||
bottom: 25px;
|
||||
right: 25px;
|
||||
padding-top:10px;
|
||||
height: 40px;
|
||||
width: 50px;
|
||||
border-radius: 25px;
|
||||
background-color: #1e5b50;
|
||||
text-align: center;
|
||||
box-shadow: 3px 3px 6px rgba(1, 1, 1, .6);
|
||||
cursor: pointer;
|
||||
|
||||
.fas {
|
||||
font-size: 30px;
|
||||
}
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2019-2020 Lucien Cartier-Tilet
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
.tooltip {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
border-bottom: 1px dotted #1e5b50;
|
||||
|
||||
.tooltiptext {
|
||||
visibility: hidden;
|
||||
width: 120px;
|
||||
text-align: center;
|
||||
padding: 5px 0;
|
||||
border-radius: 6px;
|
||||
|
||||
/* position the tooltip text */
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
bottom: 125;
|
||||
left: 50%;
|
||||
margin-left: -60%;
|
||||
|
||||
/* Fade in tooltip */
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s;
|
||||
|
||||
}
|
||||
|
||||
.tooltiptext::after {
|
||||
content: "";
|
||||
top: 100%;
|
||||
margin-left: -5%;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
}
|
||||
|
||||
.tooltip:hover {
|
||||
.tooltiptext {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.tooltiptext {
|
||||
padding: 7px !important;
|
||||
}
|
||||
|
||||
.largetable {
|
||||
$tablepadding: 40px;
|
||||
padding-top: $tablepadding !important;
|
||||
padding-bottom: $tablepadding !important;
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
@JS()
|
||||
library cookie;
|
||||
|
||||
import 'package:js/js.dart';
|
||||
|
||||
@JS()
|
||||
class Cookies {
|
||||
// external factory Cookie();
|
||||
external static String get(String name);
|
||||
external static void set(String name, String value);
|
||||
}
|
@ -1,66 +1,9 @@
|
||||
@JS()
|
||||
library main;
|
||||
import './reorganize_html.dart' show reorganizeHtml;
|
||||
import './theme.dart' show enableThemeChanger, setTheme;
|
||||
|
||||
import 'dart:html';
|
||||
|
||||
import 'package:js/js.dart';
|
||||
|
||||
import './cookie.dart';
|
||||
|
||||
void main() {
|
||||
reorganizeHtml();
|
||||
createThemeSwitcher();
|
||||
themeSwitch(isThemeDark());
|
||||
querySelector('.themeBtn').onClick.listen(themeSwitchMouse);
|
||||
}
|
||||
|
||||
String cookieThemeName = 'theme';
|
||||
|
||||
void createThemeSwitcher() {
|
||||
// set the correct CSS depending on the cookie, dark is enabled by default
|
||||
var isDark = isThemeDark();
|
||||
// Set the correct symbol in the theme switcher button
|
||||
querySelector('body').append(DivElement()..className = 'themeBtn');
|
||||
querySelector('.themeBtn')
|
||||
.children
|
||||
.add(Element.tag('i')..className = 'fas fa-' + (isDark ? 'sun' : 'moon'));
|
||||
}
|
||||
|
||||
bool isThemeDark() {
|
||||
if (Cookies.get(cookieThemeName) == 'light') {
|
||||
return false;
|
||||
}
|
||||
Cookies.set(cookieThemeName, 'dark');
|
||||
return true;
|
||||
}
|
||||
|
||||
void reorganizeHtml() {
|
||||
// Add a <hr> element after the content div
|
||||
querySelector('#content').appendHtml('<hr>');
|
||||
|
||||
// Move the postamble in the content div
|
||||
querySelector('#content').append(querySelector('#postamble'));
|
||||
|
||||
for (var table in querySelectorAll('table')) {
|
||||
var largetable = DivElement();
|
||||
largetable.className = 'largetable';
|
||||
table.before(largetable);
|
||||
largetable.children.add(table);
|
||||
}
|
||||
}
|
||||
|
||||
bool setTheme(bool dark) {
|
||||
Cookies.set(cookieThemeName, (dark ? 'dark' : 'light'));
|
||||
return !dark;
|
||||
}
|
||||
|
||||
void themeSwitch(bool isDark) {
|
||||
querySelector('.fas').className = 'fas fa-' + (isDark ? 'sun' : 'moon');
|
||||
querySelector('#theme').attributes['href'] =
|
||||
'https://langue.phundrak.com/css/' + (isDark ? 'dark' : 'light') + '.css';
|
||||
}
|
||||
|
||||
void themeSwitchMouse(MouseEvent event) {
|
||||
bool isDark = setTheme(!isThemeDark());
|
||||
themeSwitch(isDark);
|
||||
Future<void> main() async {
|
||||
await setTheme();
|
||||
await reorganizeHtml().then((_) {
|
||||
enableThemeChanger();
|
||||
});
|
||||
}
|
||||
|
149
web/dart/navbar.dart
Normal file
@ -0,0 +1,149 @@
|
||||
import 'dart:html';
|
||||
|
||||
import './parse_sitemap.dart' show parseSitemap;
|
||||
|
||||
// Returns the title of the current webpage
|
||||
String getPageTitle() {
|
||||
return querySelector('title').text;
|
||||
}
|
||||
|
||||
Element makeIcon(List<String> classes, [String id]) {
|
||||
final icon = Element.tag('i')..classes.addAll(classes);
|
||||
if (id != null) {
|
||||
icon.attributes['id'] = id;
|
||||
}
|
||||
return icon;
|
||||
}
|
||||
|
||||
Future<Element> makeToc() async {
|
||||
return Element.li()
|
||||
..attributes['id'] = 'toc-drop'
|
||||
..classes.addAll(['nav-item', 'has-dropdown'])
|
||||
..append(Element.a()
|
||||
..attributes['href'] = 'javascript:void(0)'
|
||||
..append(makeIcon(['fas', 'fa-list-ol'], 'tocBtn')));
|
||||
}
|
||||
|
||||
Future<Element> makePages() async {
|
||||
var pages = Element.ul()
|
||||
..attributes['id'] = 'drop-page'
|
||||
..classes.add('dropdown');
|
||||
await parseSitemap().then((final sitemap) => {
|
||||
sitemap.forEach((url, name) {
|
||||
final link = Element.li()
|
||||
..classes.add('dropdown-item')
|
||||
..insertAdjacentElement(
|
||||
'afterBegin',
|
||||
Element.a()
|
||||
..attributes['href'] = url
|
||||
..innerText = name);
|
||||
pages.insertAdjacentElement('beforeEnd', link);
|
||||
})
|
||||
});
|
||||
return Element.li()
|
||||
..append(Element.a()
|
||||
..attributes['href'] = 'javascript:void(0)'
|
||||
..append(makeIcon(['fas', 'fa-flag'])))
|
||||
..classes.addAll(['nav-item', 'has-dropdown'])
|
||||
..insertAdjacentElement('beforeEnd', pages);
|
||||
}
|
||||
|
||||
Element makeShareLink(Element icon, String url) {
|
||||
return Element.li()
|
||||
..classes.add('dropdown-item')
|
||||
..append(Element.a()
|
||||
..attributes['href'] = url
|
||||
..attributes['target'] = '_blank'
|
||||
..append(icon));
|
||||
}
|
||||
|
||||
Future<Element> makeShare() async {
|
||||
return Element.li()
|
||||
..classes.addAll(['nav-item', 'has-dropdown'])
|
||||
..append(Element.a()
|
||||
..attributes['href'] = 'javascript:void(0)'
|
||||
..append(makeIcon(['fas', 'fa-share-alt'])))
|
||||
..append(Element.ul()
|
||||
..classes.add('dropdown')
|
||||
..attributes['id'] = 'drop-share'
|
||||
..append(makeShareLink(
|
||||
makeIcon(['fab', 'fa-twitter-square']),
|
||||
'https://twitter.com/share?text=${getPageTitle()}'
|
||||
'&url=${window.location.href}'))
|
||||
..append(makeShareLink(makeIcon(['fab', 'fa-reddit-square']),
|
||||
'https://www.reddit.com/submit?title=${getPageTitle()}s&url=${window.location.href}'))
|
||||
..append(makeShareLink(makeIcon(['fas', 'fa-envelope-square']),
|
||||
'mailto:?subject=${getPageTitle}&body=${window.location.href}'))
|
||||
..append(makeShareLink(
|
||||
makeIcon(['fab', 'fa-linkedin']),
|
||||
'https://www.linkedin.com/shareArticle?mini=true&url=${window.location.href}'
|
||||
'&title=${getPageTitle()}'))
|
||||
..append(makeShareLink(makeIcon(['fab', 'fa-facebook-square']),
|
||||
'https://www.facebook.com/sharer/sharer.php?u=${window.location.href}')));
|
||||
}
|
||||
|
||||
Future<Element> makeThemeChanger() async {
|
||||
Element makeThemeItem(String t_btnId, Element t_icon, String t_text) {
|
||||
return Element.li()
|
||||
..classes.add('dropdown-item')
|
||||
..append(Element.span()
|
||||
..attributes['id'] = t_btnId
|
||||
..append(t_icon)
|
||||
..appendText(' $t_text'));
|
||||
}
|
||||
|
||||
return Element.li()
|
||||
..classes.addAll(['nav-item', 'has-dropdown'])
|
||||
..append(Element.a()
|
||||
..attributes['href'] = 'javascript:void(0)'
|
||||
..append(Element.span()
|
||||
..classes.add('fa-stack')
|
||||
..style.verticalAlign = 'top'
|
||||
..append(makeIcon(['fas', 'fa-sun', 'fa-stack-1x'])
|
||||
..style.fontSize = '0.9em')
|
||||
..append(makeIcon(['fas', 'fa-moon', 'fa-stack-1x']))))
|
||||
..append(Element.ul()
|
||||
..classes.add('dropdown')
|
||||
..attributes['id'] = 'theme-dropdown'
|
||||
..append(makeThemeItem('lightBtn', makeIcon(['fas', 'fa-sun']), 'Clair'))
|
||||
..append(
|
||||
makeThemeItem('darkBtn', makeIcon(['fas', 'fa-lightbulb']), 'Sombre'))
|
||||
..append(
|
||||
makeThemeItem('blackBtn', makeIcon(['fas', 'fa-moon']), 'Noir')));
|
||||
}
|
||||
|
||||
Future<Element> makeHome() async {
|
||||
return Element.li()
|
||||
..classes.add('nav-item')
|
||||
..insertAdjacentElement(
|
||||
'afterBegin',
|
||||
Element.a()
|
||||
..attributes['href'] = '/'
|
||||
..append(makeIcon(['fas', 'fa-home'])));
|
||||
}
|
||||
|
||||
// Add a navbar atop of the HTML body, containing two buttons:
|
||||
// - One back to home
|
||||
// - A dropdown to each page detected in the sitemap
|
||||
Future<Element> makeNavbar() async {
|
||||
final navbar_content = Element.ul()..classes.add('navbar-nav');
|
||||
final home = await makeHome();
|
||||
final pages = await makePages();
|
||||
final toc = await makeToc();
|
||||
final share = await makeShare();
|
||||
final theme = await makeThemeChanger();
|
||||
|
||||
navbar_content
|
||||
..append(home)
|
||||
..append(pages)
|
||||
..append(toc)
|
||||
..append(share)
|
||||
..append(theme);
|
||||
|
||||
// Navbar content added to navbar
|
||||
final navbar = Element.nav()
|
||||
..classes.add('navbar')
|
||||
..append(navbar_content);
|
||||
|
||||
return navbar;
|
||||
}
|
43
web/dart/parse_sitemap.dart
Normal file
@ -0,0 +1,43 @@
|
||||
import 'dart:html' show HttpRequest;
|
||||
|
||||
import 'package:html/parser.dart' show parse;
|
||||
import 'package:html/dom.dart' show Element;
|
||||
|
||||
// Get the sitemap content
|
||||
Future<String> getSitemap() async {
|
||||
const path = 'sitemap.html';
|
||||
try {
|
||||
return await HttpRequest.getString(path);
|
||||
} catch (e) {
|
||||
print('Couldn’t open $path');
|
||||
}
|
||||
return 'Error';
|
||||
}
|
||||
|
||||
// Parse the list of elements and detect pages from this list
|
||||
Map<String, String> detectPages(List<Element> sitemap, [String prefix]) {
|
||||
final links = <String, String>{};
|
||||
for (var elem in sitemap) {
|
||||
if (elem.outerHtml.contains('index')) {
|
||||
continue;
|
||||
} else if (elem.innerHtml.startsWith('<a')) {
|
||||
elem = elem.firstChild;
|
||||
final url = elem.attributes['href'];
|
||||
final text = elem.firstChild.text;
|
||||
links[url] = (prefix == null) ? text : '$text ($prefix)';
|
||||
} else {
|
||||
final prefix = elem.firstChild.text;
|
||||
final ul = elem.children[0].children;
|
||||
links.addAll(detectPages(ul, prefix));
|
||||
}
|
||||
}
|
||||
return links;
|
||||
}
|
||||
|
||||
// This function returns a Map which contains all links to languages detected
|
||||
// from the sitemap.
|
||||
Future<Map<String, String>> parseSitemap() async {
|
||||
final content = await getSitemap();
|
||||
final sitemap = parse(content).getElementsByClassName('org-ul')[0].children;
|
||||
return detectPages(sitemap);
|
||||
}
|
71
web/dart/reorganize_html.dart
Normal file
@ -0,0 +1,71 @@
|
||||
import 'dart:html';
|
||||
|
||||
import './navbar.dart' show makeNavbar;
|
||||
|
||||
Future<Element> makeHeader() async {
|
||||
var header = Element.tag('header');
|
||||
header
|
||||
..append(Element.img()
|
||||
..attributes['src'] =
|
||||
'https://cdn.phundrak.com/img/mahakala-monochrome.png'
|
||||
..attributes['alt'] = 'Logo de Phundrak'
|
||||
..attributes['heigh'] = '150px'
|
||||
..attributes['width'] = '150px')
|
||||
..append(querySelector('h1'));
|
||||
var subt = querySelector('.subtitle');
|
||||
if (subt != null) {
|
||||
header.append(subt);
|
||||
}
|
||||
return header;
|
||||
}
|
||||
|
||||
Future<void> wrapTables() async {
|
||||
for (var table in querySelectorAll('table')) {
|
||||
var largetable = DivElement()..className = 'largetable';
|
||||
table.before(largetable);
|
||||
largetable.children.add(table);
|
||||
}
|
||||
}
|
||||
|
||||
// All images that are not nested inside a link will be linkified to themselves.
|
||||
void linkifyImg() {
|
||||
querySelectorAll('img').forEach((img) {
|
||||
print(img.attributes['src']);
|
||||
print(img.parent.tagName);
|
||||
if (img.parent.tagName == 'P') {
|
||||
final link = Element.a()..attributes['href'] = img.attributes['src'];
|
||||
img.insertAdjacentElement('beforeBegin', link);
|
||||
link.append(img);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> reorganizeHtml() async {
|
||||
final content = querySelector('#content');
|
||||
|
||||
// Make navbar
|
||||
await makeNavbar().then((navbar) {
|
||||
querySelector('body').insertAdjacentElement('afterBegin', navbar);
|
||||
});
|
||||
|
||||
// Make header
|
||||
await makeHeader().then((header) {
|
||||
content.insertAdjacentElement('beforeBegin', header);
|
||||
final subtitle = querySelector('.subtitle');
|
||||
if (subtitle != null) {
|
||||
header.append(subtitle);
|
||||
}
|
||||
});
|
||||
|
||||
// wrap tables in container for better SCSS display
|
||||
await wrapTables();
|
||||
|
||||
linkifyImg();
|
||||
|
||||
// Add correct class to TOC
|
||||
querySelector('#toc-drop')
|
||||
.append(querySelector('#table-of-contents')..classes.add('dropdown'));
|
||||
|
||||
// Remove all <br> tags from HTML
|
||||
querySelectorAll('br').forEach((br) => br.remove());
|
||||
}
|
53
web/dart/theme.dart
Normal file
@ -0,0 +1,53 @@
|
||||
import 'dart:html';
|
||||
|
||||
class Theme {
|
||||
String _name;
|
||||
String _icon;
|
||||
|
||||
Theme(String t_name, String t_icon) {
|
||||
_name = t_name;
|
||||
_icon = t_icon;
|
||||
}
|
||||
|
||||
String getIcon() => _icon;
|
||||
String getName() => _name;
|
||||
}
|
||||
|
||||
final themes = {
|
||||
'light': Theme('light', 'fa-sun'),
|
||||
'dark': Theme('dark', 'fa-lightbulb'),
|
||||
'black': Theme('black', 'fa-moon')
|
||||
};
|
||||
|
||||
final localStorage = window.localStorage;
|
||||
|
||||
var currentTheme = themes[localStorage['theme']];
|
||||
|
||||
void enableThemeChanger() {
|
||||
final darkBtn = querySelector('#darkBtn');
|
||||
final lightBtn = querySelector('#lightBtn');
|
||||
final blackBtn = querySelector('#blackBtn');
|
||||
|
||||
lightBtn.onClick.listen((_) => switchTheme(themes['light']));
|
||||
darkBtn.onClick.listen((_) => switchTheme(themes['dark']));
|
||||
blackBtn.onClick.listen((_) => switchTheme(themes['black']));
|
||||
}
|
||||
|
||||
Future<void> setTheme() async {
|
||||
if (currentTheme == null) {
|
||||
currentTheme = themes['light'];
|
||||
localStorage['theme'] = currentTheme.getName();
|
||||
}
|
||||
querySelector('body')
|
||||
..classes.clear()
|
||||
..classes.add(currentTheme.getName());
|
||||
}
|
||||
|
||||
void switchTheme(Theme currentTheme) {
|
||||
// Set HTML theme
|
||||
querySelector('body')
|
||||
..classes.clear()
|
||||
..classes.add(currentTheme.getName());
|
||||
// Set storage theme
|
||||
localStorage['theme'] = currentTheme.getName();
|
||||
}
|
Before Width: | Height: | Size: 5.2 MiB |
@ -1,5 +1,5 @@
|
||||
# -*- org-confirm-babel-evaluate: nil -*-
|
||||
#+TITLE: Une Grammaire de l’Eittlandais
|
||||
#+TITLE: Eittlandais
|
||||
#+LANGUAGE: fr
|
||||
#+HTML_HEAD: <meta name="description" content="Grammaire détaillée de l’Eittlandais" />
|
||||
#+HTML_HEAD: <meta property="og:title" content="Grammaire de l’Eittlandais" />
|
||||
@ -195,7 +195,6 @@
|
||||
similaire à celui du sud de l’Angleterre, grâce au Gulf Stream malgré sa
|
||||
latitude élevée, similaire à celle de l’Écosse.
|
||||
|
||||
#+ATTR_HTML: :width 100%
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: Biomes eittlandais
|
||||
#+NAME: img:map-biomes
|
||||
@ -343,13 +342,11 @@
|
||||
Kalmar reconnu Eittlainde comme pays indépendant, mais intégra tout de même
|
||||
les colonies groënlandaises de l’Eittlande à l’Union.
|
||||
|
||||
#+ATTR_HTML: :width 100%
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: États eittlandais
|
||||
#+NAME: img:eittland-states
|
||||
[[file:img/eittland/map-political.png][file:img/eittland/map-political.png]]
|
||||
|
||||
#+ATTR_HTML: :width 100%
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: Provinces eittlandaises
|
||||
#+NAME: img:eittland-provinces
|
||||
@ -459,7 +456,6 @@
|
||||
l’Écosse et le nord de l’Angleterre.
|
||||
|
||||
#+NAME: img:map-world
|
||||
#+ATTR_HTML: :width 100%
|
||||
#+CAPTION: Emplacement d’Eittlande dans l’Océan Atlantique.
|
||||
[[file:img/eittland/map-world.jpg][file:img/eittland/map-world.jpg]]
|
||||
|
||||
@ -467,7 +463,6 @@
|
||||
principaux lieux et principales villes du pays avec la carte [[img:map-simple]]
|
||||
|
||||
#+NAME: img:map-simple
|
||||
#+ATTR_HTML: :width 100%
|
||||
#+CAPTION: Carte simplifiée d’Eittlande
|
||||
[[file:img/eittland/map-simple.jpg][file:img/eittland/map-simple.jpg]]
|
||||
|
||||
@ -476,7 +471,6 @@
|
||||
|
||||
#+NAME: img:map-typo
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+ATTR_HTML: :width 100%
|
||||
#+CAPTION: Topologie d’Eittlande
|
||||
[[file:img/eittland/map-hq.jpg][file:img/eittland/map-hq.jpg]]
|
||||
|
||||
@ -651,7 +645,6 @@
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: Liste des rois Eittlandais de 915 à 1392
|
||||
| <4> | <4> | <4> | <4> | <4> | <4> | <4> | <4> | <4> | <4> |
|
||||
| | | | | | | | | | |
|
||||
| roi | naissance | mort | âge | règne | co-roi | naissance | mort | âge | règne |
|
||||
|-------------------------------+-----------+------+-----+-----------+---------------------------------+-----------+------+-----+-----------|
|
||||
| Ásmundor I, Ingólfrson | 876 | 932 | 56 | 915-935 | - | | | | |
|
||||
@ -977,14 +970,14 @@
|
||||
(conlanging/tree-to-dot eittlandic-vowels)
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC dot :file img/eittland/vowel-feature-tree.png :var input=vow-dot :exports results
|
||||
#+BEGIN_SRC dot :file img/eittland/vowel-feature-tree.png :var input=vow-dot :exports results :cache yes
|
||||
$input
|
||||
#+END_SRC
|
||||
#+NAME: arbre:vowels
|
||||
#+ATTR_HTML: :alt Arbre des voyelles de l’Eittlandais :width 100%
|
||||
#+ATTR_HTML: :alt Arbre des voyelles de l’Eittlandais :class gentree
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: Arbre des caractéristiques distinctives des voyelles de l’Eittlandais
|
||||
#+RESULTS:
|
||||
#+RESULTS[401d3c4bfc06b5ba8a491d6cad9f4d624edc4d9f]:
|
||||
[[file:img/eittland/vowel-feature-tree.png]]
|
||||
|
||||
*** Diphtongues
|
||||
@ -1213,7 +1206,7 @@
|
||||
$input
|
||||
#+END_SRC
|
||||
#+NAME: arbre:cons
|
||||
#+ATTR_HTML: :alt Arbre des consonnes de l’Eittlandais :width 100%
|
||||
#+ATTR_HTML: :alt Arbre des consonnes de l’Eittlandais :class gentree
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: Arbre des caractéristiques distinctives des consonnes de l’Eittlandais
|
||||
#+RESULTS[c8ade388ef8459b89ca4c74696b0bd21fba46d34]:
|
||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 56 KiB |
@ -1,5 +1,5 @@
|
||||
# -*- org-confirm-babel-evaluate: nil -*-
|
||||
#+TITLE: Grammar of Ñyqy
|
||||
#+TITLE: Ñyqy
|
||||
#+include: ../headers
|
||||
#+language: en
|
||||
#+HTML_HEAD_EXTRA: <meta name="description" content="Detailed grammar of the Ñyqy constructed language" />
|
||||
@ -440,7 +440,7 @@
|
||||
$input
|
||||
#+END_SRC
|
||||
#+NAME: arbre:vowels
|
||||
#+ATTR_HTML: :alt Arbre des voyelles du Ñyqy :align center
|
||||
#+ATTR_HTML: :alt Arbre des voyelles du Ñyqy :class gentree
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: Arbre des caractéristiques des voyelles du Ñyqy
|
||||
#+RESULTS[e1f2ca12b3da614823629b888c369ed0ddf3e4a5]:
|
||||
@ -483,7 +483,7 @@
|
||||
$input
|
||||
#+END_SRC
|
||||
#+NAME: arbre:cons
|
||||
#+ATTR_HTML: :alt Arbre des consonnes du Ñyqy :align center
|
||||
#+ATTR_HTML: :alt Arbre des consonnes du Ñyqy :class gentree
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: Arbre des caractéristiques des consonnes du Ñyqy
|
||||
#+RESULTS[ea6462370981c1a011d17d703545ec6e6f38f4de]:
|
||||
|
10
web/headers
@ -30,15 +30,11 @@
|
||||
#+HTML_HEAD_EXTRA: <meta name="twitter:card" content="summary" />
|
||||
#+HTML_HEAD_EXTRA: <meta name="twitter:site" content="@phundrak" />
|
||||
#+HTML_HEAD_EXTRA: <meta name="twitter:creator" content="@phundrak" />
|
||||
#+HTML_HEAD_EXTRA: <link rel="stylesheet" href="./css/main.css"/>
|
||||
#+HTML_HEAD_EXTRA: <link rel="stylesheet" href="./css/htmlize.min.css"/>
|
||||
#+HTML_HEAD_EXTRA: <link rel="stylesheet" id="theme" href="./css/dark.css"/>
|
||||
#+HTML_HEAD_EXTRA: <link rel="stylesheet" href="/style/style.css"/>
|
||||
#+HTML_HEAD_EXTRA: <link rel="shortcut icon" href="https://cdn.phundrak.com/img/mahakala-128x128.png" type="img/png" media="screen" />
|
||||
#+HTML_HEAD_EXTRA: <link rel="shortcut icon" href="https://cdn.phundrak.com/img/favicon.ico" type="image/x-icon" media="screen" />
|
||||
#+HTML_HEAD_EXTRA: <script defer src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
|
||||
#+HTML_HEAD_EXTRA: <script defer src="dart/main.dart.js"></script>
|
||||
#+HTML_HEAD_EXTRA: <script defer src="https://kit.fontawesome.com/4d42d0c8c5.js"></script>
|
||||
#+INFOJS_OPT: view:info home:https://langue.phundrak.com toc:t
|
||||
#+HTML_HEAD_EXTRA: <script defer src="/dart/main.dart.js"></script>
|
||||
#+HTML_HEAD_EXTRA: <script src="https://kit.fontawesome.com/4d42d0c8c5.js" crossorigin="anonymous"></script>
|
||||
|
||||
# ### MACROS ###################################################################
|
||||
#+MACRO: newline @@latex:\hspace{0pt}\\@@ @@html:<br>@@
|
||||
|
@ -1,5 +1,5 @@
|
||||
# -*- org-confirm-babel-evaluate: nil -*-
|
||||
#+TITLE: Une Grammaire du Hjelp
|
||||
#+TITLE: Hjelp
|
||||
#+HTML_HEAD: <meta name="description" content="Grammaire détaillée de la langue construite du Hjelp" />
|
||||
#+HTML_HEAD: <meta property="og:title" content="Grammaire du Hjelp" />
|
||||
#+HTML_HEAD: <meta property="og:description" content="Grammaire détaillée de la langue construite du Hjelp" />
|
||||
|
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 203 KiB |
Before Width: | Height: | Size: 598 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 119 KiB |
BIN
web/img/nyqy/syntax-nominal-clauses.png
Normal file
After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 242 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 119 KiB |
@ -1,6 +1,5 @@
|
||||
# -*- org-confirm-babel-evaluate: nil -*-
|
||||
#+TITLE: Langues construites de P’undrak
|
||||
#+INFOJS_OPT: view:showall toc:1
|
||||
#+HTML_HEAD: <meta name="description" content="Collection de documents et pages webs de linguistique et de langues construites de P’undrak" />
|
||||
#+HTML_HEAD: <meta property="og:title" content="Langues construites de P’undrak" />
|
||||
#+HTML_HEAD: <meta property="og:description" content="Collection de documents et pages webs de linguistique et de langues construites de P’undrak" />
|
||||
|
@ -1,5 +1,5 @@
|
||||
# -*- org-confirm-babel-evaluate: nil -*-
|
||||
#+TITLE: Une Grammaire du Mattér
|
||||
#+TITLE: Mattér
|
||||
#+HTML_HEAD: <meta name="description" content="Grammaire détaillée de la langue construite Mattér" />
|
||||
#+HTML_HEAD: <meta property="og:title" content="Grammaire du Mattér" />
|
||||
#+HTML_HEAD: <meta property="og:description" content="Grammaire détaillée de la langue construite Mattér" />
|
||||
|
437
web/nyqy.org
@ -1,13 +1,12 @@
|
||||
# -*- org-confirm-babel-evaluate: nil -*-
|
||||
#+TITLE: Une Grammaire du Ñyqy
|
||||
#+TITLE: Ñyqy
|
||||
#+SUBTITLE: Un détail de la langue construite prototype du Ñyqy, et une rapide description de son peuple et sa culture
|
||||
#+HTML_HEAD_EXTRA: <meta name="description" content="Grammaire détaillée de la langue construite Ñyqy" />
|
||||
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Grammaire du Ñyqy" />
|
||||
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Grammaire détaillée de la langue construite Ñyqy" />
|
||||
#+HTML_HEAD_EXTRA: <link rel="stylesheet" href="/css/nyqy.css"/>
|
||||
#+INCLUDE: headers
|
||||
#+OPTIONS: auto-id:t
|
||||
#+MACRO: nyqy (eval (conlanging/nyqy-to-phonetics $1))
|
||||
#+MACRO: nyqy (eval (conlanging/nyqy-to-org $1))
|
||||
#+LATEX_HEADER_EXTRA: \usepackage{enumitem}
|
||||
#+STARTUP: content
|
||||
|
||||
@ -152,6 +151,8 @@
|
||||
- 2 :: deuxième personne
|
||||
- 3 :: troisième personne
|
||||
- ABS :: absolutif
|
||||
- art.indef :: article indéfini
|
||||
- art.def :: article défini
|
||||
- DAT :: datif
|
||||
- ERG :: ergatif
|
||||
- F :: féminin
|
||||
@ -406,13 +407,13 @@
|
||||
# "dependent-marking", or mixed?
|
||||
# - Give some examples of each type of marking the language exhibits.
|
||||
Le Ñyqy est une langue qui apparaît comme étant fortement analytique et
|
||||
isolationniste, reposant principalement sur sa syntaxe afin d’exprimer sa
|
||||
grammaire et très peu sur des règles morphologiques. La large majorité des
|
||||
isolationniste, reposant quasi exclusivement sur sa syntaxe afin d’exprimer
|
||||
sa grammaire et très peu sur des règles morphologiques. La large majorité des
|
||||
mots sont monosyllabiques ou bisyllabiques, et les phrases s’articulent
|
||||
souvent autour de morphèmes liés monosyllabiques que l’on peut interpréter
|
||||
comme étant des particules grammaticales. Voici un exemple de phrase en Ñyqy
|
||||
avec sa traduction et son détail grammatical :
|
||||
1. {{{nyqy(ñe pom ñy)}}}
|
||||
1. {{{nyqy(ñe pom qy)}}}
|
||||
|
||||
maison GEN 1sg
|
||||
|
||||
@ -427,6 +428,11 @@
|
||||
1sg OPT boire
|
||||
|
||||
Je souhaite boire
|
||||
4. {{{nyqy(bó mygú cé pim i coq op zé qy zúmu op)}}}
|
||||
|
||||
art.def singe POSS.1sg pomme art.indef manger-PST 3sg 1sg voir-PST
|
||||
|
||||
J’ai vu le singe qui a mangé une pomme à moi
|
||||
|
||||
Dans l’exemple n°1, nous pouvons remarquer l’absence d’un verbe « être », ce
|
||||
qui est un exemple des prédicats existentiels qui ne requièrent pas de verbe
|
||||
@ -436,11 +442,11 @@
|
||||
montrant que le Ñyqy est une langue dont la tête de ses diverses
|
||||
constructions grammaticales est finale et non initiale.
|
||||
|
||||
L’exemple n°2 nous montre la méthode utilisée en Ñyqy afin d’employer le
|
||||
duel : il s’agit d’affixer le nombre « deux » à l’élément que nous souhaitons
|
||||
infléchir. Ainsi, {{{nyqy(bú qi)}}} peut être considéré comme le pronom personnel
|
||||
de la seconde personne du singulier infléchis afin de devenir le pronom
|
||||
personnel de la seconde personne du duel.
|
||||
Le deuxième exemple nous montre la méthode utilisée en Ñyqy afin d’employer
|
||||
le duel : il s’agit d’affixer le nombre « deux » à l’élément que nous
|
||||
souhaitons infléchir. Ainsi, {{{nyqy(bú qi)}}} peut être considéré comme le pronom
|
||||
personnel de la seconde personne du singulier infléchis afin de devenir le
|
||||
pronom personnel de la seconde personne du duel.
|
||||
|
||||
Le troisième exemple présente un exemple d’ordre basique des constituants
|
||||
d’une clause simple, où l’on peut voir une suite SV dans cette clause
|
||||
@ -450,6 +456,14 @@
|
||||
[[#h-26aa65ba-2694-4c63-bf91-258dad3b0430]], il s’agit de la méthode principale
|
||||
d’inflexion des verbes du Ñyqy.
|
||||
|
||||
Enfin, le quatrième exemple nous donne un aperçu de la syntaxe, avec un
|
||||
positionnement différent des articles définis et indéfinis par rapport au
|
||||
nom, ainsi qu’un exemple de référence dans une clause subordonnée à un
|
||||
élément extérieur qu’elle définit, ici le pronom de la troisième personne
|
||||
{{{nyqy(zé)}}} se référant à {{{nyqy(mygú)}}}. On voit également que la clause principale
|
||||
a un ordre de ses constituants en OSV tandis que la subordonnée a un ordre de
|
||||
ses relatives en OVS.
|
||||
|
||||
** Inventaire phonologique et translittération
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-f9f0a2a0-98a6-49d5-b943-98daa6078d3a
|
||||
@ -529,11 +543,14 @@
|
||||
(conlanging/tree-to-dot nyqy-vowels)
|
||||
#+END_SRC
|
||||
|
||||
#+RESULTS[7197a00f9fd897443b1727910097ffe6aceb2ada]: vow-tree
|
||||
: graph{graph[dpi=300];node[shape=plaintext];graph[bgcolor="transparent"];0[label="[vowel]"];1[label="[back]"];0 -- 1;11[label="[tense]"];1 -- 11;111[label="[high]"];11 -- 111;1111[label="/u/"];111 -- 1111;112[label="{high}"];11 -- 112;1121[label="/ɤ/"];112 -- 1121;12[label="{tense}"];1 -- 12;121[label="[high]"];12 -- 121;1211[label="/ʊ/"];121 -- 1211;122[label="{high}"];12 -- 122;1221[label="/ɔ/"];122 -- 1221;2[label="{back}"];0 -- 2;21[label="[tense]"];2 -- 21;211[label="[high]"];21 -- 211;2111[label="/y/"];211 -- 2111;212[label="{high}"];21 -- 212;2121[label="/ø/"];212 -- 2121;22[label="{tense}"];2 -- 22;221[label="[high]"];22 -- 221;2211[label="/ɪ/"];221 -- 2211;222[label="{high}"];22 -- 222;2221[label="/ɛ/"];222 -- 2221;}
|
||||
|
||||
#+BEGIN_SRC dot :file img/nyqy/vowel-feature-tree.png :var input=vow-tree :exports results :eval yes
|
||||
$input
|
||||
#+END_SRC
|
||||
#+NAME: arbre:vowels
|
||||
#+ATTR_HTML: :alt Arbre des voyelles du Ñyqy :align center :width 100%
|
||||
#+ATTR_HTML: :alt Arbre des voyelles du Ñyqy :class gentree
|
||||
#+CAPTION: Arbre des caractéristiques des voyelles du Ñyqy
|
||||
#+RESULTS:
|
||||
[[file:img/nyqy/vowel-feature-tree.png]]
|
||||
@ -634,7 +651,7 @@
|
||||
$input
|
||||
#+END_SRC
|
||||
#+NAME: arbre:cons
|
||||
#+ATTR_HTML: :alt Arbre des consonnes du Ñyqy :align center :width 100%
|
||||
#+ATTR_HTML: :alt Arbre des consonnes du Ñyqy :class gentree
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: Arbre des caractéristiques des consonnes du Ñyqy
|
||||
#+RESULTS:
|
||||
@ -954,51 +971,51 @@
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-add29401-0e7d-45bb-93de-e53286dc4a2d
|
||||
:END:
|
||||
Le Ñyqy est une langue dont sa tête de groupes grammaticaux est généralement
|
||||
en fin du-dit groupe. On peut voir avec l’arbre [[arbre:syntaxe:basique]] que la
|
||||
structure générale d’une phrase standard démarre avec des éléments divers
|
||||
liés à la clause principale s’il y en a, auxquels on se référera généralement
|
||||
en tant qu’éléments /obliques/. Ces éléments ne sont liés au verbe ni par une
|
||||
relation grammaticale ergative, ni dative, ni absolutive. Ensuite vient la
|
||||
phrase nominale ergative, précédant la phrase dative, elle-même précédant la
|
||||
phrase verbale, contenant une phrase nominale absolutive et le verbe de la
|
||||
phrase, le dernier élément d’une phrase {{{nyqy(ñyqy)}}}. Les sous chapitres
|
||||
suivants détailleront la composition de chacun de ces éléments.
|
||||
# Le Ñyqy est une langue dont sa tête de groupes grammaticaux est généralement
|
||||
# en fin du-dit groupe. On peut voir avec l’arbre [[arbre:syntaxe:basique]] que la
|
||||
# structure générale d’une phrase standard démarre avec des éléments divers
|
||||
# liés à la clause principale s’il y en a, auxquels on se référera généralement
|
||||
# en tant qu’éléments /obliques/. Ces éléments ne sont liés au verbe ni par une
|
||||
# relation grammaticale ergative, ni dative, ni absolutive. Ensuite vient la
|
||||
# phrase nominale ergative, précédant la phrase dative, elle-même précédant la
|
||||
# phrase verbale, contenant une phrase nominale absolutive et le verbe de la
|
||||
# phrase, le dernier élément d’une phrase {{{nyqy(ñyqy)}}}. Les sous chapitres
|
||||
# suivants détailleront la composition de chacun de ces éléments.
|
||||
|
||||
#+NAME: basic-syntax-tree
|
||||
#+BEGIN_SRC emacs-lisp :noweb yes :exports none :eval yes :cache yes
|
||||
(setq-local nyqy-syntax-tree
|
||||
'("S"
|
||||
("Obl")
|
||||
("S'"
|
||||
("NPerg"
|
||||
("NP"))
|
||||
("VP"
|
||||
("NPdat"
|
||||
("NP"))
|
||||
("VP'"
|
||||
("NPabs"
|
||||
("NP"
|
||||
("S")
|
||||
("NP'"
|
||||
("Adj")
|
||||
("N"))))
|
||||
("V'"
|
||||
("Mood")
|
||||
("Tense")
|
||||
("V")
|
||||
("Neg")))))))
|
||||
(conlanging/tree-to-dot nyqy-syntax-tree)
|
||||
#+END_SRC
|
||||
# #+NAME: basic-syntax-tree
|
||||
# #+BEGIN_SRC emacs-lisp :noweb yes :exports none :eval yes :cache yes
|
||||
# (setq-local nyqy-syntax-tree
|
||||
# '("S"
|
||||
# ("Obl")
|
||||
# ("S'"
|
||||
# ("NPerg"
|
||||
# ("NP"))
|
||||
# ("VP"
|
||||
# ("NPdat"
|
||||
# ("NP"))
|
||||
# ("VP'"
|
||||
# ("NPabs"
|
||||
# ("NP"
|
||||
# ("S")
|
||||
# ("NP'"
|
||||
# ("Adj")
|
||||
# ("N"))))
|
||||
# ("V'"
|
||||
# ("Mood")
|
||||
# ("Tense")
|
||||
# ("V")
|
||||
# ("Neg")))))))
|
||||
# (conlanging/tree-to-dot nyqy-syntax-tree)
|
||||
# #+END_SRC
|
||||
|
||||
#+BEGIN_SRC dot :file img/nyqy/basic-syntax.png :var input=basic-syntax-tree :exports results :eval yes
|
||||
$input
|
||||
#+END_SRC
|
||||
#+NAME: arbre:syntaxe:basique
|
||||
#+attr_html: :alt Arbre de syntaxe basique du Ñyqy :width 800px
|
||||
#+CAPTION: Arbre de syntaxe basique du Ñyqy
|
||||
#+RESULTS:
|
||||
[[file:img/nyqy/basic-syntax.png]]
|
||||
# #+BEGIN_SRC dot :file img/nyqy/basic-syntax.png :var input=basic-syntax-tree :exports results :eval yes
|
||||
# $input
|
||||
# #+END_SRC
|
||||
# #+NAME: arbre:syntaxe:basique
|
||||
# #+attr_html: :alt Arbre de syntaxe basique du Ñyqy :class gentree
|
||||
# #+CAPTION: Arbre de syntaxe basique du Ñyqy
|
||||
# #+RESULTS:
|
||||
# [[file:img/nyqy/basic-syntax.png]]
|
||||
|
||||
*** Ordre des constituants dans les clauses principales
|
||||
:PROPERTIES:
|
||||
@ -1010,15 +1027,29 @@
|
||||
# - Specific to the main clause constituent order: What is the pragmatically
|
||||
# neutral order of constituents (A/S, P, and V) in basic clauses of the
|
||||
# language?
|
||||
En Ñyqy, l’ordre des éléments principaux de la phrase typique suit un ordre
|
||||
SV pour les phrases transitives et APV pour les phrases intransitives. Il
|
||||
est toutefois à noter que l’agent est nécessairement précédé par un élément
|
||||
datif. Il est cependant possible lorsqu’aucun élément datif n’est à
|
||||
mentionner d’utiliser le terme {{{nyqy(bóq)}}} signifiant « rien, aucun ».
|
||||
# En Ñyqy, l’ordre des éléments principaux de la phrase typique suit un ordre
|
||||
# SV pour les phrases transitives et APV pour les phrases intransitives. Il
|
||||
# est toutefois à noter que l’agent est nécessairement précédé par un élément
|
||||
# datif. Il est cependant possible lorsqu’aucun élément datif n’est à
|
||||
# mentionner d’utiliser le terme {{{nyqy(bóq)}}} signifiant « rien, aucun ».
|
||||
|
||||
Il est également à noter que selon les recherches actuelles, rien ne nous
|
||||
laisse à penser qu’un autre ordre de ces constituants était possible en Ñyqy
|
||||
mis à par l’ajout d’autres éléments obliques en début de phrase.
|
||||
# Il est également à noter que selon les recherches actuelles, rien ne nous
|
||||
# laisse à penser qu’un autre ordre de ces constituants était possible en Ñyqy
|
||||
# mis à par l’ajout d’autres éléments obliques en début de phrase.
|
||||
Le Ñyqy est une langue particulière quant il s’agit de l’ordre de ses
|
||||
éléments principaux dans ses phrases et clauses principales. Tout d’abord,
|
||||
il est bon de noter que le Ñyqy est une langue qui est à 100% ergative.
|
||||
Ainsi, cette langue considère les expérienceurs de verbes intransitifs et
|
||||
les patients de verbes transitifs comme objets, tandis que les agents de
|
||||
verbes transitifs sont considérés comme sujets. En connaissant cela, on peut
|
||||
donc dire que l’ordre typique d’une clause principale Ñyqy est donc OSV.
|
||||
|
||||
Il s’agit d’un ordre de constituants qui est très rare dans les langues
|
||||
naturelles, ce qui explique pourquoi chacune des langues descendant du Ñyqy
|
||||
ne suivent pas cet ordre. La majorité a évolué en SOV, et une minorité des
|
||||
autres langues a quant à elle évolué en OVS. Il est également intéressant de
|
||||
marquer qu’au même moment, chacune a évolué de manière à ce que sa syntaxe
|
||||
soit définie par des règles suivant le couple Nominatif-Accusatif.
|
||||
|
||||
*** Ordre des constituants dans les clauses verbales
|
||||
:PROPERTIES:
|
||||
@ -1033,6 +1064,160 @@
|
||||
:CUSTOM_ID: h-130f774a-bc58-46ca-a172-c413c8236366
|
||||
:END:
|
||||
# - Describe the order(s) of elements in the noun phrase.
|
||||
Dans un groupe nominal, on retrouve en son centre le nom défini par
|
||||
plusieurs éléments pouvant le caractériser, tels que des adjectifs, des
|
||||
phrases relatives, des démonstratifs, des numéraux, des possessifs ou des
|
||||
éléments génitifs. En résumé, l’ordre des éléments est le suivant :
|
||||
|
||||
#+begin_center
|
||||
Gen-Adj-Dem-Num_{12}-Poss-N-Num_{6}-Adj-Rel
|
||||
#+end_center
|
||||
|
||||
Afin de mieux visualiser l’arbre syntaxique des groupes nominaux en Ñyqy, on
|
||||
peut se référer à la figure [[nom-clause-syntax-tree]]. On peut constater que le
|
||||
Ñyqy est une langue qui est donc fortement ascendante (/head-final/), la
|
||||
majorité des constituants d’une clause nominale venant après le nom.
|
||||
|
||||
#+NAME: nom-syntax-tree
|
||||
#+BEGIN_SRC emacs-lisp :exports none :eval yes :cache yes
|
||||
(setq-local nominal-group-syntax-tree
|
||||
'("N'"
|
||||
("N'"
|
||||
("GEN")
|
||||
("N'"
|
||||
("Adj")
|
||||
("N'"
|
||||
("Dem")
|
||||
("N'"
|
||||
("Num₁₂")
|
||||
("N'"
|
||||
("Poss")
|
||||
("N"))
|
||||
("Num₆")))
|
||||
("Adj")))
|
||||
("Rel")))
|
||||
(conlanging/tree-to-dot nominal-group-syntax-tree)
|
||||
#+END_SRC
|
||||
|
||||
#+RESULTS[b65d47c0e3188121f8bcbde11627477b0a6b2904]: nom-syntax-tree
|
||||
: graph{graph[dpi=300];node[shape=plaintext];graph[bgcolor="transparent"];0[label="N'"];1[label="N'"];0 -- 1;11[label="GEN"];1 -- 11;12[label="N'"];1 -- 12;121[label="Adj"];12 -- 121;122[label="N'"];12 -- 122;1221[label="Dem"];122 -- 1221;1222[label="N'"];122 -- 1222;12221[label="Num₁₂"];1222 -- 12221;12222[label="N'"];1222 -- 12222;122221[label="Poss"];12222 -- 122221;122222[label="N"];12222 -- 122222;12223[label="Num₆"];1222 -- 12223;123[label="Adj"];12 -- 123;2[label="Rel"];0 -- 2;}
|
||||
|
||||
#+BEGIN_SRC dot :file img/nyqy/syntax-nominal-clauses.png :var input=nom-syntax-tree :exports results :eval yes :cache yes :class gentree
|
||||
$input
|
||||
#+END_SRC
|
||||
#+NAME: nom-clause-syntax-tree
|
||||
#+ATTR_HTML: :alt Arbre syntaxique des clauses nominales du Ñyqy :class gentree
|
||||
#+ATTR_LATEX: :height 12cm
|
||||
#+CAPTION: Arbre syntaxique des clauses nominales du Ñyqy
|
||||
#+RESULTS[901e0acb85c38044b47c5a3bacee9aaf7df72251]:
|
||||
[[file:img/nyqy/syntax-nominal-clauses.png]]
|
||||
|
||||
**** Possessifs
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-506f68a1-a9de-4d1c-a674-075f130af6a8
|
||||
:END:
|
||||
Concernant les possessifs, ceux-ci se situent directement avant le nom afin
|
||||
de marquer la possession de l’élément par une personne ou une autre entité.
|
||||
Cela dépend du possessif employé. Par exemple « mon chat » se traduit par
|
||||
{{{nyqy(cé oz)}}}.
|
||||
| <c> | <c> |
|
||||
| cé | oz |
|
||||
| POSS.1sg | chat |
|
||||
|
||||
**** Numéraux
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-26b82cb5-1316-46cb-b9c5-279bbded3cc5
|
||||
:END:
|
||||
Pour ce qui est des numéraux, la règle générale est que les unités suivent
|
||||
le nom, tandis que les sixaines le précèdent. Par exemple, « mes vingt
|
||||
chats » se traduit par {{{nyqy(né ñy cé oz qi)}}}.
|
||||
| <c> | <c> | <c> | <c> |
|
||||
| né ñy | cé | oz | qi |
|
||||
| 3×6 | POSS.1sg | chat | 2 |
|
||||
|
||||
# TODO autres types de numéraux
|
||||
|
||||
La position des unités impliquent donc que l’article indéfini {{{nyqy(i),}}}
|
||||
dérivé du chiffre « un » {{{nyqy(mi)}}}, suit immédiatement le nom. Par exemple,
|
||||
« un chat » se traduit par {{{nyqy(oz i)}}}.
|
||||
| <c> | <c> |
|
||||
| oz | i |
|
||||
| chat | art.indef |
|
||||
|
||||
**** Démonstratifs
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-7e9ab73d-0396-440a-aa14-7a5ba680da6f
|
||||
:END:
|
||||
Concernant le démonstratif, ceux-ci se situe précédant les sixaines en Ñyqy,
|
||||
et donc précédant le nom. Ainsi, si l’on souhaite traduire « ces vingt chats
|
||||
à moi » (le génitif relative est ici pour contrecarrer l’impossibilité en
|
||||
français d’utiliser un démostratif et un possessif en même temps), on a donc
|
||||
{{{nyqy(bóc né ñy cé oz qi)}}}.
|
||||
| <c> | <c> | <c> | <c> | <c> |
|
||||
| bóc | né ñy | cé | oz | qi |
|
||||
| DEM.prox | 3×6 | POSS.1sg | chat | 2 |
|
||||
|
||||
La position du démonstratif dans la clause nominale implique également une
|
||||
position identique pour un article défini en Ñyqy. Ainsi, si l’on souhaite
|
||||
traduire « les vingt chats à moi » (à nouveau, le génitif est utilisé ici dû
|
||||
aux limitations du Français), on obtient {{{nyqy(bó né ñy cé oz qi)}}}.
|
||||
| <c> | <c> | <c> | <c> | <c> |
|
||||
| bó | né ñy | cé | oz | qi |
|
||||
| art.def | 3×6 | POSS.1sg | chat | 2 |
|
||||
|
||||
**** Adjectifs
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-f0c023d2-ead0-412b-8ed3-d02507af0256
|
||||
:END:
|
||||
Concernant les adjectifs, ceux-ci se divisent en plusieurs classes :
|
||||
- Adjectifs d’opinion
|
||||
- Adjectifs de taille
|
||||
- Adjectifs de quantité
|
||||
- Adjectifs d’âge
|
||||
- Adjectifs d’origine
|
||||
- Adjectifs d’objectif
|
||||
- Adjectifs de matériaux
|
||||
- Adjectifs de forme
|
||||
- Adjectifs de couleur
|
||||
En Ñyqy, ils apparaissent dans l’ordre ci-dessus et sont classés par
|
||||
objectivité, et tous viennent après le nom à l’exception des adjectifs
|
||||
d’opinion. Ainsi, les adjectifs les plus subjectifs arrivent en premier, et
|
||||
les adjectifs les plus objectifs arrivent en dernier.
|
||||
|
||||
Il est à noter que :
|
||||
- les adjectifs de forme et de matériaux ne peuvent se faire que via
|
||||
l’utilisation d’un génitif de type « NOM GEN » (par exemple « carré GEN
|
||||
table » pour dire « table carrée »)
|
||||
- que les adjectifs d’origine ne se forment qu’avec une particule locative
|
||||
- que les adjectifs d’objectif ne se forment qu’avec une particule
|
||||
instrumentative.
|
||||
|
||||
Ainsi, si l’on souhaite traduire « un gros vieux chat noir et beau », on
|
||||
obtient {{{nyqy(syg oz goñ noc zuj)}}}.
|
||||
| syg | oz | i | goñ | noc | zuj |
|
||||
| beau | chat | art.indef | gros | vieux | noir |
|
||||
|
||||
**** Génitif
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-f5a28bb8-103e-4f96-979c-89df0286ae36
|
||||
:END:
|
||||
Ensuite vient le génitif qui se situe avant les adjectifs d’opinion. On y
|
||||
trouvera donc exclusivement la particule grammaticale {{{nyqy(pom)}}} qui sert à
|
||||
marquer le génitif, précédée par une clause nominale qui définira la clause
|
||||
nominale actuelle. Par exemple, « le chat de mon voisin » peut se traduire
|
||||
par {{{nyqy(cé wóseq pom bó oz)}}}.
|
||||
| cé | wóseq | pom | bó | oz |
|
||||
| POSS.1sg | voisin | GEN | art.def | chat |
|
||||
|
||||
**** Clauses relatives
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-00f9960f-b515-4fb0-be59-b53573607b8e
|
||||
:END:
|
||||
Enfin, les clauses relatives arrivent à la fin des clauses nominales. Ainsi,
|
||||
si l’on souhaite dire « mon chat qui mange est beau », on obtient la traduction
|
||||
{{{nyqy(cé oz coq syg)}}}.
|
||||
| cé | oz | coq | syg |
|
||||
| POSS.1sg | chat | manger | beau |
|
||||
|
||||
*** Phrases adpositionelles
|
||||
:PROPERTIES:
|
||||
@ -1995,11 +2180,6 @@
|
||||
|
||||
Ce qui donne donc 1052.
|
||||
|
||||
** Références
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-39866d3e-b4f9-4885-8581-53f7342ddf0c
|
||||
:END:
|
||||
|
||||
* Dictionnaire
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-33a20978-20d6-4a26-8286-016d6c64b654
|
||||
@ -2012,10 +2192,10 @@
|
||||
- {{{nyqy(beñ)}}} ::
|
||||
1. (n) dents
|
||||
2. (v) mordre, croquer
|
||||
- {{{nyqy(bóbó)}}} ::
|
||||
1. (n) cœur
|
||||
2. (adj) ému (le cœur qui bat à cause d’une émotion)
|
||||
3. (adj) essouflé
|
||||
- {{{nyqy(bó)}}} ::
|
||||
1. (art def) le, la, les, article défini. Voir /bóc/
|
||||
- {{{nyqy(bóc)}}} ::
|
||||
1. (n) ceci, ça, démonstratif de proximité
|
||||
- {{{nyqy(bú)}}} ::
|
||||
1. (pron) deuxième personne
|
||||
|
||||
@ -2023,6 +2203,8 @@
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-fb76cf3b-d664-4ab6-9531-320d0b8f0807
|
||||
:END:
|
||||
- {{{nyqy(cé)}}} ::
|
||||
1. (poss) mon, ma, mes, possesseur de la première personne
|
||||
- {{{nyqy(co)}}} ::
|
||||
1. (gp.SUBJ.PST) marqueur pour verbes du subjonctif accomplis
|
||||
2. (nbr) cinq
|
||||
@ -2103,6 +2285,8 @@
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-3f1fd2e3-6863-4eef-89a8-7aab21873f87
|
||||
:END:
|
||||
- {{{nyqy(i)}}} ::
|
||||
1. (art indef) un, une, des, article defini. Voir /mi/
|
||||
- {{{nyqy(icm)}}} ::
|
||||
1. (n) bras
|
||||
2. (n) branche (arbre)
|
||||
@ -2130,6 +2314,8 @@
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-eb766e30-8f82-4df0-b912-978542459362
|
||||
:END:
|
||||
- {{{nyqy(még)}}} ::
|
||||
1. (adv) beaucoup, très
|
||||
- {{{nyqy(meém)}}} ::
|
||||
1. (n) grand-mère (affectueux)
|
||||
- {{{nyqy(meq)}}} ::
|
||||
@ -2154,6 +2340,8 @@
|
||||
1. (n) maison (bâtiment), habitation
|
||||
- {{{nyqy(muz)}}} ::
|
||||
1. (n) rouge, pourpre, fruit
|
||||
- {{{nyqy(mygú)}}} ::
|
||||
1. (n) singe
|
||||
|
||||
** N
|
||||
:PROPERTIES:
|
||||
@ -2161,6 +2349,9 @@
|
||||
:END:
|
||||
- {{{nyqy(né)}}} ::
|
||||
1. (nbr) trois
|
||||
- {{{nyqy(noc)}}} ::
|
||||
1. (n) vieillesse, grand âge
|
||||
2. (adj) vieux, âgé
|
||||
- {{{nyqy(nó)}}} ::
|
||||
1. (n) poitrine, seins (attribut féminin)
|
||||
2. (adj) maternité
|
||||
@ -2174,6 +2365,8 @@
|
||||
:END:
|
||||
- {{{nyqy(ñe)}}} ::
|
||||
1. (n) maison
|
||||
- {{{nyqy(ñocm)}}} ::
|
||||
1. (n) personne, humain, quelqu’un
|
||||
- {{{nyqy(ñójb)}}} ::
|
||||
1. (n) oiseau
|
||||
- {{{nyqy(ñuné)}}} ::
|
||||
@ -2302,6 +2495,9 @@
|
||||
1. (n) souffle, voir /sujéq/ et /só/
|
||||
2. (n) vent
|
||||
3. (adj) fraîcheur, froid
|
||||
- {{{nyqy(syg)}}} ::
|
||||
1. (n) beauté
|
||||
2. (adj) beau
|
||||
|
||||
** U
|
||||
:PROPERTIES:
|
||||
@ -2332,6 +2528,10 @@
|
||||
- {{{nyqy(wésyqun)}}} ::
|
||||
1. (n) Shaman. Aspirant aux esprits, aux âmes, aux dieux. Voir aussi
|
||||
/wésy/, /qun/
|
||||
- {{{nyqy(wóseq)}}} ::
|
||||
1. (n) voisin
|
||||
2. (adj) proche
|
||||
3. (adj) voisin
|
||||
- {{{nyqy(wó)}}} ::
|
||||
1. (n) humain
|
||||
2. (adj) d’apparence humaine
|
||||
@ -2389,6 +2589,85 @@
|
||||
1. (n) chose, objet abstrait
|
||||
- {{{nyqy(zuj)}}} ::
|
||||
1. (n) nuit, noir, ombre
|
||||
2. (adj) noir, sombre
|
||||
- {{{nyqy(zúmu)}}} ::
|
||||
1. (vt) voir
|
||||
|
||||
* Notes :noexport:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-1905bd91-a4c5-4b60-acea-5ed10bc655af
|
||||
:END:
|
||||
À corriger :
|
||||
- ñy = 6
|
||||
- qy = 1sg
|
||||
|
||||
** Ñyqy syntax
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-cd39b6f7-85e0-4168-a89d-829fa1dec5c3
|
||||
:END:
|
||||
Prep ⊃ ((NDem ∨ NNum ∨ NPoss ⊃ NAdj) & (NAdj ⊃ NGen) & (NGen ⊃ NRel))
|
||||
Posp ⊃ ((AdjN ∨ RelN ⊃ DemN & NumN & PossN) & (DemN ∨ NumN ∨ PossN ⊃ GenN))
|
||||
|
||||
Lang D of [[https://docs.google.com/spreadsheets/d/1ZJV1C8g-u8PbZIEHp8t7JT8SSyY7ZetEZ5oBJJn0g2U/edit#gid=0][this chart]], evolving to F.
|
||||
|
||||
Le Ñyqy est une langue ascendante (/head-final/ en anglais). Ordre des
|
||||
éléments :
|
||||
- NAdj
|
||||
|
||||
Opinion-N-Size-Quantity-Age-Origin-Purpose-Material-Shape-Color
|
||||
|
||||
Shape et Material => GEN, Origin => LOC, Purpose => INST
|
||||
|
||||
| ycoj | pim | még | goñ | ñy | cojmuj |
|
||||
| bonne | pomme | très | grosse | nombreuse | rouge |
|
||||
- NRel
|
||||
|
||||
pomme que je mange
|
||||
- DemN
|
||||
| bóc | oz |
|
||||
| ce | chat |
|
||||
|
||||
- def.art N
|
||||
|
||||
/bó/ from /bóc/
|
||||
|
||||
la pomme :
|
||||
| bó | pim |
|
||||
| def.art | pomme |
|
||||
- NumNNum
|
||||
- Num_{12} N Num_{6}
|
||||
|
||||
Les unités suivent le groupe nominal tandis que les sixaines le précèdent.
|
||||
Penser à 6x éléments + y.
|
||||
|
||||
20 pommes (litt 3×6 pommes 2)
|
||||
| né | ñy | pim | qi |
|
||||
| 3 | 6 | pomme | 2 |
|
||||
- N art.indef
|
||||
|
||||
/i/ from /mi/
|
||||
|
||||
une pomme :
|
||||
| pim | i |
|
||||
| pomme | indef.art |
|
||||
- ordNum N
|
||||
|
||||
Les nombres ordinaux viennent intégralement avant le nom
|
||||
- Declarative numbers: declNum Gen N
|
||||
|
||||
Pomme première :
|
||||
| mi | pom | pim |
|
||||
| 1 | GEN | pomme |
|
||||
- PossN
|
||||
|
||||
Comme en français, /ma pomme/
|
||||
- GenN
|
||||
|
||||
Comme le /’s/ en anglais, maison de moi :
|
||||
| ñy | pom | ñe |
|
||||
| 1sg | GEN | maison |
|
||||
|
||||
Gen-Adj-Dem-Num-Poss-N-Num-Adj-Rel
|
||||
|
||||
* Choses à faire [2/4] :noexport:
|
||||
:PROPERTIES:
|
||||
@ -2471,6 +2750,12 @@
|
||||
et sa phonétique soient sur une ligne différente de la définition, avec la
|
||||
définition qui est indentée.
|
||||
|
||||
** TODO Compléter la liste Swadesh [1/3]
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-32a2f3e6-0d2d-4693-99d8-d912446ddedf
|
||||
:END:
|
||||
Compléter la liste du fichier [[file:swadesh.org::#h-a5b4a65c-68ab-4630-b054-da816d679cfd][Swadesh#Ñyqy]].
|
||||
|
||||
** TODO Simplifier les fonctions du layer ~conlanging~
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-b6fca087-e439-4bdf-bd26-43803d424a40
|
||||
@ -2479,12 +2764,6 @@
|
||||
serait temps de simplifier les fonctions et réduire le nombre d’entre elles
|
||||
dans le layer ~conlanging~.
|
||||
|
||||
** TODO Compléter la liste Swadesh [1/3]
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h-32a2f3e6-0d2d-4693-99d8-d912446ddedf
|
||||
:END:
|
||||
Compléter la liste du fichier [[file:swadesh.org::#h-a5b4a65c-68ab-4630-b054-da816d679cfd][Swadesh#Ñyqy]].
|
||||
|
||||
*** DONE dot tree
|
||||
CLOSED: [2020-01-29 mer. 21:50]
|
||||
:PROPERTIES:
|
||||
|
@ -1,10 +1,10 @@
|
||||
#+TITLE: Sitemap for project langue-phundrak-com-org
|
||||
|
||||
- [[file:index.org][Langues construites de P’undrak]]
|
||||
- [[file:eittland.org][Une Grammaire de l’Eittlandais]]
|
||||
- [[file:hjelp.org][Une Grammaire du Hjelp]]
|
||||
- [[file:matter.org][Une Grammaire du Mattér]]
|
||||
- [[file:taso.org][Une Grammaire du Tãso]]
|
||||
- [[file:nyqy.org][Une Grammaire du Ñyqy]]
|
||||
- [[file:eittland.org][Eittlandais]]
|
||||
- [[file:hjelp.org][Hjelp]]
|
||||
- [[file:matter.org][Mattér]]
|
||||
- [[file:taso.org][Tãso]]
|
||||
- [[file:nyqy.org][Ñyqy]]
|
||||
- en
|
||||
- [[file:en/nyqy.org][Grammar of Ñyqy]]
|
||||
- [[file:en/nyqy.org][Ñyqy]]
|
||||
|
591
web/style/style.scss
Normal file
@ -0,0 +1,591 @@
|
||||
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic|Roboto+Slab:400,700|Inconsolata:400,700);
|
||||
@font-face {
|
||||
font-family: "DoulosSIL";
|
||||
font-display: swap;
|
||||
src: url("/fonts/DoulosSIL-R.woff");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Noto Sans Runes";
|
||||
font-display: swap;
|
||||
src: url("../fonts/NotoSansRunic-Regular.ttf");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Helvetica Neue";
|
||||
font-display: swap;
|
||||
src: url("../fonts/HelveticaNeue.ttf");
|
||||
}
|
||||
|
||||
/* Variables *****************************************************************/
|
||||
|
||||
$switch-small-screen: "only screen and (max-width: 600px)";
|
||||
$switch-smaller-screen: "only screen and (max-width: 400px)";
|
||||
|
||||
$navbar-height: 70px;
|
||||
$postamble-height: 55px;
|
||||
|
||||
// Themes /////////////////////////////////////////////////////////////////////
|
||||
|
||||
$dark: rgba( 52, 73, 94, 1);
|
||||
$black: rgba( 0, 0, 0, 1);
|
||||
$accent1: rgba( 93, 115, 126, 1);
|
||||
$accent2: rgba( 92, 172, 126, 1);
|
||||
$accent3: rgba(197, 193, 155, 1);
|
||||
$light: #eee;
|
||||
$grey1: #f8f8f8;
|
||||
$grey2: #dbe1e8;
|
||||
$grey3: #b2becd;
|
||||
$grey4: #6c7983;
|
||||
$grey5: #454e56;
|
||||
$grey6: #12181b;
|
||||
|
||||
// Accent 1
|
||||
// Black
|
||||
$gradient-accent1-black-left: linear-gradient(to left, $black, $accent1, $accent1);
|
||||
$gradient-accent1-black-right: linear-gradient(to right, $black, $accent1, $accent1);
|
||||
// Dark
|
||||
$gradient-accent1-dark-left: linear-gradient(to left, $dark, $accent1);
|
||||
$gradient-accent1-dark-right: linear-gradient(to right, $dark, $accent1);
|
||||
// Light
|
||||
$gradient-accent1-light-left: linear-gradient(to left, $light, $accent1);
|
||||
$gradient-accent1-light-right: linear-gradient(to right, $light, $accent1);
|
||||
// Accent 2
|
||||
// Black
|
||||
$gradient-accent2-black-left: linear-gradient(to left, $black, $accent2, $accent2);
|
||||
$gradient-accent2-black-right: linear-gradient(to right, $black, $accent2, $accent2);
|
||||
// Dark
|
||||
$gradient-accent2-dark-left: linear-gradient(to left, $dark, $accent2);
|
||||
$gradient-accent2-dark-right: linear-gradient(to right, $dark, $accent2);
|
||||
// Light
|
||||
$gradient-accent2-light-left: linear-gradient(to left, $light, $accent2);
|
||||
$gradient-accent2-light-right: linear-gradient(to right, $light, $accent2);
|
||||
// Accent 3
|
||||
// Black
|
||||
$gradient-accent3-black-left: linear-gradient(to left, $black, $accent3, $accent3);
|
||||
$gradient-accent3-black-right: linear-gradient(to right, $black, $accent3, $accent3);
|
||||
// Dark
|
||||
$gradient-accent3-dark-left: linear-gradient(to left, $dark, $accent3);
|
||||
$gradient-accent3-dark-right: linear-gradient(to right, $dark, $accent3);
|
||||
// Light
|
||||
$gradient-accent3-light-left: linear-gradient(to left, $light, $accent3);
|
||||
$gradient-accent3-light-right: linear-gradient(to right, $light, $accent3);
|
||||
|
||||
.light {
|
||||
$bg-nav: $gradient-accent3-light-right;
|
||||
$border-color: $accent1;
|
||||
|
||||
color: $dark;
|
||||
background: $light;
|
||||
|
||||
transition: background 500ms ease-in-out, color 1s ease-in-out;
|
||||
|
||||
pre {
|
||||
box-shadow: 3px 3px $dark;
|
||||
border-color: $light;
|
||||
}
|
||||
|
||||
pre.src {
|
||||
&::before {
|
||||
background-color: $light;
|
||||
color: $dark;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar, header {
|
||||
background: $bg-nav;
|
||||
}
|
||||
|
||||
.status {
|
||||
background: $gradient-accent3-light-left;
|
||||
color: $dark;
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
border-bottom: 1px dotted $accent3;
|
||||
|
||||
.tooltiptext {
|
||||
background-color: $accent3;
|
||||
color: $dark;
|
||||
|
||||
&::after {
|
||||
border-color: $accent3 transparent transparent transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
background: $accent3;
|
||||
color: $dark;
|
||||
}
|
||||
|
||||
#content {
|
||||
a {
|
||||
box-shadow: inset 0 -3px 0 $accent3;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
|
||||
&:hover {
|
||||
box-shadow: inset 0 -23px 0 $accent3;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
border: 1px solid $dark;
|
||||
}
|
||||
|
||||
th {
|
||||
background: darken($light, 5%);
|
||||
}
|
||||
|
||||
.gentree {
|
||||
filter: invert(0%);
|
||||
transition: filter 1s ease-in-out;
|
||||
}
|
||||
}
|
||||
|
||||
.dark, .black {
|
||||
$bg-nav: $gradient-accent2-dark-right;
|
||||
$border-color: $dark;
|
||||
|
||||
color: $light;
|
||||
background: $dark;
|
||||
|
||||
transition: background 500ms ease-in-out, color 1s ease-in-out;
|
||||
|
||||
pre {
|
||||
box-shadow: 3px 3px $dark;
|
||||
border: none;
|
||||
}
|
||||
|
||||
pre.src {
|
||||
&::before {
|
||||
background-color: $dark;
|
||||
color: $light;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar, header {
|
||||
background: $bg-nav;
|
||||
}
|
||||
|
||||
.status {
|
||||
background: $gradient-accent2-dark-left;
|
||||
color: $light;
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
border-bottom: 1px dotted $accent1;
|
||||
|
||||
.tooltiptext {
|
||||
background-color: $accent1;
|
||||
color: $light;
|
||||
|
||||
&::after {
|
||||
border-color: $accent1 transparent transparent transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
background: $accent3;
|
||||
color: $dark;
|
||||
}
|
||||
|
||||
#content {
|
||||
a {
|
||||
box-shadow: inset 0 -3px 0 $accent2;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
|
||||
&:hover {
|
||||
box-shadow: inset 0 -23px 0 $accent2;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
border: 1px solid $accent1;
|
||||
}
|
||||
|
||||
th {
|
||||
background: darken($dark, 2.5%);
|
||||
}
|
||||
|
||||
.gentree {
|
||||
filter: invert(100%);
|
||||
transition: filter 1s ease-in-out;
|
||||
}
|
||||
}
|
||||
|
||||
.black {
|
||||
$bg-nav: $gradient-accent1-black-right;
|
||||
|
||||
background: $black;
|
||||
|
||||
pre {
|
||||
box-shadow: 3px 3px $light;
|
||||
border: none;
|
||||
}
|
||||
|
||||
pre.src {
|
||||
&::before {
|
||||
background-color: $black;
|
||||
color: $light;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar, header {
|
||||
background: $bg-nav;
|
||||
}
|
||||
|
||||
.status {
|
||||
background: $gradient-accent1-black-left;
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
background: $dark;
|
||||
color: $light;
|
||||
}
|
||||
|
||||
#content {
|
||||
a {
|
||||
box-shadow: inset 0 -3px 0 $accent1;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
|
||||
&:hover {
|
||||
box-shadow: inset 0 -23px 0 $accent1;
|
||||
transition: box-shadow 300ms ease-in-out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
border: 1px solid $light;
|
||||
}
|
||||
|
||||
th {
|
||||
background: lighten($black, 15%);
|
||||
}
|
||||
}
|
||||
|
||||
/* Style *********************************************************************/
|
||||
|
||||
* {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: "Noto Sans Runes", "DoulosSIL", "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif;
|
||||
font-size: 1.2em;
|
||||
|
||||
transition: background 500ms ease-in-out, color 1s ease-in-out;
|
||||
|
||||
header, .navbar {
|
||||
transition: background 500ms ease-in-out, color 1s ease-in-out;
|
||||
ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: currentColor;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
z-index: 4;
|
||||
height: $navbar-height;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.navbar-nav {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-evenly;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
header {
|
||||
padding: 1em;
|
||||
margin-top: $navbar-height;
|
||||
margin-bottom: 1em;
|
||||
padding-bottom: 6em;
|
||||
text-align: center;
|
||||
clip-path: polygon(50% 0%, 100% 0, 100% 80%, 50% 100%, 0 80%, 0 0);
|
||||
transition: background 500ms ease-in-out;
|
||||
|
||||
.title {
|
||||
font-size: 5em;
|
||||
margin: 0;
|
||||
@media #{$switch-small-screen} {
|
||||
font-size: 3em;
|
||||
}
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
z-index: -1;
|
||||
|
||||
border-bottom-right-radius: 8px;
|
||||
border-bottom-left-radius: 8px;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
min-height: 3rem;
|
||||
margin-top: 1rem;
|
||||
padding: 0.5rem;
|
||||
top: 0;
|
||||
|
||||
box-shadow: rgba(2, 8, 20, 0.1) 0px 0.175em 0.5em;
|
||||
transform: translateX(-40%);
|
||||
|
||||
transition: opacity 500ms ease-in-out, top 500ms ease-in-out;
|
||||
}
|
||||
|
||||
.has-dropdown {
|
||||
&:focus-within {
|
||||
.dropdown {
|
||||
opacity: 1;
|
||||
top: $navbar-height;
|
||||
z-index: 5;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
#table-of-contents {
|
||||
top: $navbar-height / 1.3;
|
||||
opacity: 1;
|
||||
z-index: 5;
|
||||
height: 500%;
|
||||
pointer-events: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#theme-dropdown {
|
||||
width: 250px;
|
||||
flex-direction: row;
|
||||
transform: translateX(-75%);
|
||||
}
|
||||
|
||||
#drop-page {
|
||||
flex-direction: column;
|
||||
transform: translateX(-40%);
|
||||
li {
|
||||
padding: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
#drop-share {
|
||||
li {
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-item {
|
||||
cursor: pointer;
|
||||
|
||||
a {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
size: 0.7rem;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
#table-of-contents {
|
||||
flex-direction: column;
|
||||
padding: 20px;
|
||||
float: right;
|
||||
overflow-y: auto;
|
||||
height: 0%;
|
||||
width: 75%;
|
||||
min-width: 350px;
|
||||
transform: translateX(-45%);
|
||||
font-size: 0.9em;
|
||||
top: -40px;
|
||||
|
||||
transition: height 500ms ease-in-out, opacity 500ms ease-in-out, top 500ms ease-in-out;
|
||||
|
||||
li {
|
||||
padding: 5px 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
#text-table-of-contents {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#content {
|
||||
padding: 50px;
|
||||
padding-top: 0;
|
||||
max-width: 1000px;
|
||||
margin: 0 auto;
|
||||
text-align: justify;
|
||||
|
||||
a {
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
|
||||
#postamble {
|
||||
display: grid;
|
||||
grid-template-areas: 'author email date';
|
||||
|
||||
@media #{$switch-small-screen} {
|
||||
grid-template-areas: 'author date' 'email email';
|
||||
}
|
||||
|
||||
@media #{$switch-smaller-screen} {
|
||||
grid-template-areas: 'author' 'date' 'email';
|
||||
}
|
||||
|
||||
font-size: 0.8em;
|
||||
align-content: space-evenly;
|
||||
text-align: center;
|
||||
|
||||
p {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.author {
|
||||
grid-area: author;
|
||||
}
|
||||
|
||||
.email {
|
||||
grid-area: email;
|
||||
}
|
||||
|
||||
.date {
|
||||
grid-area: date;
|
||||
}
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2.5em;
|
||||
@media #{$switch-small-screen} {
|
||||
font-size: 1.75em;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 2em;
|
||||
|
||||
@media #{$switch-small-screen} {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.5em;
|
||||
|
||||
@media #{$switch-small-screen} {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25em;
|
||||
|
||||
@media #{$switch-small-screen} {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
|
||||
.tooltiptext {
|
||||
visibility: hidden;
|
||||
|
||||
margin-left: -60px; /* Half the width */
|
||||
bottom: 100%;
|
||||
left: 10%;
|
||||
padding: 5px 10px;
|
||||
text-align: center;
|
||||
border-radius: 6px;
|
||||
|
||||
position: absolute;
|
||||
z-index: 5;
|
||||
|
||||
|
||||
&::after {
|
||||
content: " ";
|
||||
position: absolute;
|
||||
top: 100%; /* At the bottom of the tooltip */
|
||||
left: 50%;
|
||||
margin-left: -5px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.tooltiptext {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
padding: 0;
|
||||
margin: 20px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.largetable {
|
||||
overflow-y: auto;
|
||||
margin-top:20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
table {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
th, td {
|
||||
white-space: nowrap;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
img {
|
||||
max-height: 600px;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.figure {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding-inline-start: 20px;
|
||||
}
|
||||
|
||||
pre.src {
|
||||
overflow-y: auto;
|
||||
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
# -*- org-confirm-babel-evaluate: nil -*-
|
||||
#+TITLE: Une Grammaire du Tãso
|
||||
#+TITLE: Tãso
|
||||
#+HTML_HEAD: <meta name="description" content="Grammaire détaillée de la langue construite Tãso" />
|
||||
#+HTML_HEAD: <meta property="og:title" content="Grammaire du Tãso" />
|
||||
#+HTML_HEAD: <meta property="og:description" content="Grammaire détaillée de la langue construite Tãso" />
|
||||
@ -251,7 +251,7 @@
|
||||
$input
|
||||
#+END_SRC
|
||||
#+NAME: arbre:vow
|
||||
#+ATTR_HTML: :alt Arbre des voyelles du Tãso :align center :width 100%
|
||||
#+ATTR_HTML: :alt Arbre des voyelles du Tãso :class gentree
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: Arbre des caractéristiques des voyelles du Tãso
|
||||
#+RESULTS[eff961e714f2313ac2e974637800b18d5c11c928]:
|
||||
@ -357,7 +357,7 @@
|
||||
$input
|
||||
#+END_SRC
|
||||
#+NAME: arbre:cons
|
||||
#+ATTR_HTML: :alt Arbre des consonnes du Tãso :align center :width 100%
|
||||
#+ATTR_HTML: :alt Arbre des consonnes du Tãso :class gentree
|
||||
#+ATTR_LATEX: :float sideways
|
||||
#+CAPTION: Arbre des caractéristiques des consonnes du Tãso
|
||||
#+RESULTS[9bf7d97ca85780e74e9fbb5fc69cbc9800439890]:
|
||||
|