插入带有序言的 LaTeX 示例源的最佳方法是什么?

插入带有序言的 LaTeX 示例源的最佳方法是什么?

介绍

我正在准备一些如何使用 LaTeX 的例子,然后我发现了这个包showexpl显示表达式) 的效果比其他的要好得多,例如verbatimmoreverbfancyvrb-ex。主要是因为它不仅显示源代码和结果,而且还可以通过访问包style中定义的任何内容。listingslstdefinestyle

有一天,我必须插入带有序言(\documentclass{}\begin{document})作为示例的(外部)文件,并且showexpl也运行良好。

后来我了解到tcolorbox彩色盒子) 及其大量的可能性和灵活性。以下图片来自下面的 MWE,并说明了这两种风格。

在此处输入图片描述

然后,我可以为 LaTeX 示例创建新的样式,直到我必须使用带有序言的文件为止。在这种情况下,有一个解决方案是插入生成的 PDF,顺便说一句,这确实比我用的要好得多pdfpages。但它需要一些剪辑,如下所示。

在此处输入图片描述

主要问题

\LTXinputExample我建立的另一种方法是在 中插入tcolorbox,但我不明白如何像以前一样格式化该框。我的意思是,bicolor使用除法虚线 ( overlay,因为bicolor似乎删除了默认的separation line)。

在此处输入图片描述

问题

  1. 有没有什么方法可以从第 (3) 节 (MWE) 中获取tcolorbox包含序言的示例的样式,而无需将 PDF 作为注释加载?

  2. 如果 1 为假。是否有任何方法可以让 PDF 剪辑自动找到文本的边界?(一些数学运算\textwidth和其他测量graphics options={viewport=5cm 24.5cm 8cm 25.5cm,clip}?)

  3. 如果 2 为假。是否有任何方法可以将框格式化为两种颜色并带有更正的位置分割线。

tcolorboxOBS:我知道我不需要展示每个示例源的每个结果。让我困扰的是,当示例中有序言时,无法获得样式 (3) 。

来源

  1. beamer 框架内的文章示例
  2. 如何将 showexpl 与外部类一起使用?
  3. `showexpl` 不适用于重音符号
  4. showexpl LTXexample 和枚举内的引用

外部文件和 MWE

文件:input_example

This is {\LaTeX}.

文件:input_example_preamble

\documentclass{article}
\begin{document}
This is {\LaTeX}.
\end{document}

MWE 具有listingtcolorbox样式

\documentclass{article}
\usepackage{showexpl}
\usepackage[skins,listings,breakable,raster]{tcolorbox}

\lstdefinestyle{estiloExemVerm}{
  numbers=left,
  numbersep=1em,
  numberstyle=\tiny,
  frame=single,
  framesep=\fboxsep,
  framerule=\fboxrule,
  xleftmargin=\dimexpr\fboxsep+\fboxrule\relax,
  xrightmargin=\dimexpr\fboxsep+\fboxrule\relax,
  breaklines=true,
  breakatwhitespace=true,
  keepspaces=true,
  breakindent=0pt,
  tabsize=2,
  columns=flexible,
  language={[LaTeX]TeX},
  aboveskip=0.1em,
  belowskip=1.0em,
  basicstyle=\small\ttfamily\hbox{},
  pos=r,
  width=0.5\linewidth,
  preset=\small\setlength{\parindent}{10pt},
  extendedchars=true,
  keywordstyle=\color{red},
  rulecolor=\color{red},
  backgroundcolor=\color{white}
}

\newtcbinputlisting[]{\mytcbRed}[2][]{%
  bicolor,
  lower separated=true,
  colbacklower=white,
  fonttitle=\large\sffamily\bfseries,
  breakable,
  listing and text,
  colframe=red!70!black, colback=red!10!white, coltitle=red!10!white,
  sidebyside,
  overlay={
    \draw[dashed, red!80!black,thick] (segmentation.north)--(segmentation.south);
  },
  listing options={style=estiloExemVerm},
  listing file={#2}, #1
}

\newtcbinputlisting[]{\mytcbInputListing}[2][]{%
  enhanced,
  colback=red!10!white, colframe=red!70!black, fonttitle=\large\sffamily\bfseries,
  sidebyside, bicolor, colbacklower=white,
  listing and comment,
  overlay={
    \draw[dashed, red!80!black,thick] (segmentation.north)--(segmentation.south);
  },
  listing options={style=estiloExemVerm},
  listing file={#2},
  pdf comment={#2.pdf},
%  comment style={raster columns=1, colframe=red!85!black, boxrule=2pt, %drop fuzzy shadow,  %shadow={2mm}{-2mm}{0mm}{black!50!white},
%    graphics options={viewport=5cm 24.5cm 8cm 25.5cm,clip}},
  #1,
}

\begin{document}
  
\section{LTXinputExample -- preamble}

\LTXinputExample[style=estiloExemVerm]{input_example_preamble}

\section{LTXinputExample -- without preamble}

\LTXinputExample[style=estiloExemVerm]{input_example}

\section{tcbinputlisting -- without preamble}

\mytcbRed{input_example}

\section{tcbinputlisting -- preamble -- PDF}

\mytcbInputListing{input_example_preamble}

\mytcbInputListing[comment style={raster columns=1, colframe=red!85!black, boxrule=2pt, 
  graphics options={viewport=5cm 24.5cm 8cm 25.5cm,clip}}]{input_example_preamble}

\section{LTXinputExample -- preamble -- inside tcolobox}

\begin{tcolorbox}[colframe=red!70!black, colback=red!10!white, coltitle=red!10!white]
  \LTXinputExample[style=estiloExemVerm]{input_example_preamble}
\end{tcolorbox}

\begin{tcolorbox}[
    bicolor,
    lower separated=true,
    breakable,
    colframe=red!70!black, colback=red!10!white, coltitle=red!10!white,
    colbacklower=white,
    %sidebyside,
    overlay={
      \draw[dashed, red!80!black,thick] (segmentation.north)--(segmentation.south);
    },
  ]
\LTXinputExample[style=estiloExemVerm, rframe={}]{input_example_preamble}
\end{tcolorbox}

\end{document}

相关内容