From a0a23c66f98d7c88b1cbf2dd84a163b846718ab0 Mon Sep 17 00:00:00 2001 From: Sungchan Yi Date: Sun, 17 Nov 2024 09:21:14 +0900 Subject: [PATCH] [PUBLISHER] upload files #201 --- .../2024-11-17-math-equations-in-markdown.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/_posts/development/web/2024-11-17-math-equations-in-markdown.md b/_posts/development/web/2024-11-17-math-equations-in-markdown.md index a6e866e..d0078b2 100644 --- a/_posts/development/web/2024-11-17-math-equations-in-markdown.md +++ b/_posts/development/web/2024-11-17-math-equations-in-markdown.md @@ -77,29 +77,29 @@ attachment: ### 기울임체 충돌 -개인적으로 이 문제가 가장 골치아팠다. 어떤 경우에는 문제가 되지 않다가, 또 어떤 경우에는 문제가 된다. ` _ `를 사용해도 멀쩡하게 보이는 수식이 있는가 하면, 완전히 깨져버리는 수식도 있다. 조금 찾아보니 나만 이런 문제를 겪은 것이 아니었다. +개인적으로 이 문제가 가장 골치아팠다. 어떤 경우에는 문제가 되지 않다가, 또 어떤 경우에는 문제가 된다. `_`를 사용해도 멀쩡하게 보이는 수식이 있는가 하면, 완전히 깨져버리는 수식도 있다. 조금 찾아보니 나만 이런 문제를 겪은 것이 아니었다. -문제의 원인은 마크다운으로 쓴 글을 html로 변환할 때 ` _ ` 사이에 있는 텍스트가 기울임체로 먼저 해석되고, 수식은 그 이후에 처리되기 때문이었다. 그러다보니 수식 내부의 ` _ `가 다른 문자열로 치환되어 버리면서 (기울임을 나타내는 html 태그 ``) 수식이 깨지는 현상이 발생한 것이다. +문제의 원인은 마크다운으로 쓴 글을 html로 변환할 때 `_` 사이에 있는 텍스트가 기울임체로 먼저 해석되고, 수식은 그 이후에 처리되기 때문이었다. 그러다보니 수식 내부의 `_`가 다른 문자열로 치환되어 버리면서 (기울임을 나타내는 html 태그 ``) 수식이 깨지는 현상이 발생한 것이다. -가장 간단한 해결 방법은 ` _ `를 escaping 하는 것이다. 그러면 마크다운 변환기가 이를 기울임체 표시로 해석하지 않는다. 다만 `\ _ `와 같이 하게 되면 Obsidian에서는 수식이 제대로 렌더링 되지 않게 되는데, 아마 다른 툴들도 비슷한 문제가 있을 것으로 예상된다. +가장 간단한 해결 방법은 `_`를 escaping 하는 것이다. 그러면 마크다운 변환기가 이를 기울임체 표시로 해석하지 않는다. 다만 `\_`와 같이 하게 되면 Obsidian에서는 수식이 제대로 렌더링 되지 않게 되는데, 아마 다른 툴들도 비슷한 문제가 있을 것으로 예상된다. -진짜 해결 방법은 혼자서 삽질을 하다가 알아내게 되었는데, **` _ ` 앞 뒤로 공백을 추가하면 기울임체로 표시되지 않는다는 사실을 발견**했다. 이 사실이 신기해서 알려진 바가 있는지 찾아봤는데, 이 내용이 마크다운 문법에 실제로 있었다. +진짜 해결 방법은 혼자서 삽질을 하다가 알아내게 되었는데, **`_` 앞 뒤로 공백을 추가하면 기울임체로 표시되지 않는다는 사실을 발견**했다. 이 사실이 신기해서 알려진 바가 있는지 찾아봤는데, 이 내용이 마크다운 문법에 실제로 있었다. -> But if you surround an `*` or ` _ ` with spaces, it’ll be treated as a literal asterisk or underscore. +> But if you surround an `*` or `_` with spaces, it’ll be treated as a literal asterisk or underscore. - 출처: John Grubber's original [Markdown syntax description](https://daringfireball.net/projects/markdown/syntax#em) - 공식: https://spec.commonmark.org/0.31.2/#emphasis-and-strong-emphasis -그런데 이 문제는 확정적으로 발생하지 않을 수도 있기 때문에, 모든 ` _ ` 앞 뒤로 공백을 추가하면 된다. 어차피 수식은 공백을 무시해 버리기 때문에 수식에는 영향이 없다.[^1] +그런데 이 문제는 확정적으로 발생하지 않을 수도 있기 때문에, 모든 `_` 앞 뒤로 공백을 추가하면 된다. 어차피 수식은 공백을 무시해 버리기 때문에 수식에는 영향이 없다.[^1] -한편, 이 작업은 매우 귀찮은 일이기 때문에, 자동화된 방법이 필요해 보인다. 수식에서 아래 첨자를 쓸 일은 굉장히 빈번하기 때문에 매번 손수 ` _ ` 앞 뒤에 공백을 추가하기는 힘들다. +한편, 이 작업은 매우 귀찮은 일이기 때문에, 자동화된 방법이 필요해 보인다. 수식에서 아래 첨자를 쓸 일은 굉장히 빈번하기 때문에 매번 손수 `_` 앞 뒤에 공백을 추가하기는 힘들다. -이를 위해서는 또 다시 정규식을 사용하면 된다. 내가 직접 만들어 보려고 하다가 결국에는 [StackOverflow에 질문](https://stackoverflow.com/questions/79183172/regex-to-add-spaces-around-all-underscores-in-math-equations?noredirect=1#comment139629564 _ 79183172)하게 되었다. +이를 위해서는 또 다시 정규식을 사용하면 된다. 내가 직접 만들어 보려고 하다가 결국에는 [StackOverflow에 질문](https://stackoverflow.com/questions/79183172/regex-to-add-spaces-around-all-underscores-in-math-equations?noredirect=1#comment139629564_79183172)하게 되었다. 아무튼 사용할 정규식은 다음과 같다. ``` -(?<=\$\S[^$]*)\s? _ \s?(?=[^$]*\S\$) +(?<=\$\S[^$]*)\s?_\s?(?=[^$]*\S\$) ``` 자세한 설명은 생략한다... 이 정규식이 잡아낸 `_`를 전부 ` _ `로 고쳐주면 끝이다.