Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
- 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
- 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
- 최소 예제는 "Minimal working example"을 읽어 보세요.
- 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
- 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 *.org, .io, stackexchange, stackoverflow, ctan, overleaf, google.com, sil.org, github.com, wiki.com, tistory.com등은 해제하였습니다.
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 사용하는 편집기는 CKeditor입니다.
- 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
- 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
- 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.
verbatim 환경과 comment 환경 오고 가기?
2021.10.23 18:01
fancyvrb 패키지를 사용해 위의 preamble처럼 사용해 다음과 같이 prob 환경으로 문제를 출력하고,
# area of a circle
r = __________________
print('area of circle = ', ______________)
다음과 같이 sol 환경으로 해답을 출력할 수 있습니다. (현 단계에서는 prob와 sol의 내용은 같습니다.)
# area of a circle
r = int(input('Type radius :'))
print('area of circle = ', 3.14*r*r)
제가 하고 싶은 것은 하나의 소스 파일을 이용해 간단한 명령어 또는 세팅으로 해답이 있는 버전과 해답이 없는 버전의 두 종류의 출력물을 만드는 것입니다.
예를 들어 위의 sol 환경이 fancyvrb의 comment 환경으로 바뀌도록 하면 내용을 감출 수 있을 것 같은 데, 실력이 모자라 잘 안되네요..
(내용을 감출 때 라인수 만큼의 빈 박스를 그리면 더욱 좋겠습니다.)
아래처럼 한두줄만 바꾸어 새로 컴파일하면 되도록 하고 싶습니다.
\newcommand{\solution}{sol}
%\newcommand{\solution}{comment}
\newcommand와 \newenvironment를 시도해 보았지만 잘 안되네요..
간단히 요약하면 verbatim 환경과 comment 환경을 오고 가는 것으로 이해했는 데, 이것이 가능한 이야기인가요?
고수님들의 조언 부탁드립니다.
댓글 3
-
noname
2021.10.24 11:39
-
hsjun
2021.10.24 17:58
매우 감사합니다. 제가 바라던 대로 잘 동작합니다. ^^
더 알고싶어 그러는 데요.. \NewDocumentEnvironment 명령어는 oblivoir 환경에서만 사용가능한 것인가요? xparse 패키지에도 그 명령어가 있기는 하던데 book, article 환경에서는 일부만 동작합니다. \hidesolfalse 는 동작. \hidesoltrue에서는 다음과 같은 에러메시지가 나옵니다. (mwe 첨부)
! Undefined control sequence.
\environment sol code ...st \endsoldef \fi \solst
l.38 \begin{sol}
-
noname
2021.10.24 19:04
comment 패키지가 있어서 \usepackage{comment}하면 될 것 같지만... 잘 안 됩니다. memoir의 comment와 다르기 때문인데요, (verbatim을 다루는 것은 아무튼 쉽지 않습니다)
comment 패키지를 쓰지 말고, 다음처럼 하면 대략 원하는 결과를 얻을 수 있을지 모르겠습니다. xparse는 필요합니다.
\newif\ifhidesol \NewDocumentCommand\IgnoreSol{+m}{} \NewDocumentEnvironment{solhide}{+b}{\IgnoreSol{#1}}{} \NewDocumentEnvironment{sol}{} {\ifhidesol \let\solst\solhide \let\endsolst\endsolhide \else \let\solst\soldef \let\endsolst\endsoldef \fi \solst }{\endsolst}