* fix(flex): respect DesktopOnly and MobileOnly components
* Use classNames util function
* fix(ofm): allow wikilink alias to be empty (#1984)
This is in line with Obsidian's behavior.
* fix(style): Katex adding scrollbars on non-overflowing content (#1989)
* feat(i18n): Bahasa Indonesia translations (#1981)
* fix(a11y): increased content-meta text contrast (#1980)
* fix(analytics): streamline posthog script loading and event capturing (#1974)
* css: adjust color blend for search bg
* feat(links): added ofm option to style unresolved or broken links differently (#1992)
* feat: add option to disable broken wikilinks
* fix(style): update hover color for broken links and introduce new class
* feat: add "disableBrokenWikilinks" option to ObsidianFlavoredMarkdown
* chore(deps): replace `chalk` and `rimraf` with builtin functions (#1879)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* chore(deps): bump the production-dependencies group across 1 directory with 9 updates (#1996)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Node 22 (#1997)
* docs: showcase housekeeping
* docs: fix explorernode references (closes#1985)
* fix: tz-less date parse in local tz instead of utc (closes#1615)
* docs: added note to not forget to add https:// to the plausible-host (for #1337) (#2000)
* docs: added note to not forget to add https:// to the plausible-host (for #1337)
* Update docs/configuration.md
---------
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* Updated documentation
---------
Co-authored-by: Nizav <106657905+Ni-zav@users.noreply.github.com>
Co-authored-by: Aswanth <aswanth366@gmail.com>
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
Co-authored-by: Keisuke ANDO <g.kei0429@gmail.com>
Co-authored-by: fl0werpowers <47599466+fl0werpowers@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Moser <64004956+c2vi@users.noreply.github.com>
* docs: added note to not forget to add https:// to the plausible-host (for #1337)
* Update docs/configuration.md
---------
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* feat: add option to disable broken wikilinks
* fix(style): update hover color for broken links and introduce new class
* feat: add "disableBrokenWikilinks" option to ObsidianFlavoredMarkdown
* doc(favicon): add documentation of favicon plugin
* doc(favicon): add missing link to configuration page
* fix(favicon): build on public folder don't created
* fix(popover): automatically position heading links at heading
* Impement linking of blockreferences
* Popover fixes
* id mapping
* Remove excess regexes
* Updated blockref
* Remove linker element
* Restore the docs to their former glory
* Move the hash out of the loop
* Redundant
* Redundant
* Restore docs
* Remove log
* Let it const
* Fix(RecentNotes): Prevent folder pages from always appearing first
Pass prioritizeFolders=false to byDateAndAlphabetical in RecentNotes to sort strictly by date/alphabetical order, fixing issue #1901.
* refactor: split sorting functions for clarity
- Split byDateAndAlphabetical into two separate functions\n- byDateAndAlphabetical: sorts strictly by date and alphabetically\n- byDateAndAlphabeticalFolderFirst: sorts with folders first\n- Updated RecentNotes to use date-only sorting
* Fix(PageList): keep byDateAndAlphabeticalFolderFirst as the default sorting order for PageList
* fix(ogImage): update socialImage path to include base URL if defined
* feat(path): add function to check if a file path is absolute
* fix(ogImage): handle absolute paths for user defined og image paths
* docs(CustomOgImages): update socialImage property to accept full URLs
* fix(ogImage): typo
* fix(ogImage): improve user-defined OG image path handling
* Update docs/plugins/CustomOgImages.md
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* Update quartz/plugins/emitters/ogImage.tsx
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* refactor(path): remove isAbsoluteFilePath function
* fix(ogImage): update user-defined OG image path handling to support relative URLs
* feat(ogImage): enhance user-defined OG image path handling with absolute URL support
* refactor(ogImage): remove debug log for ogImagePath
* feat(path): add isAbsoluteURL function and corresponding tests
* refactor(path): remove unused URL import for isomorphic compatibility
---------
Co-authored-by: Karim H <karimh96@hotmail.com>
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* fix(transformer): find last modified date form commit on submodule
when the content folder has a submodule git, the relative path start in content folder and not root folder of quartz
* fix(transformer): use path.relative for improved path handling in last modified date calculation
* fix(transformer): keep find file from relative path of repo workdir
* fix(transformer): use variable for repository workdir
use default value if repo.workdir is undefined to user fullFp value
* fix(explorer): vertically center the Explorer toggle under mobile view
* Added a separate title font configuration
* Added googleSubFontHref function
* Applied --titleFont to PageTitle
* Made googleFontHref return array of URLs
* Dealing with empty and undefined title
* Minor update
* Dealing with empty and undefined title
* Refined font inclusion logic
* Adopted the googleFontHref + googleFontSubsetHref method
* Adaptively include font subset for PageTitle
* Restored default config
* Minor changes on configuration docs
* Formatted source code
* checkpoint
* make emitters async generators
* fix
* custom font spec
* replace spinner, use disk cache for fonts
* use readline instead
* make og images look nice
* start work on client side explorer
* fix tests
* fmt
* generic test flag
* add prenav hook
* add highlight class
* make flex more consistent, remove transition
* open folders that are prefixes of current path
* make mobile look nice
* more style fixes
* Added to the documentation which values of frontmatter are referenced.
* The source code I was looking at seemed to be out of date and the wrong listings were corrected.
* The list of frontmatter was moved to Frontmatter.md and a link was added.
On the surface it seems that only google and plausible scripts handle
the SPA correctly - but I don't know if maybe others handle
window.history API themselves somehow or something like that.
However, I am trying out goatcounter and in it's docs I see that it
does no special SPA handling, so this has to be fixed.
Just doing the dynamic script thing on every nav seems to do the trick.
The script is not "spa-preserve" so they wouldn't accumulate - and when
I tried the "spa-preserve" + call goatcounter api route it didn't quite
work, they actually did accumulate
With markdownLinkResolution: "shortest", aka "+/- how Obsidian does it"
and given pages A and nested/B which has an alias Z, if you try to link
from A using [[Z]] it wouldn't work and get 404.
This is caused by alias slugs (nested/Z in this case, emitted by
AliasRedirects) not being present in the `allSlugs` list which is used
by the link transformer.
The fix is to compute the alias slugs in the frontmatter transformer
and add them to `allSlugs` there.
Also we store them in file data to avoid recomputing them when emitting
alias redirect pages.
Fixes#904
Note: given how currently the markdown/html transformers are ordered
this doesn't really work.
Given pages A and nested/B which has an alias Z, here's the order which
currently happens:
md-transformers(A) => html-transformers(A) =>
md-transformers(B) => html-transformers(B)
Since the nested/Z slug will get added when md-transformers(B) are run,
but the slugs are used by html-transformers(A) when resolving it's
links - the link [[Z]] in A will still 404
A fix for this is to split the parser into two stages - first apply the
md-transformers to all files, and only then apply html-transformers to
all files.
I did just that in a different commit, which is needed for this one to
work correctly.
A final breadcrumb has an empty href, linking to the current page, but
the relative url normalization method missed those, making the link
appear broken in search previews and popovers.
Fixes#1690
If there is no `npm.exe` on the system, but
instead an `npm.cmd`, then node won't find
the `npm` executable when calling `spawnSync`.
This occurs frequently when using node package
managers on Windows.
See the node documentation for `.bat` and `.cmd`
files here.
<https://nodejs.org/api/child_process.html#spawning-bat-and-cmd-files-on-windows>.
* [OFM] Allow for dashes in custom callout label
For compatibility with Obsidian's behavior, a custom callout like
[!see-also] is possible. Previously, this was parsed by Quartz as a
callout “see” with metadata “-also”. Instead, this is should be a
callout “see-also” with title “See also” (capitalization + replace
dashes by spaces).
* prettier
* feat: add a config option for a pageTitleSuffix
* Run Prettier on Head.tsx
* Make pageTitleSuffix optional
Co-authored-by: Aaron Pham <Aaronpham0103@gmail.com>
---------
Co-authored-by: Aaron Pham <Aaronpham0103@gmail.com>
* Responsive design grid
* Addressed PR feedback
* Bump Quartz version 4.3.1 => 4.4.0
* Moved page-header into center
* Updated docs with new layouts
* Sync updated version number with package-lock
* Table of Content scrollbar auto
* Reset node_modules
* Updated layout images
* Fixed tablet layout
* Finilazed layout images
* FIX: Reload graph after a theme change
* FIX: Reload graph after a theme change - comment updated
* FIX: Reload graph after a theme change - comment updated
* FIX: Reload graph after a theme change
* fix: Reload graph after a theme change
* Use a `<button>` for theme toggle
* docs: Adds back Xinyang's cs garden to showcase (#1323)
adding back my garden which was deleted from the cleanup showcase
* feat(toc,explorer): add accessibility for toggle (#1327)
* Restore focus highlight on explorer toggle button.
Remove `unset: all` declaration causing `outline`
property to be unset. This allows the default
browser focus highlight to be shown.
* Fix semantics of expandable sections (explorer, toc).
This adds the appropriate aria attributes for the [disclosure pattern](https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/examples/disclosure-image-description/#javascriptandcsssourcecode) and uses `visibility: hidden` to remove the hidden elements from the focus order without disrupting the animations. Further work is needed on the tree view nodes.
* Run prettier for SCSS files.
* feat: custom global latex macros (closes#1325)
* chore: ts fixes
* docs: recommend at least node 20 in gh
* fix: unmemoize explorer on rebuild (closes#1077)
* fix: pass buildId to worker
* Fix theme button DOM hierarchy and styles
* Restore functionality of theme button
* `aria-label` on theme svgs so their accessible labels are included in button content
---------
Co-authored-by: Xinyang Yu <47915643+xy-241@users.noreply.github.com>
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
* Add a wrapper span to dates in PageList.
This means there is a placeholder when date is not specified, so the values in grid-template-columns always line up correctly.
* Use a <div> instead -- better practice to stick to block elements.
* Use a `<button>` for search
* Fix search button styles to match preexisting styling
* Remove additional native button properties.
* Invoke search button on click or keyboard.
* Reorganize search button DOM hierarchy
* Restore focus to the search button when exiting the search overlay
* Run prettier on Search.tsx
* Restore focus highlight on explorer toggle button.
Remove `unset: all` declaration causing `outline`
property to be unset. This allows the default
browser focus highlight to be shown.
* Fix semantics of expandable sections (explorer, toc).
This adds the appropriate aria attributes for the [disclosure pattern](https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/examples/disclosure-image-description/#javascriptandcsssourcecode) and uses `visibility: hidden` to remove the hidden elements from the focus order without disrupting the animations. Further work is needed on the tree view nodes.
* Run prettier for SCSS files.
- [Major] Changed `hash` passed to `querySelector` to `decodeURIComponent(hash)` to fix the issue where non-English anchors were not correctly positioning the popover content to the corresponding title.
- [Minor] Updated the type hint from `HTMLLinkElement` to `HTMLAnchorElement` as the passed element is an `<a>` element, not a `<link>` element (reference: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement).
* replace .gitlab-ci.yml example with more reliable and faster ci job
* literally removing 1 space, inside a code block, in docs, just to make prettier not cry
simplifies slug from FullSlug to SimpleSlug before storing it in the visited pages list in memory
this leads to "index" page and "folder/index", "tags/tag/index" being stored a "/", "folder/" and "tags/tag/" respectively in the list of visited pages.
this ensures that the homepage is rightfully coloured as a visited page in the "color" function of the graph
newimport_obsidian.Setting(containerEl).setName("Open everything outside of Obsidian").setDesc(
"Enable to open all obsidian supported extensions with system viewer instead. Disable for default behavior (open within Obsidian). Defaults supported extensions are 'png', 'webp', 'jpg', 'jpeg', 'gif', 'bmp', 'svg', 'mp3', 'webm', 'wav', 'm4a', 'ogg','3gp', 'flac', 'mp4', 'ogv', 'mov', 'mkv'."
newimport_obsidian.Setting(containerEl).setName("Open Outside Obsidian: Manual List").setDesc("This shouldn't be necessary, but you can manually enable custom extensions here.").addToggle(
newimport_obsidian.Setting(containerEl).setName("Manual List").setDesc("Enter extension names (without the dot, ie, just docx separated by newlines).").addTextArea((textArea)=>{
{"id":"obsidian-opener","name":"Opener","minAppVersion":"0.15.9","description":"Open links in new/existing tabs by default. Open PDFs in System App by default. Can open other file formats in System Apps if desired.","author":"Aidan Gibson","authorUrl":"https://github.com/aidan-gibson","isDesktopOnly":false,"version":"2.1.2"}
Means "if", "whenever". Used when a result is known or assumed to be true, aka a logical cause-effect relationship. Cannot be used if the result is uncertain. So it cannot be an intention, a request, a desire, an order, etc.
> [!info] Example
> {急|いそ}いでない==と==、{遅刻|ちこく}に{着|つ}きます。
> If you don't hurry, you'll arrive late.
## なら
<divclass="usage">
<divclass="left">
<p><spanclass="box">V (casual) + (の)</span></p>
<p><spanclass="box">い-Adj + (の)</span></p>
<p><spanclass="box">な-Adj + (の)</span></p>
<p><spanclass="box">N</span></p>
</div>
<pclass="right">+ なら</p>
</div>
Means "in the case that/of". The second part of the sentence is generally an opinion, a request or a suggestion.
Adding の adds emphasis. ならば can be used in more formal contexts.
Means "if" or "when". Describes a condition (the first action must be completed before the second action). Used for hypothetical situations and certain results. It is the main word used for conditional.
> [!info] Example
> {安|やす}==かったら==、{買|か}う。
> (If / When) it's cheap, I'll buy it.
## 場合
<divclass="usage">
<divclass="left">
<p><spanclass="box">V (casual)</span></p>
<p><spanclass="box">い-Adj</span></p>
<p><spanclass="box">な-Adj + な</span></p>
<p><spanclass="box">N + の</span></p>
</div>
<pclass="right">+ 場合は</p>
</div>
{場合|ば|あい} means "in the case of". The second part explains what to do in the situation (instructions, advices, etc). More formal than たら.
> [!info] Example
> {地震|じ|しん}==の場合は==、エレベーターを使わないでください。
> In case of an earthquake, please don't use the elevators.
The most basic function of the Te-Form: form connection between **verbs**.
> [!info] Example
> 食べ==て=={寝|ね}る。
> To eat, then sleep.
This also works with **いA**, **なA**, and **nouns**.
> [!info] Example
> あの{自転車|じてんしゃ}は{便利|べんり}==で=={軽|かる}い。
> That bicycle is useful and light.
### Reasons
Used primarily for reasons beyond control of the speaker.
> [!info] Example
> 大雨==で==バスが止まりました。
> The bus stopped with rain. (the reason is the rain)
### Manners
Highlights something being used, whether a tool, a circumstance, a situation, etc.
> [!info] Examples
> 私はご{飯|はん}を{急|いそ}い==で==食べる。
> I eat food in a hurry.
>
> ハサミ==で=={野菜|やさい}を{切|き}ります。
> I cut my vegetables using scissors.
## Sequence and non-sequence
Only for **verbs**.
### て sequence
Used to list a sequence of events that happen one after another. Must be used for ordered sequence of what is being said!
> [!info] Example
> パンを買==って==、食べた。
> I bought some bread, then ate it.
### て non-sequence
The particle can also contrast things that have some sort of relationship. It can mean something like "and" or "while", but is not really similar to "but": it always has the same weight in the sentence, as opposed to expressions like けど・のに, etc.
> [!info] Examples
> 朝は雨が{降|ふ}==って=={夕方|ゆう|がた}は{晴|は}れた。
> It rained this morning, **and** then it cleared up in the afternoon. (there is no particular emphasis on either event).
>
> 朝は雨が降った==けど==夕方は晴れた。
> It rained this morning, **but then** it cleared up in the afternoon. (there is emphasis on the fact that it stopped raining).
### てから
Used to say that something will happen after something else : "after doing (A), (B)".
Only for **verbs**.
> [!info] Example
> {洗濯|せん|たく}をし==てから==、出かける。
> After doing the laundry, I will go out.
⚠ Simple present (るから) and past (たから) have a meaning closer to "because" or "since".
## States
### ている form
| Plain | Polite |
| ----- | ------ |
| ている | ています |
| てる | てます |
ている is often shortened to てる. This applies to all tenses, including てる, てて, てた, and even てます.
Only for **verbs**.
Sometimes ている can become しとる (like in manga).
#### 1/ State of existence: is being done
Used to convey a constant state of the verb being done, executed, etc. It is continuing to exist in a specific state.
> [!info] Example
>今ラーメンを食べ==ています==。
>I am eating ramen now.
#### 2/ State of existence: has been done
Expresses "existing in a of state of having been done".
In English, a different tense would have been used, but in Japanese it is also Te-form.
> [!info] Examples
> お前はもう死==んでいる==。
> You are already dead.
>
> クラスは始ま==っている==。
> The class has already started. (existing in the state of having started)
>
> お母さんは今買い物に行==っています==。
> My mom went out to go shopping. (existing in the state of having gone)
>
> 先生がめちゃ{怒|おこ}==っている==。
> My teacher is very angry. (existing in the state of having gotten angry)
Then, how to differentiate from the past form? Think about if the action can happen twice. For example, something cannot start twice, so it will use ている. The same applies for dying. This will not work for all verbs, but for the majority.
> [!info] Example
> ピアノが{落|お}ち==ている==。
> The piano has fallen. (existing in the state of having fallen)
> Something has fallen and is already on the ground, so it cannot fall again. ている will be used.
#### 3/ State of existence: frequent and repeated action
Used for the repetition of common activities. They are not continuing per se, but are occurring at such a frequency that they are considered to be continuous.
For example: going to work, having a hobby, doing sports, etc.
You can see it as "continuing to exist in a specific state".
Expression of time are often used with this meaning.
> [!info] Examples
> 私は毎日ギターを{弾|ひ}い==ている==。
> I play my guitar everyday (hobby).
>
> {毎晩|まい|ばん}9時に{寝|ね}==ている==。
> I sleep at 9 every night (habit).
>
> {彼|かれ}は学校で{働|はたら}い==ている==。
> He works at a school (regular activity).
### ていた・ていました
Means that something was happening, someone was doing something. If an object has changed state and is still in the state, it can also be used, for example a broken window.
Only for **verbs**.
ていた can be shortened to てた, and ていました to てました.
> [!info] Example
> {勉強|べんきょう}をし==ていた==けど、今は{休|やす}んでいる。
> I was studying but am taking a break right now.
### てある
Shares with ている the meaning of being in an ongoing state, meaning that something has been done. It is also similar to a simple past form. However, the nuance is that this form is only used with transitive verbs on inanimate objects, meaning either:
* the action has been done intentionally (focuses on a person's intention),
* the focus is the resulting state of the action.
> [!info] Examples
> 明日の{弁当|べん|とう}はもう作==ってある==。
> Tomorrow's lunch has already been prepared.
>
> ドアが{開|あ}け==てある==。
> The door has been left open (intentionally).
Only for **transitive verbs**.
### ておく
Means to do something in advance, to complete something in preparation for something.
If used in past form ておいた, means that the completed action was in preparation for the current situation.
Only for **verbs**.
Can be shortened as とく.
> [!info] Example
> メロンパンを買==っておく==。
> I'll buy a melon pan (in preparation for a something, for example a picnic).
The goal of this website is to be a synthesis of useful resources for my Japanese learning adventure. I want to have grammar points next to each other, independently of any "difficulty level", set up in a logical and consistent form. I don't want to have to open 5 pages to compare information, and I don't want a deep dive into a notion. The goal is to be a reminder of the things I learn, rather than a way to learn. I want a few examples to grasp it, but I do not want to have ten of the same kind. And nothing quite fits for me!
## Sources
Of course, since I'm _learning_ the language, I need to get inspired from different sources. So this website partly uses information from the websites listed here. I don't want any recognition of what is here! It's mostly a compilation of what people who are way better in this language have made before.
* [Jisho](https://jisho.org/), an online dictionary
* [Tatoeba](https://tatoeba.org), for its sentences database
## Any errors?
If you find any error, please do contact me! I wrote the examples by myself, so they might not be accurate. You can find my website in the footer of any page of this website. Thanks!
While にくい is the broader form, づらい is used in a more subjective manner, for actions that are intentional.
> [!info] Example
> 見==にくい==。
> Difficult to see.
### ~がたい: very difficult
~がたい means that something is very difficult to do.
It is more extreme than ~にくい.
> [!info] Example
> それは{信|しん}じ==がたい==な。
> That's hard to believe...
## ~始める
~{始|はじ}める means that something starts or has started. Expresses intentionality.
> [!info] Example
> {飲|の}み==始める==。
> To start to drink.
## ~出す
~{出|だ}す means that something suddenly started. Has the nuance of being unintentional, or cannot be avoided.
> [!info] Example
> 雨が降り==出した==。
> It suddenly started raining.
## ~続く
~{続|つづ}く means that something continues.
> [!info] Example
> {飲|の}み==続ける==。
> To continue to drink.
## ~終わる
~{終|お}わる means that something ends.
> [!info] Example
> {飲|の}み==終わります==。
> To stop to drink.
## ~上げる
This can be used both as:
* {上|あ}げる means "finish doing" (transitive)
* {上|あ}がる means "was finished" (intransitive)
> [!info] Example
> {全部|ぜんぶ}の{夏休|なつ|や}みの{宿題|しゅくだい}を出来==上げった==。
> I have finished all my summer homework.
## ~合う
~{合|あ}う means that the action is done with someone else.
> [!info] Example
> {妹|いもうと}と{家|いえ}へ{帰|かえ}り==会った==。
> I went home with my sister.
## ~切る・~切れる・~切れない
~{切|き}る means "to do completely" and ~切れる means "able to do completely".
The negative form ~切れない means "unable to do", "too much to complete".
It focuses on the end of the action rather than the process.
> [!info] Example
> 父はすべての{部屋|へや}を{掃除|そうじ}し==切った==。
> My father finished cleaning all the rooms.
>
> 彼は{納豆|なっとう}を食べ==切れなかった==。
> He could not finish all his natto.
## ~通す
~{通|とお}す means "to do something until the end", "continually" or "through". It focuses on the process of the action, rather than its ending.
> [!info] Example
> マラソンの{全部|ぜんぶ}を{走|はし}り==通した==。
> He ran through the whole marathon.
## ~直す
~{直|なお}す means to do something again.
> [!info] Example
> {今年|ことし}をやり==直す==てほしい。
> I want this year to start over.
## ~っぱなし
~っぱなし means leaving something as it is.
> [!info] Example
> この13時間{飛行|ひこう}で{座|すわ}り==っぱなし==でした。
> I sat the entire time on this 13 hours flight.
## ~込む
~{込|こ}む has multiple meanings depending on the verb. Sometimes it is idiomatic and so it cannot exactly be guessed. However, there are some broad categories.
⚠ Depending on the context, verbs can fall into multiple categories!
### Going into
* If the verb describes a movement, adding 込む add the meaning of "into" (jumping => jumping into).
* If the verb already has a notion of "into", it put emphasis into it. It could have a meaning like "completely into".
> [!info] Example
> {海|うみ}に{飛|とび}び==込んだ==。
> He jumped into the ocean.
### Emphasis
When the verb does not include physical movement, 込む can be used to put emphasis on certain verbs (deeply, a lot, etc).
> [!info] Example
> {猫|ねこ}が{眠|ねむ}り==込んでいます==。
> The cat is fast asleep.
### Repetition
The last common meaning is for an action that is repeated until a point is reached. It can also be an action that is done for a long time.
> [!info] Example
> {毎朝|まいあさ}5キロ{走|かし}り==込む==。
> Every morning I go for a 5km run (emphasis on the fact that it is a long run).
> I brush my teeth twice a day as recommended by my dentist.
## に伴って
に{伴|ともな}って also has the meaning of a an instantaneous change: when the first part changes, the second part also changes instantly. The first part is the reason of it changing.
> As the Olympics are held, transportations cost have increased.
## と共に
と{共|とも}に has 3 other meanings.
### Almost at the same time
It is also used for two actions that happens at approximately the same time. The two actions do not have to be related. They also don't have to be specifically about change.
> [!info] Example
> {鳥|とり}は{鳴|な}き{声|ごえ}をする==と共に=={風|かぜ}が{吹|ふ}く。
> The bird sings and the wind blows.
### Together with
It can also mean "together with". It is much more formal than {一緒|いっしょ}に.
> [!info] Example
> {妻|つま}==と共に=={新|あたら}しい{人生|じんせい}を{始|はじ}めります。
> I am starting a new life with my wife.
### As well as, also
It can also mean "as well as", "also".
> [!info] Example
> パンはチーズ==と共に==フランスに{人気|にんき}{食料|しょくりょう}です。
> Bread, along with cheese, is a popular food in France.
This conjunction means "and". It implies a cause-effect relationship between the two sentences. There's an interconnection, where the order of the actions cannot be changed.
> [!info] Examples
> バスケットボールをした。==そして==水を{飲|の}んだ。
> I played basketball. Then, I drank water.
### それから
This conjunction means "and" or "after that". It implies a chronological order to the events. Since there's no interconnection, the order of actions could be changed.
> [!info] Examples
> スーパーに行きました。==それから=={弁当|べんとう}を食べました。
> I went to the supermarket. After that, I ate my bento.
### それに
This conjunction means "and", "besides" or "in addition". Implies a new information in relation to the precedent one. It is not used to add a negative information to a positive one, and vice-versa.
> [!info] Examples
> 昨日、{病気|びょうき}になった。==それに==パソコンも{壊|こわ}れた。
> I got sick yesterday. Beside, my computer broke.
### それで
Means "because of that", "therefore". Substitutes the first sentence happening before by それ, highlighting information from it.
> When I was a child, I took the train to school every day. Because of that, I wanted to be a train driver.
## Exhaustive listing
### と
This particles means "and" or "with". Used for a list that is exhaustive. Connects sentences.
> [!info] Examples
> 犬==と=={住|す}んでいます。
> I live with my dog.
>
> フランス語==と==スペイン語を習っています。
> I am learning French and Spanish.
### て connecting
Used for a list that is exhaustive. Connects verbs.
See [[TeF (1) - basics#て sequence]].
## Unexhaustive listing
### や
Used for a list that is unexhaustive. Translates to "among other things". Formal.
Used only with nouns.
> [!info] Example
> フランス==や==スペインに{旅行|りょこう}しました。
> I travelled to France and Spain (among others).
### など
Means "things as". Can be used with や for a meaning like "etc".
Used with nouns.
> [!info] Example
> お金がないのでカフェ**や**レストラン==など=={払|はら}えない。
> I can't pay things like cafes or restaurant (etc.) because I have no money.
### とか~とか
Used for a list that is unexhaustive. Translates to "and", "among other things". More casual than や. Ending a sentence with とか can soften the meaning. Can also be used to quote someone.
Only used with verbs and nouns.
> [!info] Examples
> {果物|くだもの}はバナナ==とか==リンゴ==とか==が好きです。
> I like fruits like bananas and apples.
>
> 明日{野球|やきゅう}==とか==しようか。
> Do you want to play baseball (or something) tomorrow?
>
> もう{諦|あきら}めよう==とか==言わないで。
> Don't say (things like) we should already give up.
This is used to list things that are related, in an unexhaustive way. Translates to "or", "do things such as".
Usually used to talk about things like hobbies, explaining liked things, activities done, etc. Not used for usual things like a routine. It is not an ordered or chronological list like [[#て connecting]].
This form is used with the negative form of a verb (ない), and adding なくちゃ and optionally one of the following ending: だめ, いけない, いけません, ならない, なりません.
なくちゃ is the shortened form of なくては.
なきゃ is the shortened form of なければ.
> [!info] Example
> {歯|は}を{磨|みが}か==なくちゃいけない==。
> I must brush my teeth.
### なくては「いけない・ならない」
Also formed with the negative form of a verb.
> [!info] Example
> 今{遅|おそ}いね。{寝|ね}に行か==なくてはいけない==。
> It's late now. I have to go to sleep.
### なければ「いけない・ならない」
Also formed with the negative form of a verb.
> [!info] Example
> {事務所|じむしょ}では{静|しず}かにし==なければならない==。
> You have to be quiet in the office.
### ないといけない
Also formed with the negative form of a verb.
In casual contexts, can be shortened as ないと.
> [!info] Example
> 今日は{勉強|べんきょう}し==ないといけない==。
> I have to study today.
## Must not
#### 「ちゃ・じゃ」「だめ・いけない・いけません」
Only used on casual spoken conversations. いけません is a bit more formal.
This form is used with a V-て, depending on the ending:
* with て, ちゃ is used.
* with で, じゃ is used.
> [!info] Examples
> その{花|はな}を食べ==ちゃだめ==。
> Don't eat those flowers.
>
> {花瓶|か|びん}の水を{飲|の}ん==じゃいけない==。
> Don't drink the water of the flower vase.
### てはいけない
Used in a more formal or written manner. Used with a V-て.
> [!info] Example
> {鉄道|てつ|どう}に{歩|ある}い==てはいけません==。
> Do not walk on the railroad.
## Comparing いけない and ならない
* ==いけない== is the standardly used form. It implies a subjective view, that it would be better to do something, to avoid negative consequences (eg: brushing one's teeth, eating well, etc).
* ==ならない== is usually more formal or in written form. It implies a is more objective view, something that has to be done because there's no other way (eg: respecting the law, paying taxes, etc).
## Comparing なくては, なければ and ないと
なくては and なければ are generally interchangeable in speech. However:
* ==なくては== is generally used when there is _no penalty_ for not complying.
* ==なければ== is generally used when there _is a penalty_ for not complying.
* ==ないと== is lighter and does not imply that there can or cannot be penalty. Its construction is based on the [[Conditional#と]] particle, and should be based on knowledge or experience.
> There's no way I don't go to my younger brother's birthday today, so I won't go to the afterwork.
>
> {本当|ほんとう}に飲み会に行く==わけにはいかない==よ。
> There's really no way I can go to the afterwork.
## なくてもいい
Means "don't have to". Used with a verb in the negative form (ない), appending なくてもいい.
Can also be used as なくていい.
> [!info] Example
> 今日はレストランで{手伝|て|つ}わ==なくてもいい==。
> You don't have to help out at the restaurant today (it's okay if you don't help at the restaurant today).
## てからでないと
Means "must first do". The second part becomes possible after the first one.
Used with a verb in て form, with からでないと or からでないければ.
> [!info] Example
> {払|はら}==ってからでないと=={入|はい}るができること。
> You can enter only after paying.
## こと as "should do"
### こと
<divclass="usage">
<divclass="left">
<p><spanclass="box">V (dictionary)</span></p>
<p><spanclass="box">V (ない)</span></p>
</div>
<pclass="right">+ こと</p>
</div>
Means "should do". Mostly used to set rules.
> [!info] Example
> ここに{車|くるま}を{止|と}めない==こと==です。
> Don't park your car here.
### ことになっている
This form is used to express rules or expectations.
Used with dictionary (る) and negative (ない) form of verbs.
> [!info] Examples
> {指|ゆび}で食べない==ことになっている==。
> You're not supposed to eat with your fingers.
### ことはない
This has two meanings:
* it is not necessary to
* it never happens
Used with a verb in the dictionary form.
> [!info] Example
> {走|はし}る==ことはない==。まだ{時間|じかん}がある。
> There's no need to run. There's still time.
## 必ず
{必|かなら}ず means certainly, definitely. Expresses an obligation.
> [!info] Example
> 明日の{授業|じゅ|ぎょう}==必ず==来てください。
> Please be sure to attend tomorrow's class.
## べき
### べきだ
Means "should do", "must do". Compared to the [[Obligation - なければ・ないと]] forms and 必ず, it has a nuance of being less universally logical. It is defined by the speaker's own logic.
Used with verbs.
する can be used as するべき or すべき.
> [!info] Example
> {来週|らいしゅう}{試験|しけん}があるので{勉強|べんきょう}す==べきです==。
> There is an exam next week, so I should study.
### べきではない・べきじゃない
The contrary of べきだ is べきではない・べきじゃない.
> [!info] Example
> {泥|どろ}を食べる==べきではない==。
> You should not eat mud.
## はずだ・はずがない
<divclass="usage">
<divclass="left">
<p><spanclass="box">V</span></p>
<p><spanclass="box">い-Adj</span></p>
<p><spanclass="box">な-Adj + な</span></p>
<p><spanclass="box">N + の</span></p>
</div>
<pclass="right">+ はずだ ・ はずがない</p>
</div>
はずだ means "it must/should be", while はずがない means "it cannot be". Has a nuance of being sure that it is something possible (or impossible).
Also means that it looks like, but connecting to nouns and verbs.
> [!info] Example
> 面白==そうに==人です。
> He seems like an interesting person.
## みたい
みたい means similar to, like. Used for direct observation, with a high degree of certainty in consequence. Usually used for visual observation.
It is a less polite form of ようだ.
### みたいだ
The basic form, used with all forms of words.
> [!info] Example
> 今日は暑いですね。夏==みたいだ==な。
> It's hot today, isn't it. It looks like it's summer.
### みたいに
<divclass="usage">
<divclass="left">
<p><spanclass="box">V (casual)</span></p>
<p><spanclass="box">N</span></p>
</div>
<pclass="right">+ みたいに + V / Adj</p>
</div>
The adverbial form.
> [!info] Example
> 犬==みたいに==食べた。
> I ate like a dog.
### みたいな
<divclass="usage">
<divclass="left">
<p><spanclass="box">V (casual)</span></p>
<p><spanclass="box">N</span></p>
</div>
<pclass="right">+ みたいな + N</p>
</div>
Similar to the precedent form, but when using with nouns.
> [!info] Example
> {故郷|ふる|さと}==みたいな==町だ。
> A city like my hometown.
## らしい
Expresses an information based on hearsay, or based on the situation, or ressemblance. This is always used based on a source that is unknown or ambiguous. It can be similar to a guess. Similar to the "perhaps" meaning of ようだ.
Also used for something typical, expected, characteristic.
This has the meaning of like, easy to, _-ish_. Makes a direct comparison with certainty, from the point of view of the person saying it. Close to an even more casual meaning of みたい, with a focus on attitude or gesture.
Used after a reason, to explain the consequence. Means "because of", "since".
It is more objective than から: it expresses a situation that exists, and that is outside of one's control. For this reason, it can also be perceived as more polite.
> [!info] Example
> 雨な==ので==傘を持ってきてください。
> Since it is raining, please bring an umbrella.
## から
See [[🔰 Particles (2)#Because]].
It is more subjective than ので: it expresses more personal needs/actions/opinions.
## ことから
<divclass="usage">
<divclass="left">
<p><spanclass="box">V</span></p>
<p><spanclass="box">い-Adj</span></p>
<p><spanclass="box">な-Adj + な</span></p>
<p><spanclass="box">N + の</span></p>
</div>
<pclass="right">+ ことから</p>
</div>
Means "based on the fact that". Most formal than から, and puts an emphasis on it being true (objective information).
> [!info] Example
> {部屋|へや}から{音|おと}がある==ことから==、{誰|だれ}かいるはずです。
> From the fact that there is sound coming from the room, someone must be there.
## んです・のです
<divclass="usage">
<divclass="left">
<p><spanclass="box">V</span></p>
<p><spanclass="box">い-Adj</span></p>
<p><spanclass="box">な-Adj + な</span></p>
<p><spanclass="box">N + だ</span></p>
</div>
<pclass="right">+ んだ・んです・のだ・のです</p>
</div>
It is used to explain or put emphasis on something.
のだ・のです is a bit more formal than んだ・んです.
It is only used with nouns when asking questions.
> [!info] Example
> {良|よ}い{仕事|しごと}な==のです==か。
> Is it a good job?
>
> もう言った==んだ==よ!
> I've already told you!
## のは・のが
Means "the reason for A is B", "doing A is B".
See [[Transformation#のは・のが sentence as noun]].
## なぜなら~から
<divclass="usage">
<divclass="">
<p><spanclass="box">result</span></p>
</div>
<pclass="r"> + なぜなら + </p>
<divclass="">
<p><spanclass="box">reason</span></p>
</div>
<pclass="r">+ から</p>
</div>
Means "the reason is".
There are three variations:
* なぜなら(ば)
* なぜかというと
* どうしてかというと
> [!info] Example
> それを{言|い}えない!==どうしてかというと=={秘密|ひみつ}だ==から==。
> I cannot tell you that! Why, because it's a secret.
A more polite way is [[Can't help - doesn't matter#ても構わない]].
## ないでください
Means "please don't". It is a polite request. Removing the ください makes it more casual.
Formed by a verb in the negative form (ない) with the で particle.
> [!info] Example
> {冷蔵庫|れいぞうこ}のデザートは食べ==ないでください==。
> Please do not eat the dessert from the fridge.
## なさい
This form is used when commanding an action.
It is used with verbs by removing the ます and adding なさい. In casual conversation, it can be shortened to な.
> [!info] Example
> {質問|しつ|もん}を{答|こた}え==なさい==。
> Answer the question.
## ように言う
It means "to tell", "to request", "to order".
It is form by added ように{言|い}う to a verb. The verb {頼|たの}む can be used for requests, while {命|めい}じる can be used for order. The verb {言|い}う can tell the three meanings depending on the tone.
Means that something happened recently, either just now, or a little while ago.
> [!info] Example
> ==さっき==家に出てきた。
> I just left home.
## たところ
Combined with a verb in the past tense, it express that something just occurred (something just ended, just started, etc).
> [!info] Example
> 今食べた==ところ==だ。
> I just finished to eat right now.
## たばかり
Combined with a verb in the past tense, it express that something just occurred (something just ended, just started, etc). It is more subjective than ところ. It doesn't have to be something that literally just happened, but something that feels like it just happened.
> [!info] Example
> 今食べた==ばかり==だ。
> I just finished to eat right now.
When comparing the two examples, the meaning is different depending on the context. Imagine a friend asking you to go eat with him. When using ところ, it means you just finished your meal this instant. When using ばかり, it means that it feels too soon to eat again just yet from your point of view, independently of how much time has really passed.
Means that something has just been finished. It cannot be used with all verbs. It has a meaning of something fresh, that changes after completion (fresh food that degrades, etc).
This allows to transform an adjective into a noun (adjective nominalizer). Similar to さ, but it is used in specific contexts. Rather than a degree, it talks about a quality. Generally subjective. Can be used with less adjectives than さ.
> [!info] Example
> 甘い。
> Sweet.
>
> 甘さ。
> Amount of sweetness.
>
> 甘==味==。
> Quality of sweetness.
## ということ: phrase as noun
This allows to transform a phrase into a noun.
<divclass="usage">
<divclass="left">
<p><spanclass="box">V (casual)</span></p>
<p><spanclass="box">い-Adj</span></p>
<p><spanclass="box">な-Adj + だ</span></p>
<p><spanclass="box">N + だ</span></p>
</div>
<pclass="right">+ ということ</p>
</div>
> [!info] Example
> 毎日サッカーをする==ということ==は{大変|たい|へん}です。
> It is hard to play soccer every day.
## のは・のが: sentence as noun
<divclass="usage">
<divclass="left">
<p><spanclass="box">V</span></p>
<p><spanclass="box">い-Adj</span></p>
<p><spanclass="box">な-Adj + な</span></p>
<p><spanclass="box">N + だ</span></p>
</div>
<pclass="right">+ のは・のが</p>
</div>
Transforms a sentence into a noun.
Also means "the reason for A is B", "doing A is B".
> [!info] Example
> {勉強|べんきょう}する==のは==つまらないです。
> Studying is boring.
>
> このレストランで{一番|いち|ばん}{人気|にん|き}がある==のは=={寿司|すし}です。
> The most popular dish in the restaurant is sushi.
## くする: い-adjective as adverb
Replacing the い in a い-Adj by くする transforms it into an adverb.
大きい (big) => 大きくする (make big).
> [!info] Example
> エアコンを{点|つ}けると{空気|くう|き}が{寒|さむ}==くなる==。
> When turning on the AC, the air becomes cold.
## にする: な-adjective as adverb
Appending にする to a な-Adj transforms it into an adverb.
{静|しず}かな (quiet) => 静かにする (make quiet).
> [!info] Example
> {部屋|へや}をきれい==にして==ください。
> Please clean the room (make the room cleaner).
## がる・がっている: adjective as verb
See [[Observation - tendency - feelings#がる・がっている]].
The は particle indicates the topic of a sentence. Usually translated by "as for".
> [!info] Example
> 私==は==フランス人です。
> I am French (As for me, I am French).
When a sentence is negative, は is usually used instead of が and を.
> [!info] Example
> 肉==は==食べません。
> I don't eat meat.
When used with a noun that is a number or an amount, it takes the meaning of "at least" or "around". Can be mixed with [[Amount#くらい]].
> [!info] Example
> {毎週|まいしゅう}2{回|かい}==は=={映画館|えいがかん}に行きます。
> I go to the cinema at least twice a week.
## が
The が particle indicates the subject of a sentence.
> [!info] Example
> 電車==が==好きです。
> I like trains.
It is also used for making a contrast.
> [!info] Example
> 電車は好きです==が==、バスは好きじゃない。
> I like trains, but I don't like buses.
In a noun modifying clause, は becomes が.
> [!info] Example
> {彼|かれ}はラメんを{作|つく}。
> He made ramen.
>
> {彼|かれ}==が=={作|つく}ったラメんはおいしいです。
> The ramen he made is delicious.
## Difference between は and が
Usually, they can be used in the same sentence, but have a nuanced meaning based on the context.
> [!info] Examples
> 私==は==フランス人です。
> 私==が==フランス人です。
> I am French.
Both sentences mean the same thing. But:
* In the first sentence with は, what is highlighted is that the speaker is French.
* In the second sentence with が, what is highlighted is that the French person is the speaker.
The first sentence would most likely be the answer to "where are you from?", while the second sentence would be the answer to "who is French?". が highlights the information where the focus is wanted.
## を
This particle is used for the target of the action of a verb.
> [!info] Examples
> ケーキ==を==作る。
> I prepare a cake.
## に
This particle has multiple meanings.
* A place of existence.
> [!info] Example
> {会社|かいしゃ}は東京==に==あります。
> The company is in Tokyo.
* A point in time.
> [!info] Example
> 毎日12時==に=={寝|ね}ます。
> I sleep at 12:00 everyday.
* A direction towards whom an action is directed. For example: meeting a person, phoning to someone, riding a transport, writing on something, sitting on something, etc.
> [!info] Example
> 日本==に=={住|す}んでいます。
> I live in Japan.
## に・へ
に and へ are used to indicate a direction of movement with verbs like 行く, くる, and 帰る.
> [!info] Example
> 日本==へ==行きます。
> 日本==に==行きます。
> I'm going to Japan.
## で
This particle can indicate several things.
* A place where the action is done.
> [!info] Example
> {図書館|としょかん}==で==本を{読|よ}みました。
> I read a book in the library.
* The use of something
> [!info] Example
> えんぴつ==で==書いてください。
> Please write with a pencil.
* The use of ingredients or materials
> [!info] Example
> タコ==で==たこ{焼|や}きを作る。
> I prepare takoyaki with octopus.
* Numbers or volume for multiple objects.
> [!info] Example
> 本を5{冊|さつ}==で==買った。
> I bought 5 books.
* A noun that is the cause of something.
> [!info] Example
> かぜ==で==休みました。
> I took the day off because of a cold.
* A mode of transportation.
> [!info] Example
> {休暇|きゅうか}に電車==で==行った。
> I went on holiday by train.
## の
This particle indicates possession.
> [!info] Example
> 私==の==ボール。
> My ball.
## も
This particle means "also".
> [!info] Example
> 日本{料理|りょうり}==も=={韓国|かん|こく}{料理|りょうり}==も==食べます。
> I eat Japanese and Korean food.
The particles は, が and を change to も.
> [!info] Example
> 私は{中国|ちゅう|ごく}語==も==話せます。
> I can also speak Chinese.
In other cases, it can be combined with other particles: に, で, へ, と, から.
> [!info] Example
> {大阪|おお|さか}に==も==行きたい。
> I also want to go to Osaka.
Another meaning of this particle can be found when combined with words like {何|なに}, {誰|だれ}, or どこ (what, who, where). It means nothing, nobody and nowhere. It indicates the absence.
> [!info] Example
> A: {昨日|きのう}どこかへ行った?
> B: いいえ、どこへ==も==行かなかった。
> A: Did you go somewhere yesterday?
> B: No, I didn't go anywhere.
Used with a number or a time, it means "as many as" or "nearly".
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
There are a few extensions that add [furigana](https://en.wikipedia.org/wiki/Furigana) support to Markdown. I use [Obsidian](https://obsidian.md/), and therefore its furigana extension: [obsidian-markdown-furigana](https://github.com/steven-kraft/obsidian-markdown-furigana). It works well, but by nature is limited by being used within Obsidian.
For that purpose, this python script converts this specific syntax to common, all-platforms HTML ruby tags.
## Process
This specific extension syntax is as following:
```
{漢字|かんじ}
{漢字|かん|じ}
```
When processed by this script, the result is:
```
<ruby>漢字<rt>かんじ</rt></ruby>
<ruby>漢<rt>かん</rt>字<rt>じ</rt></ruby>
```
Which leads visually from, by default markdown standards:
> {漢字|かんじ}
>
> {漢字|かん|じ}
to common HTML ruby syntax:
> <ruby>漢字<rt>かんじ</rt></ruby>
>
> <ruby>漢<rt>かん</rt>字<rt>じ</rt></ruby>
## Limitations
This has been made for my personal use, which is only kanjis with kanas as furigana. The regexp used do not recognize other inputs. But you can modify them easily for your use if needed.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
For my Japanese Grammar (JPG) project, I have created a style for explanation on the usage of certain grammar points. There is no simple way to make it in Markdown, so I tried to make it with the least amount of HTML possible. You can find it in `examples/sample.md`. However, for it to work, you have to import a custom [CSS snippet](https://help.obsidian.md/Extending+Obsidian/CSS+snippets) to Obsidian, which is located in `obsidian-snippet/usage.css`. But using it, you will have this kind of result:

## convert-usage.py
In my Quartz rendering of my markdown data, I want this kind of data to be in a callout. However, it is not possible to combine HTML and Markdown in Obsidian. For that purpose, this script encapsulates it directly in HTML. To make it both compatible in Obsidian and Quartz, and to be still easy to write, it's done with this python script. This is probably super specific and will not be of use for anybody except me!
## Usage
Usage: `python3 convert-usage.py [root folder]`
Note: Please be careful, this software applies modifications recursively!
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.