PDF 출력에서 ​​TikZ 주석 및 텍스트 강조 표시/숨기기를 위한 주요 리스너

PDF 출력에서 ​​TikZ 주석 및 텍스트 강조 표시/숨기기를 위한 주요 리스너

LaTeX를 사용하여 강의 노트를 관리하는 동안 딜레마에 직면했습니다.

            가독성과 미학VS.엄격함과 포괄성

예를 들어 나는 증명 작업을 하고 그것을 몇 가지 매끄러운 논쟁으로 요약했지만 나중에 그것을 따르는 데 어려움을 겪을 수 있다는 것을 인식합니다. 엄청난 양의 설명 텍스트로 우아함을 희생하거나 미래의 자신을 압도할 의향이 없기 때문에 증거를 언급하자고 생각했습니다. 필요한 경우 주석을 표시하지만 기본적으로는 숨겨 두는 것이 아이디어입니다.

일부 옵션에는 다음이 포함됩니다.fancytooltips그리고pdfcomment, 그러나 그들의 의도된 목적은 내가 하려는 것과 다릅니다.

내가 무엇을 목표로 하고 있는지

이 같은:

                     예시적인 예

아이디어는 단순히 S키보드에서 키(예: 사용자 정의 명령일 수도 있지만 PDF 자체의 버튼이 아닌 것이 바람직함)를 누르는 동안 일부 추가 요소(LaTeX에서 사전 렌더링됨)가 PDF에 표시된다는 것 입니다. , 그리고 S키를 더 이상 누르지 않으면 숨겨집니다(토글 옵션도 흥미로울 수 있습니다). 어려운 점은 이 상호 작용이 다음을 수행할 수 있어야 한다는 것입니다.

  1. TikZ 사진 표시/숨기기(특히 오버레이),
  2. 문서에 표시된 일반 텍스트의 색상/하이라이트 등을 변경하고,
  3. 합리적으로 효율적이어야 하며(예: Acrobat에서 PDF를 볼 때) LaTeX 소스 코드를 완전히 읽을 수 없게 만들지 마십시오.

가능한 접근법

이제 비슷한 기능을 가진 애니메이션 패키지가 있다는 것을 알고 있습니다(예:animate, 보다이것질문 버튼을 클릭하여 TikZ 사진 간 전환에 대한 MWE를 요청했습니다.

또 다른 가능성은 LaTeX 코드를 통해 PDF 파일에 JavaScript 코드를 직접 삽입하는 것입니다(AlexG의 훌륭한 답변 참조).이것질문). 이것이 가능해야 합니다.PDF-1.7참조 및 p. 709) 효율성과 컴팩트한 코드 측면에서 그렇게 하는 가장 좋은 방법일 수도 있지만, 이를 수행하는 방법에 대한 몇 가지 팁에 대해 매우 감사하게 생각합니다. 문제 해결을 종료합니다).

LaTeX에서 부울을 사용하여 작업하는 것은 아마도 이 목적에 그다지 적합하지 않을 것입니다. 렌더링된 출력에서 ​​부울을 토글할 수는 없을 것 같습니다(또는 아무것도 변경될 것으로 예상할 수 없습니다). 하지만 내 생각이 틀렸다면 정말 기쁘겠다.

이 질문이 너무 광범위하지 않기를 바랍니다. 좀 더 좁힐 수 있다면 그렇게 하겠지만, 어떤 방향으로 가야 하는가는 물론 문제의 일부입니다. 어쨌든, 이 글을 읽어주시고 시간을 내어 의견을 보내주시거나 답변해 주셔서 정말 감사드립니다. 최선을 다하겠습니다!

다음은 작동하지 않는 최소한의 예입니다.

\documentclass[12pt]{report}

\usepackage{tikz}
\usepackage{xcolor}

\newif\ifshowcomments

\begin{document}
    \showcommentsfalse

    \ifshowcomments 
        \tikz[overlay]{\draw[green!50!black](0,-.1) -- (1,-.1); \draw[green!50!black,->](.7,-.6) node[xshift=5, yshift=5]{\tiny interesting} -- (.1,-.6) -- (0.1,-.1)}%
        \textcolor{green!50!black}{lorem}
        \tikz[overlay]{\draw[blue!75!black](0,.4) -- (1,.4); \draw[blue!75!black,->] (0.1,1) node[xshift=12, yshift=-3]{\tiny $math$} -- (0.1,.4)}%
        \textcolor{blue!75!black}{ipsum}
    \else lorem ipsum \fi
    %
    \showcommentstrue\hspace{1cm}
    %
    \ifshowcomments 
        \tikz[overlay]{\draw[green!50!black](0,-.1) -- (1,-.1); \draw[green!50!black,->](.7,-.6) node[xshift=5, yshift=5]{\tiny interesting} -- (.1,-.6) -- (0.1,-.1)}%
        \textcolor{green!50!black}{lorem}
        \tikz[overlay]{\draw[blue!75!black](0,.4) -- (1,.4); \draw[blue!75!black,->] (0.1,1) node[xshift=12, yshift=-3]{\tiny $math$} -- (0.1,.4)}%
        \textcolor{blue!75!black}{ipsum}
    \else lorem ipsum \fi
\end{document}

산출(잘림):

여기에 이미지 설명을 입력하세요

답변1

을 사용하는 것은 어떻습니까 ocgx? 여기에 예가 있습니다. Acrobat 리더 또는 이에 상응하는 기능을 갖춘 뷰어가 필요합니다. 이것을 컴파일하면(이것이 remember picture작동하는 방식이기 때문에 두 번)

\documentclass{article}
\renewcommand*\familydefault{\sfdefault}
\usepackage[tikz]{ocgx2}
\usetikzlibrary{positioning,tikzmark}

\begin{document}
\tikzmarknode{lorem}{lorem} \tikzmarknode{ipsum}{ipsum} \hfill\switchocg{ocg1}{illuminate}

\begin{ocg}{OCG 2}{ocg1}{0}
\begin{tikzpicture}[overlay,remember picture]
\begin{scope}[green!60!black]
\node at (lorem) {lorem};
\draw ([yshift=-2pt]lorem.south west) coordinate (aux) -- ([yshift=-2pt]lorem.south east)
 node[pos=0,below right=1ex,font=\tiny] (int) {interesting};
 \draw[-stealth] ([yshift=-1pt]int.south east) -| 
 ([xshift=-1pt]int.west|-aux);
\end{scope}
\begin{scope}[blue]
\node at (ipsum) {ipsum};
\draw ([yshift=2pt]ipsum.north west) coordinate (aux) --
 ([yshift=2pt]ipsum.north east) node[midway,above=1ex,font=\tiny] (math) {$math$};
 \draw[-stealth] ([xshift=-1pt]math.north west)  -- 
 ([xshift=-1pt]math.west|-aux);
\end{scope}
\end{tikzpicture}
\end{ocg}
\end{document}

당신은 얻는다

여기에 이미지 설명을 입력하세요

를 클릭하면 iluminate이렇게 됩니다.

여기에 이미지 설명을 입력하세요

다시 클릭하면 첫 번째 출력으로 돌아갑니다.

AlexG가 이것을 더욱 우아하게 만들 수 있다고 확신하지만 이것이 시작일 수도 있습니다.

부록: 물론,AlexG는 이 방법을 더욱 우아하게 만들 수 있습니다.

\documentclass{article}
\renewcommand*\familydefault{\sfdefault}
\usepackage[tikz]{ocgx2}
\usetikzlibrary{positioning,tikzmark}

\begin{document}
\tikzmarknode{lorem}{lorem} \tikzmarknode{ipsum}{ipsum} \hfill\actionsocg[onmouseall]{}{,,ocg1,}{,,,ocg1}{illuminate}

\begin{ocg}{OCG 2}{ocg1}{0}
\begin{tikzpicture}[overlay,remember picture]
\begin{scope}[green!60!black]
\node at (lorem) {lorem};
\draw ([yshift=-2pt]lorem.south west) coordinate (aux) -- ([yshift=-2pt]lorem.south east)
 node[pos=0,below right=1ex,font=\tiny] (int) {interesting};
 \draw[-stealth] ([yshift=-1pt]int.south east) -| 
 ([xshift=-1pt]int.west|-aux);
\end{scope}
\begin{scope}[blue]
\node at (ipsum) {ipsum};
\draw ([yshift=2pt]ipsum.north west) coordinate (aux) --
 ([yshift=2pt]ipsum.north east) node[midway,above=1ex,font=\tiny] (math) {$math$};
 \draw[-stealth] ([xshift=-1pt]math.north west)  -- 
 ([xshift=-1pt]math.west|-aux);
\end{scope}
\end{tikzpicture}
\end{ocg}
\end{document}

호기심 많은 고양이들이 아직 배울 수 있는 것들이 많은 것 같습니다.

관련 정보