%20.png)
CSV ファイルには 4 つの可能性のある文があります。例: ここに文 1、もう 1 つの文、もう 1 つの文が追加され、最後の文。
Latex では、「ここに文 1」が存在する場合は 1 を出力します。SQL の DECODE のようなものです。同様の機能を学習できる URL を教えていただけますか。
よろしく、
答え1
SQLタイプの機能をお探しの場合は、そのdatatool
包みMWE は CSV ファイルを読み取りMyData.csv
、「もう 1 つの文」と「もう 3 つの文」を検索します。
ノート:
- その
filecontents
包み このテスト ケースで読み取るファイルを設定するのに使用されました。実際の使用ケースでは必要ありません。 - 私
newtoggle
はから使用しましたそのetoolbox
包み私はその構文を構文よりも好むからです\newif
。しかし、追加のパッケージを含めたくない場合は、これを使用または変更するのはかなり簡単です\newif
。その他の条件付きメソッド。 - 必要な機能がこれだけであれば、「見つかりました」というテキストを「1」に変更してください (質問どおり)。または、コードを調整して他の操作を実行してください。
コード:
\documentclass{article}
\usepackage{datatool}
\usepackage{xstring}
\usepackage{etoolbox}
%\usepackage{filecontents}% <-- Commented out to prevent overwriting MyData.csv
\begin{filecontents*}{MyData.csv}
sentence 1 here,
one more sentence,
one more sentence added,
last sentence,
\end{filecontents*}
\newtoggle{FoundInDB}
\newcommand*{\CheckIfInDB}[4]{%
% #1 = database
% #2 = string to chek
% #3 = code to execute if string is found
% #4 = code to execute if string is NOT found
\global\togglefalse{FoundInDB}%
\DTLforeach{#1}{%
\CurrentSentence=Sentence%
}{%
\IfStrEq{\CurrentSentence}{#2}{%
%% Found string -- we are done
\global\toggletrue{FoundInDB}%
\dtlbreak% No point in searching rest of file
}{%
% Still haven't found what we are looking for :-(
}%
}%
\iftoggle{FoundInDB}{#3}{#4}%
}%
\begin{document}
\DTLloaddb[noheader,keys={Sentence}]{myDB}{MyData.csv}
\CheckIfInDB{myDB}{one more sentence}{Found it}{Not Found!}
\CheckIfInDB{myDB}{three more sentences}{Found it}{Not Found!}
\end{document}
答え2
私の理解が正しければ、CSV ファイル内の行をチェックし、この文に基づいて番号を割り当てたいということですね。
これは、R および sweave ファイル (基本的には R 言語機能を備えた LaTeX ファイル) を使用するだけで簡単に実現できます。knitr パッケージを R studio に追加することを忘れないでください。
通常のLaTeXファイルとしてファイルを開始し、\begin{document}
次のチャンクを記述した後
<<echo=false>>=
Data<-read.csv("file.path.here")
sapply(Data, function(x){
if(x=="sentence 1 here"){
return(1)
} elseif(x=="sentence2"){
return(2)
}else{
return(0)
}
@