
Estou tentando usar a resposta sugerida para passar argumentos para um documento LaTeX, postadoaquicomo solução#Três.
Estou passando o argumento da seguinte maneira no prompt de comando do Windows:
C:\Users\afp\projects>pdflatex "\def\InputFilename{sample}\input{myLaTeXDoc.tex}"
Caso o argumento não seja fornecido, gostaria de ter um arquivo padrão para processar. No entanto, o compilador ainda reclama do Undefined control sequence. \begin{filecontents*}{\FILENAME.csv}
. Eu não sou capaz de nenhum dos dois
- passe o argumento no prompt de comando nem
- gerar um arquivo csv padrão.
Alguém poderia me ajudar com isso?
\documentclass[tikz, border=0mm]{standalone}
\usepackage{array}
\usepackage{readarray}
\readarraysepchar{,}
\usepackage{filecontents}
% If the argument is provided at the Windows command prompt, define \FILENAME as the input argument
% otherwise define \FILENAME as a default comma-separated file to process.
\ifdefined\InputFilename
\def\FILENAME{\InputFilename}
\else
\begin{filecontents*}{\FILENAME.csv}
1,2,3
4,5,6
7,8,9
10,11,12
\end{filecontents*}
\fi
\begin{document}
\wlog{filename is \FILENAME.csv}
\readdef{\FILENAME.csv}\namedata
\readarray\namedata\mydata[-,\ncols]
\wlog{\FILENAME.csv has \nrows rows and \ncols columns.}
\end{document}
Responder1
Você não define \FILENAME
o caso que filecontents*
é usado, provavelmente você quer algo assim que o defina para ser\jobname
\documentclass[tikz, border=0mm]{standalone}
\usepackage{array}
\usepackage{readarray}
\readarraysepchar{,}
\usepackage{filecontents}
% If the argument is provided at the Windows command prompt use it
% otherwise create a default comma-separated file to process.
\ifdefined\InputFilename
\def\FILENAME{\InputFilename}
\else
\def\FILENAME{\jobname}
\begin{filecontents*}{\FILENAME.csv}
1,2,3
4,5,6
7,8,9
10,11,12
\end{filecontents*}
\fi
\begin{document}
\wlog{filename is \FILENAME.csv}
\readdef{\FILENAME.csv}\namedata
\readarray\namedata\mydata[-,\ncols]
\wlog{\FILENAME.csv has \nrows rows and \ncols columns.}
\end{document}
Responder2
A resposta não funcionou para mim, tive que mudar alguma coisa:
\documentclass[tikz, border=0mm]{standalone}
\usepackage{array}
\usepackage{readarray}
\readarraysepchar{,}
% If the argument is provided at the Windows command prompt, define \FILENAME as the input argument
% otherwise define \FILENAME as a default comma-separated file to process.
\ifdefined\InputFilename
\def\FILENAME{\InputFilename}
\else
\def\FILENAME{\jobname.csv}
\begin{filecontents*}{\FILENAME}
1,2,3
4,5,6
7,8,9
10,11,12
\end{filecontents*}
\fi
\begin{document}
Filename is \FILENAME
\readdef{\FILENAME}\namedata
\readarray\namedata\mydata[-,\ncols]
\FILENAME has \nrows rows and \ncols columns.
\end{document}
Eu criei o PDF:
O nome do arquivo é Tabela.csv Tabela.csvtem 301 linhas e 4 colunas.