在 tcolorbox 上使用标注进行注释

在 tcolorbox 上使用标注进行注释

我想对文档tcolorbox中的这个图表进行标注longfbox可分解内容部分

我已经使用tcolorbox和创建了整个文档pstricks,但不知道该如何让它们协同工作。我想我需要以pstricks某种方式将节点嵌入框中,但它们是verbatim-style 框,所以我不知所措。(清单使用esminted中的包tcolorbox。)

我确实找到了这个问题这可能会有所帮助,但它正在使用Tikz,我宁愿坚持使用,pstricks因为我更熟悉和习惯它。我也可以以pstricks某种方式嵌入覆盖层吗?这会帮助我在主列表框中精确定位一行代码的某些部分吗?

相似地这个问题很有希望,但正在使用Tikz,无法与breakable我所有的盒子一起使用。这个可以根据行号精确定位整行,但我需要一行中的部分来显示语句内操作的关联性。

详细信息:我通常使用板上的下支撑来绘制这个,但正在制作一些供公众使用的笔记,并希望它在 PDF 中看起来类似。

这是一条线的 MWE,也是我想要但无法实现的想法:

\documentclass{article}

\usepackage{minted}
\usepackage[minted]{tcolorbox}
\tcbuselibrary{skins,breakable,listings,xparse,raster}

                   % tcb  minted
\NewTCBListing{Cpp}{ O{} !O{} }{%
                       listing engine=minted,
                       listing only,
                       minted language=cpp,
                       minted options={style=default,
                                       autogobble,
                                       %showspaces,
                                       tabsize=4,
                                       #2},
                       skin=standard,
                       breakable,
                       #1}

\newmintinline[CppInline]{cpp}{autogobble,tabsize=4,style=default}
\newcommand{\code}[1]{\leavevmode\CppInline`#1`}

\begin{document}

    Here's a line of code, for instance:

\begin{Cpp}[]
    cin >> r1 >> r2 >> r3;
\end{Cpp}

    I'd like underbraces below \code{cin >> r1} with a label saying
    \code{cin}.  And likewise another underbrace below that \code{cin} over to
    the \code{r2}.  Finally one connecting that 2$^{\textrm{}nd}$ brace's
    \code{cin} to the \code{r3}.

\end{document}

它需要与命令pygmentize一起安装python-shell-escape命令行参数latex

结果如下:

示例输出

欢迎任何想法!

答案1

使用一些棘手的代码,您可以创建两个不可见的节点。运行lualatex

\documentclass{article}
\usepackage{pstricks-add}
\usepackage{minted}
\usepackage[minted]{tcolorbox}
\tcbuselibrary{skins,breakable,listings,xparse,raster}

% tcb  minted
\NewTCBListing{Cpp}{ O{} !O{} }{%
    listing engine=minted,
    listing only,
    minted language=cpp,
    minted options={style=default,
        autogobble,
        %showspaces,
        tabsize=4,
        #2},
    skin=standard,
    breakable,
    #1}

\newmintinline[CppInline]{cpp}{autogobble,tabsize=4,style=default}
\newcommand{\code}[1]{\leavevmode\CppInline`#1`}

\begin{document}
    
    Here's a line of code, for instance:
    

\begin{Cpp}[]
        cin >> r1 >> r2 >> r3;
\end{Cpp}

\vspace{-5.5ex}
{\ttfamily\rnode{A}{\hphantom{cin}}\hphantom{ >> }\rnode{B}{\hphantom{r1}}}
\psbrace[linecolor=red,ref=lC,rot=90](A)(B){Text}
    
\vspace{10mm}
    I'd like underbraces below \code{cin >> r1} with a label saying
    \code{cin}.  And likewise another underbrace below that \code{cin} over to
    the \code{r2}.  Finally one connecting that 2$^{\textrm{}nd}$ brace's
    \code{cin} to the \code{r3}.
    
\end{document}

在此处输入图片描述

相关内容