구문 강조 란 무엇이며 어떻게 작동합니까?

내 코드가 렌더링 될 때 다른 색상으로 강조 표시되는 경우가 있습니다.

  • 구문 강조 표시 란 무엇입니까?
  • 어떻게 작동하나요?
  • 왜 내 코드가 올바르게 강조 표시되지 않나요?
  • 버그를 신고하거나 새 언어를 요청하려면 어떻게해야하나요?
  • 구문 강조 표시는 어떻게 사용하나요?
  • 현재 Stack Exchange에서 사용할 수있는 언어는 무엇인가요?

로 돌아 가기 FAQ 색인

댓글

  • 질문이 있습니다. SE 항목 (한 사람)이 더 이상 근본적인 버그를보고하지 않는 이유는 무엇입니까? highlight.js의 모든 이슈 목록을 한번 읽고 버그인지 쉽게 결정할 수 있습니다. 이러한 하이라이트 버그를 보면 정말 비전문적 인 것 같습니다 .SE가 라이브러리를 선택했기 때문에보고하는 것은 SE의 책임입니다. 이러한 버그는 highligt.js에 추가됩니다. 특히이 프로세스가 복잡한 상황 (모든 사람이 모든 문제 목록을 알아야 함)에서 그렇습니다. 잘못 되었나요?
  • github.com/highlightjs/highlight.js/issues 에 대한 기존 보고서를 확인하고 결국 새 버그 보고서를 게시해야합니다. . 그래서 여기에 언급되지 않은 질문이 거의 없습니다. SE 사이트에서 사용되는 highlight.js 버전은 무엇입니까? 색상은 어떻게 미리 정의됩니까? 기본적으로 이것이 CSS 파일에 의해 유지된다는 것을 알고 있다고 가정합니다. SE 사이트가 https://github.com/highlightjs/ 프로젝트의 표준 색상을 사용합니까 아니면 SE 사이트가 자체 색상 세트를 사용합니까? 색상과 색상 톤을 변경할 수 있나요?
  • highlight.js 데모 를 살펴본 다음 Language Categories = AllThemes = Stackoverflow Light는이 테마가 정확히 사용 된 것과 동일합니다. SE 사이트에서? lang-default에 어떤 언어가 사용됩니까?

답변

무엇을 구문 강조는 무엇입니까?

구문 강조 기능을 사용하면 게시물의 코드가 작성된 언어에 따라 강조 표시되어 더 쉽게 읽을 수 있습니다.

어떻게 작동합니까?

Stack Exchange에는 자체 구문 강조 엔진이 없습니다. highlight.js 이며 해당 라이브러리의 최신 릴리스를 사용하지 않을 수도 있습니다. 따라서 구문 강조 표시와 관련된 버그 및 기능 요청은 Stack Exchange에서 처리 할 수 없습니다.

5 초 동안 입력을 중지하자마자 게시물을 만들거나 수정할 때 미리보기에 태그 를 기반으로 구문 강조가 할당됩니다.

“내 코드가 올바르게 강조 표시되지 않는 이유는 무엇입니까?

1. 사용중인 사이트에 구문 강조 표시가 활성화되어 있는지 확인합니다.

전체 목록은 Meta에서 사용할 수 있습니다 . 구문 강조가 활성화되어 있지 않은 경우 사이트는이 질문의 안내를 따릅니다.

2. highlight.js에서 지원하는 언어인지 확인합니다.

를 참조하세요. Highlight.js 지원 언어 목록 . 해당 언어가 목록에없는 경우 Highlight.js 프로젝트 내에서 생성해야 Stack Exchange에서 배포 할 수 있습니다.

언어가 이미 목록에 있지만 Stack Exchange에서 사용되지 않습니다. 여기에서 Meta에서 기능 요청을 제출하여 네트워크에 배포하세요.

3. 해당 언어가 Stack Exchange에서 사용되는지 확인하세요.

dev CDN에서 highlight-loader.js 파일을보고 좋아하는 편집기에서 열고 언어 힌트를 검색합니다. 예를 들면 다음과 같습니다. " dart "를 검색하면 hljs.registerLanguage("dart", ...로 구성된 줄. 이는 lang-dart가 사용 가능한 언어 힌트임을 의미합니다. " psh " 또는 " powershell "는 어떤 결과도 반환하지 않습니다. 즉, Highlight.js의 Stack Exchange 버전에서 psh를 지원하지 않습니다.

4. 질문의 태그에 구문 강조 표시가 활성화되어 있는지 확인합니다.

배후에서 Stack Exchanges는 질문의 태그 를 사용하여 사용중인 언어를 결정합니다. 각 태그에는 속성에 지정된 강조 표시 언어가 있습니다. 강조 표시 언어가 지정된 태그가 두 개 이상이거나 태그에 하나도 지정되지 않은 경우 기본값을 사용하고 highlight.js가 사용하기에 가장 좋은 언어를 추론 할 수 있도록합니다. 질문에 사용 된 강조 표시 언어도 답변에 사용됩니다.

해당 태그를 방문하십시오. wiki 페이지. 태그 (예 : " ")를 선택한 다음 " 자세히 알아보기 … " 및 해당 태그에 현재 사용중인 언어 힌트 (있는 경우)는 에 표시됩니다. Wiki의 버튼 아래 맨 아래 :

코드 언어 (구문 강조 표시에 사용됨) : lang-java

태그에 강조 표시 언어가 지정되지 않은 경우 사이트 별 메타에 대한 을 통해 사이트를 요청할 수 있습니다. (관리자 만 태그의 강조 표시 언어를 변경할 수 있습니다.)

버그를 신고하거나 새 언어를 요청하려면 어떻게해야하나요?

구문 하이 라이터 자체의 버그 인 경우 기존 보고서를 확인하세요. 먼저 이미보고되었는지 확인하십시오. 그렇지 않은 경우 계속해서보고하십시오. 이미 highlight.js에 의해 구현되었지만 여기에서 작동하지 않는 버그 수정 및 기능의 경우, 새 버전의 highlight.js가 예정에 따라 사이트에 배포되므로 잠시 기다려주십시오. 최신 버전이 아직 배포되지 않았습니다. (오랜 시간이 지나도 배포되지 않은 경우 Meta에서 기능 요청을 제기하여 새 버전의 highlight.js 배포를 요청할 수 있습니다.)

Stack Exchange 이 구문 하이 라이터를 유지하지 않습니다 (최신 버전 설치 제외). 여기에 메타에 버그 보고서 나 기능 요청을 게시해도 수정되거나 구현되지 않습니다.

무엇이든, 올바른 강조 표시가 켜져 있는지 확인 하십시오.

구문 강조 표시는 어떻게 사용하나요?

모든 조건이 위의 내 코드가 올바르게 강조 표시되지 않는 이유는 무엇입니까? 섹션에서 질문의 태그를 기반으로 코드 블록에서 강조 표시가 자동으로 시작됩니다 ( 4. 질문의 태그에는 작동 방식에 대해 위의 구문 강조 표시가 활성화되어 있습니다 .) 인라인 코드 (예 : this)는 강조 표시되지 않습니다.

명시 적으로 재정의 합니다. 이는 코드 서식 지정의 코드 펜스 (```) 방법을 사용할 때만 지원됩니다. CommonMark 구현 부터는 4 칸 들여 쓰기 방법을 사용하는 코드 블록에서 더 이상 지원되지 않습니다 * :

```lang-or-tag-here code goes here ``` 

언어 코드 또는 태그 이름 언어 힌트에서 구문 강조를 활성화합니다. highlight.js 지원 언어 코드의 전체 목록은 아래를 참조하세요.

예 :

Here is a code block with language code (with "lang-" prefix) as a hint: ```lang-js function greet(person) { return "Hello " + person; } var user = "John Doe"; alert(greet(user)); ``` Here is a code block with tag name (no "lang-" prefix) as a hint: ```typescript var arr = [0, 1, 2]; // will highlight if typescript tag exists ``` 

원하지 않는 경우 구문 강조를 사용하려면 lang-none 언어를 사용할 수 있습니다.

```lang-none [code here] ``` 

언어 힌트를 적용 할 수도 있습니다. 게시물의 모든 코드 블록에 추가 할 수 있으므로 게시물의 상단 에 HTML 주석을 추가하여 각 코드 앞에 힌트를 추가 할 필요가 없습니다. 그러면 힌트가 네 공백 들여 쓰기 또는 HTML <pre><code>를 사용하는 코드 블록을 포함하여 게시물 내의 모든 코드 블록에 적용됩니다.

<!-- language-all: lang-or-tag-here --> 

질문에 사용될 때 답변의 강조 표시 언어를 재정의하지 않습니다 . 질문의 태그에 따라 기본적으로 강조 표시됩니다.


현재 Stack Exchange에서 사용할 수있는 언어 코드

이것은 모든 식별자의 전체 목록입니다. 구문 강조 표시를 위해 언어 힌트에서 사용할 수 있습니다. 각 그룹의 모든 언어 힌트는 동일한 형광펜을 가리 킵니다. highlight.js에서 설정 한 다른 언어 별칭도 작동 할 수 있지만 다음 식별자 만 Stack Exchange에서 공식적으로 지원됩니다.

  • 기본값 : 코드 해석 및 추측 lang-default
  • 없음 : 구문 강조를 명시 적으로 사용하지 마십시오. lang-none, lang-plaintext, lang-text, lang-txt
  • 배시 lang-bash, lang-sh, lang-zsh
  • C, C ++ 및 기타 C-likes lang-c, lang-h, lang-cpp, lang-hpp, lang-c++, lang-h++, lang-cc, lang-hh, lang-cxx, lang-hxx, lang-c-like
  • C # lang-cs, lang-csharp, lang-c#
  • 클로저 lang-clojure, lang-clj
  • CoffeeScript lang-coffee, lang-coffeescript, lang-cson, lang-iced
  • CSS lang-css
  • 다트 lang-dart
  • Erlang lang-erl, lang-erlang
  • 이동 lang-go, lang-golang
  • Haskell lang-hs, lang-haskell
  • HTML, XML, XSL 등. lang-html, lang-xml, lang-xsl , lang-xhtml, lang-rss, lang-atom, lang-xjb, lang-xsd, lang-plist, lang-wsf, lang-svg
  • HTTP 헤더 lang-http, lang-https
  • Ini 및 TOML lang-ini, lang-toml
  • 자바 lang-java, lang-jsp
  • 자바 스크립트 lang-js, lang-javascript, lang-jsx, lang-mjs, lang-cjs
  • JSON lang-json
  • Kotlin lang-kotlin, lang-kt
  • LaTeX, TeX lang-latex, lang-tex
  • 낮음 lang-less
  • Lisp lang-lisp
  • 루아 lang-lua
  • Makefile lang-makefile, lang-mk, lang-mak
  • 마크 다운 lang-markdown, lang-md, lang-mkdown, lang-mkd
  • MATLAB lang-matlab
  • 목표 -C lang-objectivec, lang-mm, lang-objc, lang-obj-c
  • OCaml lang-ocaml, lang-ml
  • 파스칼, 델파이 lang-pascal, lang-delphi, lang-dpr, lang-dfm, lang-pas, lang-freepascal, lang-lazarus, lang-lpr, lang-lfm
  • Perl lang-pl, lang-perl, lang-pm
  • PHP lang-php, lang-php3, lang-php4, lang-php5, lang-php6, lang-php7
  • PHP 템플릿 lang-php-template
  • 프로토콜 버퍼 lang-protobuf
  • Python lang-py, lang-python, lang-gyp, lang-ipython
  • R lang-r
  • 루비 lang-rb, lang-ruby, lang-gemspec, lang-podspec, lang-thor, lang-irb
  • lang-rs, lang-rust
  • 스칼라 lang-scala
  • 계획 lang-scheme
  • SCSS lang-scss
  • lang-shell, lang-console
  • SQL lang-sql
  • 스위프트 lang-swift
  • TypeScript lang-typescript, lang-ts
  • VHDL lang-vhdl
  • VB.NET lang-vbnet, lang-vb
  • YAML lang-yaml, lang-yml

하이라이트 .js에서 인식하지 못하는 게시물에 사용 된 모든 언어 식별자는 기능적으로 기본적으로 lang-default로 설정됩니다.

힌팅 : 태그

사이트에 존재하는 모든 태그 를 지정할 수 있으며 현재 해당 태그와 연결된 모든 언어 코드 ( null (힌트 없음), 기본값 또는 특정 언어 코드).

기본적으로 모두 태그는 언어 코드로 none로 시작합니다. 언어 코드로 none가 지정된 태그는 무시되고 로 되돌아갑니다. div id = “f85ddb0eaf”>

.

none 키워드를 사용하여 구문 강조 표시를 수동으로 지정하지 않을 수도 있습니다. lang-none 코드 위.


* 강조 표시 언어를 지정하는 이전 방법은 여전히 HTML 코드 블록에 사용할 수 있습니다. HTML 주석을 배치하십시오. <!-- language: lang-or-tag-here --> <pre><code> 태그 앞에 있으면 작동합니다.

또한 이전 이 메소드는 들여 쓰기가 4 칸인 코드 블록에 대해 완전히 제거되지는 않았지만 단지 사용되지 않을뿐입니다. 4 칸 들여 쓰기 코드 블록에서는 당분간 작동하지만 향후 제거 될 수도 있습니다.


편집자 참고 사항 :

추가하지 마십시오. 당신이 100 % sur e 존재합니다.

  • 입력 한 내용이 강조 표시된 것처럼 보여 있기 때문입니다. 정확하게 은 식별자가 실제로 시스템에 존재한다는 것을 의미하지 않습니다 . 잘못된 식별자는 기본값 으로 되돌아갑니다.

  • 또한 highlight.js의 문서 highlight.js 의 Stack Exchange 버전에서 실제로 지원되지 않을 수 있습니다. Stack Exchange에 배포 할 수없는 별도의 모듈입니다.

이러한 점 때문에 메타 질문에 링크하십시오. 목록에 새 힌트를 추가 할 때 편집 요약에 힌트가 있는지 확인합니다.

댓글 작성자 참고 사항 :

이 FAQ에 대한 의견은 FAQ에서 이해할 수없는 사항에 대한 설명을 요청하여 수정할 수 있도록하는 것입니다. 향후 특정 언어가 지원되는지 묻지 마십시오. . 이는 Stack Exchange가이 형광펜을 유지하지 않기 때문에 답변 할 수있는 질문이 아닙니다 . 언어 지원은 highlight.js 를 방문하세요.

댓글

  • '이 답변에 표시된 환경 설정 (규칙이 아님)이 있어야합니다. 언어 코드 또는 태그 이름 (일부 한정자 포함)을 사용하는 경우 예 : " Z가 아니라면 Y보다 X를 사용하는 것이 좋습니다. " (MSO에 대한 약간의 관련 질문 (댓글에서 ) : ' 구문 강조 표시와 관련하여 두 코드 서식 스타일 (코드 펜스 대 들여 쓰기 된 블록) 간의 차이점은 무엇입니까? ? )
  • 현재 해당 태그와 관련된 모든 언어 코드를 사용합니다. 이러한 매핑의 공식 목록이 어디서나 사용할 수 있습니까?
  • 섹션 4, " 4. 질문의 태그에 구문 강조 표시가 활성화되어 있고 " , @JoshGoebel
  • 을 찾을 수있는 모든 정보가 있는지 확인하십시오.

  • @Josh 직접 질문으로 , 저는 ' 현재 관련 언어가있는 모든 태그를 포함하는 목록 이 없다고 생각합니다. 또한 ' SEDE를 사용하여이 정보에 액세스 할 수있는 것처럼 보이지 않으며 ' 태그 테이블에 없습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다

Deep Theme Powered by WordPress