我有一个创建 csv 文件的脚本和下面显示的输出,但是当我想通过 latex 将其转换为 pdf 时,pdf 就不会生成。当我查看进入扩展模式限制 \write18 启用的日志时,有人可以建议我吗。%&-line 解析已启用。
脚本输出:
First;DOT NET;+0176547;
Sec row;NETWORK;+12345;
+pdflatex -output-directory /tmp test.tex -- hangs
\documentclass{article}
\usepackage{booktabs}
\usepackage{csvsimple}
\usepackage{longtable}
\usepackage{amssymb}
\begin{longtable}{|p{8cm}|c|c|}
\hline
\textbf{\textsf{A}} & \textbf{\B} & \textbf{\textsf{C}}} \\\hline
\endfirsthead
\textbf{\textsf{A}} & \textbf{\B} & \textbf{\textsf{C}}} \\\hline
\endhead % all the lines above this will be repeated on every page
\endfoot
\endlastfoot
\csvreader[
separator=semicolon,
column count=3,
check column count,
respect all=true,
before reading={\catcode`\_=11},
after reading={\catcode`\_=8},
late after line=\\\hline
]{tmp.csv}{}{\csvlinetotablerow}
\end{longtable}
%\catcode`\&=4% reactivate & sign
}}
\end{document}
答案1
回答原始问题:
您的代码存在几个问题,例如,错误的支撑、错误的separator
、表格有 5 列(每行第一列之前有一列|
,最后一|
列之后有一列)等等。
\begin{filecontents*}{\jobname.csv}
| A | B |c |
| -------- | -------------- |-------- |
| First | DOT NET |+0176547 |
| Sec row | NETWORK |+12345 |
\end{filecontents*}
\documentclass{article}
\usepackage{booktabs}
\usepackage[l3]{csvsimple}
\usepackage{longtable}
\usepackage{amssymb}
\begin{document}
\begin{longtable}{|p{8cm}|c|c|}
\hline
\textbf{\textsf{A}} & \textbf{B} & \textbf{\textsf{C}} \\\hline
\endfirsthead
\textbf{\textsf{A}} & \textbf{B} & \textbf{\textsf{C}} \\\hline
\endhead % all the lines above this will be repeated on every page
\endfoot
\endlastfoot
\csvreader[
separator=pipe,
column count = 5,
check column count,
range = 2-4,
head to column names,
late after line=\\\hline
]{\jobname.csv}{}{ \A & \B & \c }
\end{longtable}
%\catcode`\&=4% reactivate & sign
\end{document}
用改变的例子来回答问题:
您的代码中仍然存在错误,例如,
\textbf{\textsf{A}} & \textbf{\B} & \textbf{\textsf{C}}} \\\hline
{
这里最后一个单元格中有两个,但有三个}
。这会导致错误消息:
缺少{ 插入。
您可以在代码中发现两次这个错误。
类似线路
}}
关闭两个从未打开过的组并且导致两个错误消息:
} 太多
以下操作不会出现错误(并且不需要使用csvsimple-l3
):
\begin{filecontents*}[force]{\jobname.csv}
First;DOT NET;+0176547;
Sec row;NETWORK;+12345;
\end{filecontents*}
\documentclass{article}
\usepackage{booktabs}
\usepackage{csvsimple}
\usepackage{longtable}
\usepackage{amssymb}
\begin{document}
\begin{longtable}{|p{7cm}|c|c|}
\hline
\textbf{\textsf{A}} & \textbf{B} & \textbf{\textsf{C}} \\\hline
\endfirsthead
\textbf{\textsf{A}} & \textbf{B} & \textbf{\textsf{C}} \\\hline
\endhead % all the lines above this will be repeated on every page
\endfoot
\endlastfoot
\csvreader[
head=false,
separator=semicolon,
column count = 3,
late after line=\\\hline
]{\jobname.csv}{}{\csvlinetotablerow}
\end{longtable}
\end{document}
答案2
这是我的错,我只需要将 .tex 文件复制到正确的路径下。现在它可以工作了,谢谢大家