diff --git a/templates/Japanese sentences (nb)/Production/back.html b/templates/Japanese sentences (nb)/Production/back.html new file mode 100644 index 0000000..cf2cb41 --- /dev/null +++ b/templates/Japanese sentences (nb)/Production/back.html @@ -0,0 +1,42 @@ +
+ +{{FrontSide}} + +
+ +
{{SentEng}}
+
{{VocabKanji}}
+ +{{#VocabKanji}} +
+ {{VocabPitchPattern}} + {{^VocabPitchPattern}}{{kana:VocabFurigana}}{{/VocabPitchPattern}} + 【{{VocabKanji}}】 +
+{{/VocabKanji}} + +{{#VocabDef}} +
+ {{edit:furigana:VocabDef}} +
+{{/VocabDef}} + +{{#Notes}} +
+
Notes
+
{{furigana:Notes}}
+
+{{/Notes}} + +{{#Source}}
{{Source}}
{{/Source}} + +
+ + + +
diff --git a/templates/Japanese sentences (nb)/Production/front.html b/templates/Japanese sentences (nb)/Production/front.html new file mode 100644 index 0000000..2d6c78d --- /dev/null +++ b/templates/Japanese sentences (nb)/Production/front.html @@ -0,0 +1,48 @@ +{{#MakeProductionCard}} + +
+ +
{{#Tags}}
{{Tags}}
{{/Tags}}
+{{#Image}}
{{Image}}
{{/Image}} +
+
+ {{edit:furigana:SentFurigana}} + {{^SentFurigana}}{{edit:furigana:VocabFurigana}}{{/SentFurigana}} +
+
{{VocabAudio}}{{SentAudio}}
+
+
+ + + +{{/MakeProductionCard}} diff --git a/templates/Japanese sentences (nb)/README.md b/templates/Japanese sentences (nb)/README.md new file mode 100644 index 0000000..c243f17 --- /dev/null +++ b/templates/Japanese sentences (nb)/README.md @@ -0,0 +1,91 @@ +# Japanese sentences (nb) + +This is Tatsumoto's [Japanese sentences][] template which I've altered to my +liking. I'm not sure why would anyone prefer this one, but in such unlikely +case it is here for your convenience. + +## What's different? + +In this document I will only mention the modifications to the original +template; for general information about it refer to the link above. + +### Single template for both targeted sentence cards and word cards + +The template was altered to show `VocabKanji`/`VocabFurigana` pair in place of +`SentKanji`/`SentFurigana` when the former are empty. This makes it suitable +not only for sentence cards, but for word cards too. In fact, I have converted +my entire collection (which contains both mined notes and the entirety of +[Ankidrone Starter Pack][]) to this note type and enjoy the following benefits +of having single card type for all purposes: + + * Whenever I want to convert a word card to a TSC card or the other way + around, I don't have to do a full database upload on the next sync. + * If I want to change the appearance of my cards, there is only one place to + make edits to, instead of two or more. + +### Added fields, removed fields + + * `Source` field was added for sake of recording the origin of a mined + sentence. It is displayed in less prominent fashion than the `Notes` field + and doesn't distract you from the actual notes that you might have. This + feature was shamelessly borrowed from cyphar's [Japanese Mined Sentences][] + template. + * `MorphManFocus` field was removed together with its related JavaScript and + styling, since I don't use MorphMan. + * `VocabPitchNum` field was removed together with pitch accent colorizing + script. I found the colorization annoying, and apart from machine + processing, pitch numbers are superseded by proper pitch accent annotations + presented in the `VocabPitchPattern` field. + +## Screenshots + +Below are the screenshots of *Recognition* cards. *Production* cards are not +much different. + +![Sentence card](sentence_card.webp)
+*A sentence card. Notice the `Source` field below the image.* + +![Word card](word_card.webp)
+*A word card.* + +## Configuration + +Most of the instructions for *Japanese sentences* template apply here as well, +with few changes. + +### *Yomichan* settings + +I prefer letting [AJT Pitch Accent][] add-on generate pitch accents instead of +*Yomichan*, as HTML produced by the former is much cleaner than that of the +latter. Therefore, *Yomichan*'s card format configuration becomes even +simpler: + +| Field | Value | +| --------------- | ------------------------------------------------- | +| `SentKanji` | `{cloze-prefix}{cloze-body}{cloze-suffix}` | +| `VocabKanji` | `{expression}` | +| `VocabFurigana` | `{furigana-plain}` | +| `VocabDef` | `{glossary-brief}` | + +### *mpvacious* settings + +Make sure that your `subs2srs.conf` contains these lines: + + miscinfo_enable=yes + miscinfo_field=Source + +## Tips and tricks + + * If you want to try this template out, you don't need to say goodbye to + contents of `MorphManFocus` and `VocabPitchNum` fields in your cards. + Import the template, then manually add these two fields back. After that, + you can convert your notes with no data loss. `antp.sh update` will work + safely as well. + * *Ankidrone Starter Pack* decks *N2* and *N1* contain item numbers in the + `Notes` field. When converting them, you may want to map `Notes` to + `Source`. + + [AJT Pitch Accent]: https://ankiweb.net/shared/info/1225470483 + [Ankidrone Starter Pack]: https://tatsumoto.neocities.org/blog/basic-vocabulary.html#anki-deck + [Japanese Mined Sentences]: ../Japanese%20Mined%20Sentences%20(cyphar) + [Japanese sentences]: ../Japanese%20sentences diff --git a/templates/Japanese sentences (nb)/Recognition/back.html b/templates/Japanese sentences (nb)/Recognition/back.html new file mode 100644 index 0000000..a250714 --- /dev/null +++ b/templates/Japanese sentences (nb)/Recognition/back.html @@ -0,0 +1,65 @@ +
+
{{FrontSide}}
+ +
+
+ {{edit:furigana:SentFurigana}} + {{^SentFurigana}} + {{edit:furigana:SentKanji}} + {{^SentKanji}} + {{edit:furigana:VocabFurigana}} + {{^VocabFurigana}} + {{edit:furigana:VocabKanji}} + {{/VocabFurigana}} + {{/SentKanji}} + {{/SentFurigana}} +
+ {{#SentEng}} +
{{hint:SentEng}}
+ {{/SentEng}} +
+ +
+ {{VocabAudio}}{{SentAudio}}{{VocabPitchPattern}} + {{^VocabPitchPattern}}{{text:kana:VocabFurigana}}{{/VocabPitchPattern}} + {{#VocabKanji}}【{{text:kanji:VocabKanji}}】{{/VocabKanji}} +
+ + {{#VocabDef}} +
{{edit:furigana:VocabDef}}
+ {{/VocabDef}} + {{#Notes}} +
+
Notes
+
{{furigana:Notes}}
+
+ {{/Notes}} + {{#Image}} +
{{Image}}
+ {{/Image}} + {{#Source}} +
{{Source}}
+ {{/Source}} + +
+ + +
+ + diff --git a/templates/Japanese sentences (nb)/Recognition/front.html b/templates/Japanese sentences (nb)/Recognition/front.html new file mode 100644 index 0000000..91ca9c5 --- /dev/null +++ b/templates/Japanese sentences (nb)/Recognition/front.html @@ -0,0 +1,48 @@ + + +
+
+ {{#Tags}} +
{{Tags}}
+ {{/Tags}} +
+ +
+
+ {{edit:furigana:SentKanji}} + {{^SentKanji}} + {{edit:kanji:SentFurigana}} + {{^SentFurigana}} + {{edit:furigana:VocabKanji}} + {{^VocabKanji}} + {{edit:kanji:VocabFurigana}} + {{/VocabKanji}} + {{/SentFurigana}} + {{/SentKanji}} +
+
+
+ + diff --git a/templates/Japanese sentences (nb)/sentence_card.webp b/templates/Japanese sentences (nb)/sentence_card.webp new file mode 100644 index 0000000..a59a9c4 Binary files /dev/null and b/templates/Japanese sentences (nb)/sentence_card.webp differ diff --git a/templates/Japanese sentences (nb)/template.css b/templates/Japanese sentences (nb)/template.css new file mode 100644 index 0000000..0648778 --- /dev/null +++ b/templates/Japanese sentences (nb)/template.css @@ -0,0 +1,395 @@ +@charset "utf-8"; + +@font-face { + font-family: "KanjiStrokeOrders"; + src: local("KanjiStrokeOrders"), url("_kso.ttf"); +} + +@font-face { + font-family: "Yu Mincho"; + src: local("Yu Mincho"), local("游明朝"), url("_yumin.ttf"); +} + +@font-face { + font-family: "Yu Mincho"; + src: local("Yu Mincho Demibold"), local("游明朝 Demibold"), url("_yumindb.ttf"); + font-weight: 600; +} + +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +.card { + background-color: #fffaf0; + color: #2a1b0a; + font-family: "Noto Serif", "Noto Serif CJK JP", Yu Mincho, "Liberation Serif", "Times New Roman", Times, Georgia, + Serif; + font-size: 24px; + text-align: left; + line-height: 1.4; + margin: 0 auto; +} + +.card1 { + color: inherit; +} + +.card2 .jpsentence ruby rt { + opacity: 0; +} +.card2 .jpsentence:hover ruby rt { + opacity: 1; +} + +@media screen and (min-width: 820px) { + .card { + background-color: #e5d7c9; + display: flex; + justify-content: center; + } + .wrap { + width: 800px; + padding: 0 5px 0; + background-color: #fffaf0; + border-left: 1px solid #c9bcbc; + border-right: 1px solid #c9bcbc; + min-height: 100vh; + } + .wrap .wrap { + width: auto; + padding: 0; + min-height: 0; + border: 0; + } +} + +hr { + margin: 2px 0; + clear: both; + border: 0; + border-top: 1px solid #c9bcbc; +} + +b { + font-weight: 600; +} + +/* links */ +a { + color: #532f2f; +} + +a:hover { + color: #722a2a; +} + +a.hint { + text-decoration: none; + text-align: center; + display: block; +} + +/* Hide furigana on front */ +nokana ruby rt { + opacity: 0; + font-size: 0; + display: none; +} + +notext b { + background-color: black; + color: transparent; +} + +/* Top */ +header { + display: flex; + clear: both; +} + +header .tags { + border-radius: 0px 0px 3px 3px; +} + +header > div:not(:last-child) { + margin-right: 3px; +} + +/* Space between elements */ +.images { + margin-top: 16px; +} + +.images > img { + margin-bottom: 16px; +} + +.sent-center { + display: flex; + align-items: center; + justify-content: center; + flex-flow: column nowrap; +} + +/* Japanese sentence */ + +.jpsentence { + font-size: 35px; +} + +.jpsentence b { color: Maroon; } + +/* Hide front side when the back is shown. */ + +.fside .jpsentence { + display: none; +} + +/* English */ + +div.ensentence > a.hint { + color: #555; + font-size: 14px; + display: block; + border: 1px solid #ccc; + border-radius: 2.2px; + padding: 2px 10px; + margin: 4px 0; +} +div.ensentence > a.hint:hover { + color: #111; + background-color: rgba(0, 0, 0, 0.03); +} + +/* Tags */ + +.tags { + font-family: "Noto Sans", "Noto Sans CJK JP", "Liberation Sans", Arial, Sans, sans-serif; + text-align: center; + display: inline-block; + background-color: #333; + color: #fffaf0; + font-weight: bold; + padding: 1px 3px; + margin: 0; + cursor: pointer; + border-radius: 3px; + font-size: 12px; + line-height: 14px; +} + +/* AnkiDroid replay button */ + +.replaybutton { + margin: 0; + margin-right: 3px; + text-decoration: none; +} + +.replaybutton span { + padding: 0; + font-size: 16px; +} + +.replaybutton span svg { + fill: #fffaf0; + background: #333; + border-radius: 3px; + vertical-align: top; + min-width: 16px; + min-height: 16px; +} + +/* PC replay button */ + +a.replay-button { + top: -0.125em; + position: relative; + margin: 0; +} + +a.replay-button svg { + height: 1em; + width: 1em; +} + +a.replay-button svg path { + fill: #fffaf0; +} + +a.replay-button svg circle { + fill: #333; +} + +/* Footer and links */ + +footer { + font-size: 16px; + text-align: center; +} + +footer > a { + text-decoration: none; +} + +footer > a:after { + content: "·"; + color: brown; + display: inline-block; + width: 6px; +} + +footer > a:last-child:after { + content: ""; + width: 0; +} + +/* Source */ + +.source { + font-size: 16px; + text-align: center; +} + +/* Vocab */ + +.vocab { + margin-top: 16px; +} + +.vocab div { + display: inline-block; +} + +.vocab br { + display: none; +} + +.vocab > .tags { + vertical-align: top; +} + +.notes > .tags { + vertical-align: bottom; +} + +/* Images */ + +.images { + display: flex; + flex-wrap: wrap; + flex-direction: row; + align-items: flex-start; + align-content: space-between; + justify-content: space-evenly; +} + +.images > img { + max-width: 47%; + border-radius: 4px; + filter: sepia(33%); +} + +.images > img:only-child { + max-width: 100%; +} + +/* Production cards */ + +.production b { + visibility: hidden; +} + +.strokeorder { + text-align: center; + font-size: 150px; + font-family: KanjiStrokeOrders; +} + +/* Fix for Yomichan defs */ + +ul, +ol { + list-style-type: none; + display: inline; + margin: 0px; + padding: 0px; +} + +/* Fix for Yomichan pitch accents */ + +.vocab ol > li { + display: inline; +} + +.vocab ol > li:after { + content: "・"; +} + +.vocab ol > li:last-child:after { + content: ""; +} + +/* Night Mode */ + +.nightMode.card { + color: #FFFFFF; + background-color: black; +} + +.nightMode .wrap { + background-color: #2F2F31; +} + +.nightMode .tags { + background-color: #FFFFFF; + color: #2F2F31; +} + +.nightMode a.replay-button svg path { + fill: #2F2F31; +} + +.nightMode a.replay-button svg circle { + fill: #FFFFFF; +} + +.nightMode .replaybutton span svg { + fill: #2F2F31; + background: #FFFFFF; +} + +.nightMode a { + color: #c7493a; +} + +.nightMode a:hover { + color: #a33327; +} + +.nightMode .jpsentence b { + color: NavajoWhite; +} + +.nightMode .images > img { + filter: sepia(0%); +} + +.nightMode div.ensentence > a.hint { + color: #FFFFFF; + border: 1px solid #FFFFFF; +} + +.nightMode div.ensentence > a.hint:hover { + color: gray; + background-color: rgba(0, 0, 0, 0.20); +} + +/* Don't select furigana */ + +.jpsentence ruby rt { + user-select: none; +} diff --git a/templates/Japanese sentences (nb)/template.json b/templates/Japanese sentences (nb)/template.json new file mode 100644 index 0000000..5cd0b28 --- /dev/null +++ b/templates/Japanese sentences (nb)/template.json @@ -0,0 +1,22 @@ +{ + "modelName": "Japanese sentences (nb)", + "inOrderFields": [ + "SentKanji", + "SentFurigana", + "SentEng", + "SentAudio", + "VocabKanji", + "VocabFurigana", + "VocabPitchPattern", + "VocabDef", + "VocabAudio", + "Notes", + "Image", + "Source", + "MakeProductionCard" + ], + "cardTemplates": [ + "Recognition", + "Production" + ] +} diff --git a/templates/Japanese sentences (nb)/word_card.webp b/templates/Japanese sentences (nb)/word_card.webp new file mode 100644 index 0000000..341cc2f Binary files /dev/null and b/templates/Japanese sentences (nb)/word_card.webp differ