csvsimple에 탭으로 구분된 파일에 문제가 있습니다.

csvsimple에 탭으로 구분된 파일에 문제가 있습니다.

csvsimple탭으로 구분된 입력 파일을 사용하여 테이블을 만들려고 합니다 .

generic.tsv다음은 테이블에 넣을 탭으로 구분된 파일입니다 (StackExchange가 이를 변환하는 것처럼 보이지만 이는 공백이 아닌 내 파일의 탭입니다).

r1c1    r1c2    r1c3
r2c1    r2c2    r2c3
r3c1    r3c2    r3c3

다음은 이를 읽을 수 있는 예제 tex 파일입니다.

\documentclass{article}

\usepackage{csvsimple}

\begin{document}

\begin{tabular}{|l|l|l|}
\hline
Col 1 & Col 2 & Col 3 \\
\hline
\csvreader[no head,
    late after line=\\\hline,
    separator=tab
    ]{generic.tsv}{}{\csvcoli & \csvcolii & \csvcoliii}

\end{tabular}

\end{document}

이것을 실행하면 다음을 얻습니다.

탭으로 구분된 파일로 출력

이것은 내가 기대했던 것이 아닙니다. 탭을 쉼표로 바꾸고 separator=tabtex 파일에서 제거하기 위해 입력 파일을 변경하면 예상대로 작동합니다.

쉼표로 구분된 파일로 출력

탭으로 구분된 파일에서 이 작업을 수행하려면 어떻게 해야 합니까?

답변1

이것은 기본적으로 다음과 같은 문제입니다.csvsimple 존경 달러가 작동하지 않습니다, 그러나 그 질문에서는 달러 기호에 문제가 있었고 $이 질문에서는 탭 문자에 문제가 있었습니다. 문제는 구분 기호 설정이 그룹 단위로 이루어지기 때문에 separator=taba 내부 설정이 첫 번째 줄 이후에 재설정된다는 점인 것 같습니다 . tabular를 사용하여 \csvreader테이블 형식 자체를 설정하면 이 문제가 해결됩니다. 이제 구분 기호가 테이블 형식 외부에 설정되어 설정이 유효하게 유지되기 때문입니다.

원래 접근 방식을 사용하려면 탭 문자의 범주 코드를 수동으로 12(일반 문자)로 설정하고 표 형식 다음에 다시 10(공백 문자)으로 재설정할 수 있습니다. 그러나 이는 어떤 이유로 인해 테이블 ​​하단이 올바르게 렌더링되지 않는 부작용이 있습니다. 아래 MWE에서는 마지막 줄에서 끝나는 줄을 제거했습니다. 이는 불행하게도 \hline거기에 a를 인쇄할 수 없음을 의미합니다.

\documentclass{article}

\usepackage{csvsimple}

\begin{document}

\csvreader[separator=tab,
    tabular={|l|l|l|},
    table head={\hline Col 1 & Col 2 & Col 3\\\hline},
    late after line=\\\hline,
    no head
    ]{generic.tsv}{}%
    {\csvcoli & \csvcolii & \csvcoliii}

Tabular in \texttt{csvreader}
\vspace{1cm}

\catcode`\^^I=12
\begin{tabular}{|l|l|l|}
\hline
Col 1 & Col 2 & Col 3 \\
\hline
\csvreader[no head,
    late after line=\\\hline,
    late after last line=\relax,
    separator=tab]{generic.tsv}{}{\csvcoli & \csvcolii & \csvcoliii}
\end{tabular}
\catcode`\^^I=10

Manual catcode change for tab character

with missing bottom line
\end{document}

여기에 이미지 설명을 입력하세요

관련 정보