
나는 테이블을 타이핑하고 있습니다 longtable
. 칼럼이 있습니다 p{2in}
. 열에 파일 이름이 있습니다. 때로는 이러한 파일 이름이 상당히 길 때도 있습니다. 슬래시가 있습니다. 일종의 /home/user/somebody/project1/file1/subfile1/this-is-the-filename.txt
. 슬래시 뒤에 줄 바꿈이 허용된다는 것을 LaTeX에 알릴 수 있는 방법이 있습니까?
답변1
열의 다른 컨텍스트에 슬래시가 없다고 가정하면 다음과 같이 할 수 있습니다.
\makeatletter
{\catcode`\/=\active
\gdef\slashbreak{
\catcode`\/=\active
\def/{\char`\/\penalty\z@}}
}
\makeatother
...
\begin{slashbreak}
\begin{longtable}
...
\end{longtable}
\end{slashbreak}
이렇게 하면 슬래시 브레이크 환경 내에서 활성 캐릭터가 생성되어 /
그 인스턴스가 나중에 브레이크를 허용하게 됩니다.
왜 이렇게 됐지
문자 코드를 조작하는 것은 TeX에서 까다로울 수 있습니다. 문자에 대한 문자 코드는 소화될 때의 코드가 되며, 이는 반드시 예상했던 것과는 다릅니다. 주변 중괄호와 의 범주 코드 설정을 생략하면 범주 코드가 13이 아닌 12가 되므로 /
재정의하려고 할 때 제어 시퀀스가 누락됩니다. 이는 예를 들어 다음과 같은 이유이기도 합니다. 범주 코드를 전체적으로 변경하는 것은 다른 명령에 대한 인수에서는 작동하지 않습니다. TeX가 최종적으로 매크로를 확장할 때 원래 범주 코드가 설정되므로 축어 모드가 작동하기에는 이러한 변경이 너무 늦게 발생합니다 ./
\verb
\verb
그룹 내에서 범주 코드를 변경하고 수행하는 관용구 ( 그룹 외부에서 정의에 액세스할 수 있도록 \gdef
줄임 )는 이러한 종류의 범주 코드 조작에 일반적입니다. \global\def
LaTeX 소스 코드를 자세히 살펴보면 유사한 코딩이 많이 발생하는 것을 볼 수 있습니다.