
모노 글꼴의 밑줄 문제로 어려움을 겪고 있습니다. 다른 기호에 비해 길이가 짧은 것 같습니다. 예를 들어:
\documentclass{article}
\begin{document}
\ttfamily
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\_cke[x]\ |\ dfi\_cs\_n[x]\ |\ dfi\_act\_n[x]\ | \\
.------------.-------------.--------------.
\end{document}
결과:
보시다시피 마지막 줄(밑줄 포함)이 왼쪽으로 이동합니다. 어떻게 만들 수 있나요?
PS 아니요, 기본 테이블을 사용할 수 없습니다. 이는 사용자 생성 부분이므로 있는 그대로 삽입해야 합니다. PSS verbatim
내부에서 작동하지 않기 때문에 옵션이 아닙니다.multicolumn
답변1
대신 다음을 \_
사용할 수 있습니다 \string_
.
\documentclass{article}
\begin{document}
\ttfamily
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\string_cke[x]\ |\ dfi\string_cs\string_n[x]\ |\ dfi\string_act\string_n[x]\ | \\
.------------.-------------.--------------.
\end{document}
답변2
가장 자연스러운 방법은 사용하는 것입니다 verbatim
(아래 참조). 하지만 먼저 무슨 일이 일어나는지 조금 설명해 보겠습니다.
OT1
인코딩 에서는 에 의존 \textunderscore
하는 는 \_
규칙을 사용하여 위조됩니다(현재 글꼴의 문자가 아닙니다). T1
추가하여 인코딩 으로 전환하면 다음에서 선택한 글꼴의 실제 문자를 사용 \usepackage[T1]{fontenc}
하게 됩니다 .\_
\ttfamily
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\ttfamily
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\_cke[x]\ |\ dfi\_cs\_n[x]\ |\ dfi\_act\_n[x]\ | \\
.------------.-------------.--------------.
\end{document}
이제 밑줄은 다른 문자와 동일한 크기를 갖습니다. 그러나 Barbara Beeton이 지적한 대로 비언어적 모드의 연속 하이픈은 합자로 결합됩니다( en-dash는 --
, em-dash는 ---
). 합자를 끄는 작업 중 하나인 경우 verbatim
모든 줄은 예상 길이를 갖습니다.
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\begingroup
\ttfamily\makeatletter\@noligs\makeatother
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\_cke[x]\ |\ dfi\_cs\_n[x]\ |\ dfi\_act\_n[x]\ | \\
.------------.-------------.--------------.
\endgroup
\end{document}
하지만 실제로는 verbatim
그러한 상황에서 사용하는 것이 더 자연스럽습니다. 위의 예는 단지 뒤에서 무슨 일이 일어나는지 이해하는 데 도움을 주기 위한 것입니다. 따라서 여기서 내가 할 일은 다음과 같습니다.
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\begin{verbatim}
Test
.-------------.-------------.--------------.
| abcdefghig | klmnopqrstu | vwxyzabcdefg |
.-------------.-------------.--------------.
| abc[e]ghig | klm[o]qrstu | vwxyza[c]efg |
.-------------.-------------.--------------.
| dfi_cke[x] | dfi_cs_n[x] | dfi_act_n[x] |
.-------------.-------------.--------------.
\end{verbatim}
\end{document}
"Test"는 환경 내부에 있으므로 verbatim
이 경우 단락 들여쓰기가 적용되지 않습니다.
기술적 세부 사항
관심 있는 분들을 위해 로 얻은 인코딩 \textunderscore
구현 은 다음을 수행합니다.OT1
\tracingmacros=1\tracingonline=1
\leavevmode \kern .06em\vbox{\hrule width .3em}
반면 T1
인코딩에서는 결국 간단합니다 \char"5F
(따라서 현재 글꼴의 16진수 코드 5F 문자가 포함된 문자 상자를 현재 목록에 추가하는 명령).
답변3
나는 다음을 사용할 것입니다 verbatim
:
\documentclass{article}
\begin{document}
\begin{verbatim}
Test
.------------.-------------.--------------.
| abcdefghig | klmnopqrstu | vwxyzabcdefg |
.------------.-------------.--------------.
| abc[e]ghig | klm[o]qrstu | vwxyza[c]efg |
.------------.-------------.--------------.
| dfi_cke[x] | dfi_cs_n[x] | dfi_act_n[x] |
.------------.-------------.--------------.
\end{verbatim}
\end{document}