소스 코드

문서개요

이 문서는 AsciiDoc 에서 소스 코드를 표현하는 방법에 대해 설명합니다.

1. Source Code

문서에서 소스 코드를 표현하기 위해서는 [source,언어명]와 소스 블록(----)을 사용하고 결과물은 다음과 같다.

  • 소스가 아닌 경우 [source,언어명] 는 생략하고 블록(----)만 사용한다.

  • AsciiDoc에서 특수하게 사용되는 문자가 포함된 경우 "텍스트 그대로 출력"을 참고한다.

1.1. AsciiDoc 소스

소스 코드를 작성하는 AsciiDoc 소스는 다음과 같다.

[source,c]
----
#include <stdio.h>
int main() {
    printf("Hello, World!");
    return 0;
}
----

1.2. 결과

소스 코드를 사용하는 경우 본문 형태는 다음과 같다.

#include <stdio.h>
int main() {
    printf("Hello, World!");
    return 0;
}

2. Stack Trace

문서에서 Stack Trace를 표현하기 위해서는 [%collapsible]와 블록(====)을 사용하고 결과물은 다음과 같다.

2.1. AsciiDoc 소스

Stack Trace를 작성하는 AsciiDoc 소스 다음과 같다.

.Show stacktrace
[%collapsible]
====
[source]
----
Error: Content repository not found (url: https://git.example.org/repo.git)
    at transformGitCloneError
    at git.clone.then.then.catch
Caused by: HttpError: HTTP Error: 401 HTTP Basic: Access Denied
    at GitCredentialManagerStore.rejected
    at fill.then
----
====

2.2. 결과

Stack Trace를 사용하는 경우 본문 형태는 다음과 같다.

Show stacktrace
Error: Content repository not found (url: https://git.example.org/repo.git)
    at transformGitCloneError
    at git.clone.then.then.catch
Caused by: HttpError: HTTP Error: 401 HTTP Basic: Access Denied
    at GitCredentialManagerStore.rejected
    at fill.then

3. 텍스트 그대로 출력

입력한 대로 출력 텍스트를 표시한다.

  • 인라인 패스 매크로: 인라인일 경우 사용한다.

  • 리터럴 블록: 블록으로 지정할 때 사용한다.

  • 블록 내 패스 매크로: 블록 내 패스 매크로 사용 방법

  • subs 속성: 블록(및 특정 인라인 요소)에 적용되는 대체 규칙

3.1. 인라인 패스 매크로 (pass:[ ])

인라인 텍스트의 서식이 지정되지 않도록 하는 특수 구문이다.

3.1.1. AsciiDoc 소스

Inline pass를 작성하는 AsciiDoc 소스 다음과 같다.

http.authorizeRequests()**.antMatchers("/resources/pass:[**]").permitAll()**.anyRequest().authenticated()

3.1.2. 결과

Inline pass를 사용하는 경우 본문 형태는 다음과 같다.

http.authorizeRequests().antMatchers("/resources/**").permitAll().anyRequest().authenticated()

3.2. 리터럴 블록 (....)

리터럴 블록은 소스에서 보는 그대로 작성한 텍스트를 표시한다.

3.2.1. AsciiDoc 소스

리터럴 블록을 작성하는 AsciiDoc 소스 다음과 같다.

....
Kismet: Where is the *defensive operations manual*?

Computer: Calculating ...
Can not locate object.
....

3.3. AsciiDoc 소스

Stack Trace를 작성하는 AsciiDoc 소스 다음과 같다.

Kismet: Where is the *defensive operations manual*?

Computer: Calculating ...
Can not locate object.
  1. 출력에서 텍스트에 굵은 텍스트 서식이 적용되지 않는다.

  2. 세 개의 연속된 마침표가 줄임표 유니코드 문자로 대체되지 않는다.

3.4. 블록 내 패스 매크로

리터럴(…​.) 및 소스 블록(----) 내에서 pass를 사용하는 경우 pass가 매크로 대체라는 사실을 잊기 쉽다. pass를 활성화하려면 "subs 속성"에 macros값을 할당한다.

3.4.1. AsciiDoc 소스

블록에서 Inline pass를 작성하는 AsciiDoc 소스 다음과 같다.

[source,java,subs="+quotes,+macros"]
----
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
            **.antMatchers("/resources/pass:[**]").permitAll()**
            .anyRequest().authenticated()
            .and()
        .formLogin()
            .loginPage("/login")
            .permitAll();
----

3.4.2. 결과

블록에서 Inline pass를 사용하는 경우 본문 형태는 다음과 같다.

protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
            .antMatchers("/resources/**").permitAll()
            .anyRequest().authenticated()
            .and()
        .formLogin()
            .loginPage("/login")
            .permitAll();

3.5. subs 속성

블록(및 특정 인라인 요소)에 적용되는 대체 규칙은 subs 요소 속성을 사용하여 변경하거나 수정할 수 있다.

3.5.1. 종류

다음은 그 대체 단계 및 그룹이다.

none

모든 대체를 비활성화하는 대체 그룹.

normal

콜아웃을 제외한 모든 대체 유형을 수행하는 대체 그룹.

specialchars

<, > 및 &를 해당 엔티티로 대체하는 대체 단계. 소스 블록의 경우, 이 대체 단계는 구문 강조 표시를 활성화한다.

callouts

리터럴, 목록 및 소스 블록에서 콜아웃을 처리하는 대체 단계.

quotes

인라인 텍스트 서식을 적용하는 대체 단계.

attributes

속성 참조를 대체하는 대체 단계.

macros

인라인 및 블록 매크로를 처리하는 대체 단계.

post_replacements

줄 바꿈 문자(+)를 처리하는 대체 단계.

  • 값은 대체가 적용되는 순서도 지정한다.

  • subs 요소 속성은 중첩된 블록에 상속되지 않는다. 이는 자식 블록을 가질 수 없는 단락(paragraph)이나 소스 블록(----)에만 적용될 수 있다.

3.5.2. 블록에 subs 속성 설정

소스 블록에서 인라인 서식 마크업을 처리하고 싶은 경우
기본적으로 소스 블록(----))은 특수 문자와 콜아웃만 적용된다. 이 동작은 블록의 속성 목록에서 subs 속성을 설정하여 변경할 수 있다.

AsciiDoc 소스

subs 속성을 작성하는 AsciiDoc 소스 다음과 같다.

// 기본 소스 블록
[source,java]
----
System.out.println("Hello *<name>*")
----

// subs 속성 설정
[source,java,subs="+quotes"]
----
System.out.println("Hello *<name>*")
----

결과

subs 속성을 사용하는 경우 본문 형태는 다음과 같다.

System.out.println("Hello *<name>*")
System.out.println("Hello <name>")
SWLab Bankware Global
  • 전체
  • BXM
  • BXCM
  • BXCP
  • BXI
제품 선택 시 더 정확한 매뉴얼 가이드를 제공해드립니다.

Copyright© Bankwareglobal All Rights Reserved.