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

제가 보기에는 여러 가지 요인이 겹쳐서 바람직하지 않은 결과를 가져온 것으로 보입니다. 명령 자체의 설계를 처음부터 재검토하는 것이 가장 좋은 방법이 될 것 같은데요, 유의할 점 몇 가지만 지적하면,

(1) kswrapfig은, \kswrapfig보다 \kswrapfigline이 일반적으로 에러를 덜 일으킵니다. 그리고 항상 기억하셔야 할 것이 wrapfig류 명령은 그 상대편 텍스트(대상문단)가 "평문단"일 경우에만 대체로 정상 동작한다는 것입니다. 이번 케이스의 "추천 트랙 박스"를 kswrpafig의 대상 문단에 넣으려면 그 자체가 곤란한 예외적 상황을 만들어낼 것입니다.
(2) kswrapfig 문단 내부에서 hsize가 변합니다. 따라서 \textwidth, \linewidth 이런 값을 쓰려면 미리 이 값을 외부에서 고정시켜두어야 합니다.
(3) tabularray를 꼭 써야 할 필요가 있는지 의문입니다. 이것이 문제가 되는 것은 X 컬럼의 길이를 계산하기 위해서 너무 많은 내부 계산을 하게 되기 때문에 비효율적이기 때문입니다. 그리고 이 샘플에서는 X 길이를 \textwidth에 대하여 상대 계산을 하여야 하는데 그 값이 (말씀드린대로) 계속 변하기 때문에 정신을 못차리는 경우에 해당합니다.

이런 점을 고려하여 \FRS 명령을 다시 구상해봤습니다. 하나의 샘플이니까 이것을 참고하여 적절한 명령을 만들어보시기 바랍니다.

\usepackage{tzplot}

\ExplSyntaxOn

\box_new:N \l_info_box

\cs_new:Npn \make_infobox:nn #1 #2
{
    \hbox_set_to_wd:Nnn \l_info_box { #1 }
    {
        \begin{tikzpicture}
        \tzline[ForestGreen,very~thick](0,0)(#1-5pt,0)
        \tzline[ForestGreen,very~thick]<0,20pt>(0,0)(#1-5pt,0)
        \tzline[ForestGreen,thick](1.9cm,0)(1.9cm,20pt)
        \tznode(.9cm,10pt){\parbox{1.9cm}{
            \centering\smaller\color{OliveGreen}\ttfamily
            recommended \\[-2pt] track }}
        \tznode(2cm,10pt){\parbox{\dimexpr#1-2.1cm\relax}{
            \linespread{1}\raggedright\smaller%\color{OliveGreen}
            #2}}[r]
        \end{tikzpicture}
        \rule{3pt}{0pt} %%% strut
    }
}

\NewDocumentCommand{\FRS}{mmm+m}
{
%% kswrapfig 문단이 시작하기 전에 hsize를 미리 받아둔다.
    \dim_set:Nn \l_tmpa_dim { \linewidth - #1 \linewidth }
%% \textwidth의 현재 값도 저장해둔다.
    \dim_set_eq:NN \l_tmpb_dim \textwidth
%% 추천트랙 박스를 만드는 명령. 앞서 계산한 길이를 인자로 부여.
    \make_infobox:nn { \dim_use:N \l_tmpa_dim } { #3 }
    
    \nobreak\par\noindent
    \begin{minipage}{\textwidth}
    \vspace*{-.3\baselineskip}
%% 박스를 kswrapfig 문단이 시작하기 전에 먼저 식자. 
    {\hfill\box_use_drop:N \l_info_box\par\nobreak\vspace{-.33\baselineskip} }
%% \kswrapfig 보다는 \kswrpafigline이 더 안정적으로 동작한다.
%% 여기서는 hsize의 상대값에 따라 변하는 그림 크기를 조절하기 위해 UseBox를 true
%% 로 하고 includegraphics 명령을 직접 쓴다.
    \kswrapfigline[
        Pos=l,
        UseBox=true,    %% 그림 사이즈가 일관성없이 나타날 가능성 때문.
        Sep=-.5em,        %% Sep, Indent, Lower 등은 적절하게 조절할 것.
        Indent=-.1em,
        Lower=-18pt,
        Width=#1\linewidth,
        VAdjust=-24pt    %% VAdjust를 Lower에 의하여 raise한 만큼.
    ]{\includegraphics[width=#1\l_tmpb_dim]{#2}}
    {#4}
    \end{minipage}
%% 여기까지 전체 텍스트가 minipage 안에 들어가기 때문에 중간에 박스가
%% 분리되지 않는다.
    \par\bigskip
}

\ExplSyntaxOff

 




XE Login