Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.

  • 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
  • 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
    • 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
    • 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
    • 최소 예제는 "Minimal working example"을 읽어 보세요.
  • 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
  • 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
  • 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
    • 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
  • MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
  • 사용하는 편집기는 CKeditor입니다.
    • 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
    • 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
    • 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.

noname

잘 봤습니다. 예제를 만드느라고 고생하셨네요. :)

제 생각을 조금 적어두겠습니다. 혹시 참고가 되기를 바랍니다.

(0) \refstepcounter는 그냥 \stepcounter로 좋을 듯합니다. thumbdepth 카운터를 ref할 일이 있을 것 같지 않습니다.

(1) \sechook이라는 것.

예시하신 코드에 \section을 \sechook 앞에 추가하셨는데 사실 이 \sechook이라는 것이 "section을 시작할 때 원하는 코드를 추가"하도록 하기 위해서 만들어둔 것입니다. 그러니까 굳이 \section을 재정의할 것 없이 \sechook을 설정해주는 것으로 되리라고 생각합니다. 이를테면 다음과 같습니다.

\setsechook{%
   \stepcounter{thumbdepth}%
   \ifthenelse{\value{thumbdepth}>\maxthumbdepth}%
        {\setcounter{thumbdepth}{1}}{}% % font}
}

memoir 매뉴얼의 해당 부분을 참고하십시오.

(2) dummy 카운터를 이용하는 것

지금 할 일은 "section 카운터가 바뀌면 thumbdepth 카운터를 설정한다"입니다. 그러니까 다음과 같은 방법으로 해보는 것이 가능합니다.

  1. \rblob와 \lbolb 명령이 시작할 때 \checkandsetthumbdepth라는 명령을 실행하도록 해둡니다.
  2. \checkandsetthumbdepth 명령은, 현재 section의 카운터와 dummy 카운터를 비교하여 만약 이 둘이 다르면, dummy 카운터를 1 증가시키고 thumbdepth도 1 증가시킵니다. 그리고 thumbdepth가 7보다 크면 1로 설정하는 일을 하게 하는 것입니다.
\newcounter{thumbdepth}
\newcounter{dummy}
\def\maxthumbdepth{7}

\newcommand\checkandsetthumbdepth{%
  \ifthenelse{\value{dummy}=\value{section}}%
    {}%
    {%
      \stepcounter{dummy}%
      \stepcounter{thumbdepth}%
      \ifthenelse{\value{thumbdepth}>\maxthumbdepth}%
      {\setcounter{thumbdepth}{1}}{}%
    }%
}

%....
\newcommand\rblob{%
 \checkandsetthumbdepth
 \begin{picture}(0,0)
  \put(0,\numexpr-\value{thumbdepth}*3+3\relax){\blob}
  \put(0.1,\numexpr-\value{thumbdepth}*3+3\relax){\textcolor{white}{\LARGE\emph{\textbf{\thesection}}}}
 \end{picture}}
\newcommand\lblob{%
 \checkandsetthumbdepth
 \begin{picture}(0,0)
  \put(-1.05,\numexpr-\value{thumbdepth}*3+3\relax){\blob}
  \put(-0.9,\numexpr-\value{thumbdepth}*3+3\relax){\textcolor{white}{\LARGE\emph{\textbf{\thesection}}}}
 \end{picture}%
}

===

(1)의 방법은 memoir/oblivoir에서 쓸 수 있고 (2)는 클래스와 무관하게 사용할 수 있을 듯하네요.

 




XE Login