MCQ에 답변 적용

MCQ에 답변 적용

이제 MCQ에 대한 내 답변을 확장하고 있습니다.이 단락 SED를 MCQ 형식으로 변환하는 방법은 무엇입니까?.

file.txt의 데이터

1   c
2   a

Exam.tex의 데이터

\item
Which of the following lorem ipsun are the best playstation games you have played? 

A Pattman

B Pokemon

C Lorem

D Ipsun

E Heillui

\item
Which of the following lorem ipsun are the best playstation games you have played? 

A Pattman

B Pokemon

C Lorem

D Ipsun

E Heillui

원하는 출력은 답변의 굵은 부분으로 표시됩니다.파일.txt

\item
Which of the following lorem ipsun are the best playstation games you have played? 

A Pattman

B Pokemon

\textbf{C Lorem}

D Ipsun

E Heillui

\item
Which of the following lorem ipsun are the best playstation games you have played? 

\textbf{A Pattman}

B Pokemon

C Lorem

D Ipsun

E Heillui

의사코드

  • Perl 단락 모드\항목의 For 루프
    • for는 목록의 개수에 따라 각 단락의 빈 줄을 반복합니다(a=1, b=2, c=3, d=4, e=5).
      • 줄 시작 부분에 \textbf를 적용하고 줄 끝 부분에 }를 적용합니다.
    • 현재 단락에서 벗어나기

Python-Perl을 사용한 의사 코드

for item in items 

   perl -00pe 's/\\item\n.*\n{$item}^/\textbf{/;' file
   perl -00pe 's/\\item\n.*\n{$item}$/}/;' file

end

나는 별도의 명령으로 시작과 끝을 처리하는 것을 좋아하지 않습니다.


Perl/SED/Python을 통해 MCQ에 답변을 적용하는 방법은 무엇입니까?

답변1

{   printf '[13*%d-n[bs]pc]s%c\n' 9 a 7 b 5 c 3 d 1 e
    tr  -s ' \n' lx <file.txt; }  |  dc |
sed -f- -eb -e:s -e's/.*/\\textbf{&}/' exam.txt

dc역방향 광택 기호 계산기를 사용하여 sed다음과 같은 스크립트를 생성합니다.

8bs
17bs

...그런 다음 sed명령줄에 입력된 스크립트와 연결하여 각 줄 번호를 얻습니다.아니요b원격을 위해 생성된 스크립트에 포함됩니다 .include는 \textbf{줄에 있는 모든 항목 앞에 문자열을 삽입하고 끝에 추가합니다 }.

물론 이 두 부분에만 적용되는 것은 아니다. 기본적으로 각 행의 선행 숫자를 곱합니다.file.txt13으로 나눈 다음 곱 1, 3, 5, 7, 9에서 각각 e, d, c, b, a 중 하나를 빼서 대상 행 번호 목록을 얻습니다.

어쨌든, sed마지막으로 하고 싶은 일은 분기 이전에 편집하지 않은 모든 줄에 대해 기본 인쇄를 수행하거나 문자열에 대해 단일 교체를 수행하는 것입니다. tr그리고 dc매우빠른 유틸리티로 거의 모든 전처리를 처리합니다.


이 접근 방식의 가능한 이점은 다음과 같습니다.

  • 두 파일을 비교할 필요가 없습니다.

  • 정규식 일치가 전혀 필요하지 않습니다.

    • 정확하지만 sed일치 시도를 방지하기 위해 초기 추가 필터를 사용하면 처리에 약간의 이점이 있을 수 있습니다.모든목록의 줄 번호에 해당하는 줄 번호입니다. 예를 들면 다음과 같습니다.

      ... | sed -e'/^[ABCDE] /!b' -f- ...
      
  • 정답은파일.txt특정 순서를 따를 필요도 없고 각 문제를 완전히 대표할 필요도 없습니다.시험.txt.

가능한 단점:

  • 각 답장 편지파일.txt소문자여야 합니다.

    • 처리를 위해 tr -s '[:upper:] \n' \[:lower:]lx/ 또는.
  • 답안 번호와 답안 문자 사이, 그리고 각 답안 사이에 최소한 하나의 공백과 개행 문자가 필요합니다.파일.txt, 더 큰 숫자가 허용되더라도 첫 번째 대답 앞에는 빈 줄이 없으며 어떤 줄도 공백으로 시작하거나 끝날 수 없습니다.

  • 각 질문/답변 블록시험.txt13줄로 구성되어야 함(후행 공백 줄을 포함할 필요가 없는 마지막 항목은 제외).


dc이는 작성된 하나 또는 두 개의 GNU 확장에 따라 다릅니다. 더 이식 가능한 버전은 다음과 같습니다.

{   printf '[13*%d-p[s]pc]s%c\n' 9 a 7 b 5 c 3 d 1 e
    tr  -s ' \n' lx <file.txt;}| dc | paste -db - -|
sed -f- -eb -e:s -e's/.*/\\textbf{&}/' exam.txt

...하지만 어떻게 쓰든:


\item
Which of the following lorem ipsun are the best playstation games you have played?

A Pattman

B Pokemon

\textbf{C Lorem}

D Ipsun

E Heillui

\item
Which of the following lorem ipsun are the best playstation games you have played?

\textbf{A Pattman}

B Pokemon

C Lorem

D Ipsun

E Heillui

관련 정보