에 대한 후속 질문입니다.줄 바꿈 및 잘못된 정렬과 관련된 목록 패키지 문제. 환경 내에서 코드를 복사하여 붙여넣을 때 문제가 발생하는 이유는 무엇입니까 lstlisting
? 목록의 탭이나 공백에 주의해야 합니까? 그렇다면 왜 그렇습니까? 탭과 공백은 패키지와 함께 조판된 소스 코드의 가로 간격에 정확히 어떻게 영향을 미치나요 listings
?
답변1
공백 문자(ASCII 코드 32) 외에 다른 보이지 않는 문자가 있습니다. 그 중 하나는도표 작성 장치, 일명탭 문자(ASCII 코드 9), 일부 유형의 소스 파일에 사용됩니다. 가장 주목할만한 것은 아마도 makefile일 것입니다. 일반적으로 보이지 않는 문자에 대한 자세한 내용은ASCII 제어 문자에 대한 Wikipedia 페이지.
패키지 listings
는 문서의 하위 섹션 2.5에 설명된 대로 공백 문자와 표 작성기를 매우 다르게 처리합니다 listings
.
소스에 표 작성기가 포함되어 있으면 예기치 않은 출력이 발생할 수 있습니다. 패키지는 탭 작성기가 열 9, 17, 25, 33 등에서 중지된다고 가정합니다. 이는 를 통해 사전 정의됩니다
tabsize=8
. 8을 숫자 n으로 변경하면 n+1,2n+1,3n+1 열에서 탭 작성기가 중지됩니다.
예상치 못한 결과를 원하지 않고 코드가 표 작성기 없이 공백만으로 작업할 수 있다면 공백을 고수하고 표 작성기를 완전히 피하는 것이 아마도 좋은 생각일 것입니다.
나는 당신이 emacs나 vim과 같은 텍스트 편집기가 아닌 texmaker와 같은 LaTeX IDE를 사용하고 있다고 추측합니다. IDE는 Tab기본적으로 키를 누를 때 탭 문자를 삽입할 가능성이 높지만 대신 고정된 수의 공백(일반적으로 2,4 또는 8)을 삽입하도록 구성하는 방법이 있어야 합니다. 그러나 이러한 옵션은 소급 적용되지 않을 수 있습니다. 즉, 파일에 이미 존재하는 탭 문자는 단순히 해당 옵션을 활성화해도 공백으로 대체되지 않을 수 있습니다. 탭을 모두 제거하려면 탭을 검색하고 공백으로 바꿔야 할 수도 있습니다. 이는 틀림없이 오류가 발생하기 쉽지만 IDE를 사용하는 경우 다른 옵션이 없을 수도 있습니다. 하지만...
편집하다(Barbara Beeton의 의견에 따름): ... emacs 및 vim과 같은 편집기에는 현재 버퍼의 공백으로 모든 탭을 효율적으로 바꾸는 내장 기능이 있습니다. Emacs에서는 untabify
; vim에서는 retab
(참조이것).
좋은 텍스트 편집기를 사용하면 보이지 않는 문자(탭 문자, 개행 문자 등)를 만들 수도 있습니다.보이는, 그래서 당신은 실제로 어떤 유형의 보이지 않는 캐릭터를 다루고 있는지 알 수 있습니다. 위 그림(vim 버퍼의 스크린샷)에서 ▸
기호는 표 작성기를 나타내고 ¬
기호는 개행을 나타냅니다.
IDE를 뒤로하고 텍스트 편집기를 사용해야 하는 두 가지 이유가 더 있습니다.:)
업데이트: texmaker 4.2(2014/05/01)에서는 이제 고급 사용자가 다음을 수행할 수 있습니다.IDE의 기능 확장내부에서 사용자 정의 Javascript 코드를 실행하여. 이렇게 하면 "retab" 스크립트에 대한 문이 열리지만 사용자가 어느 정도 Javascript를 알고 있다고 가정합니다.