介绍
我正在准备一些如何使用 LaTeX 的例子,然后我发现了这个包showexpl
(显示表达式) 的效果比其他的要好得多,例如verbatim
、moreverb
和fancyvrb-ex
。主要是因为它不仅显示源代码和结果,而且还可以通过访问包style
中定义的任何内容。listings
lstdefinestyle
有一天,我必须插入带有序言(\documentclass{}
和\begin{document}
)作为示例的(外部)文件,并且showexpl
也运行良好。
后来我了解到tcolorbox
(彩色盒子) 及其大量的可能性和灵活性。以下图片来自下面的 MWE,并说明了这两种风格。
然后,我可以为 LaTeX 示例创建新的样式,直到我必须使用带有序言的文件为止。在这种情况下,有一个解决方案是插入生成的 PDF,顺便说一句,这确实比我用的要好得多pdfpages
。但它需要一些剪辑,如下所示。
主要问题
\LTXinputExample
我建立的另一种方法是在 中插入tcolorbox
,但我不明白如何像以前一样格式化该框。我的意思是,bicolor
使用除法虚线 ( overlay
,因为bicolor
似乎删除了默认的separation line
)。
问题
有没有什么方法可以从第 (3) 节 (MWE) 中获取
tcolorbox
包含序言的示例的样式,而无需将 PDF 作为注释加载?如果 1 为假。是否有任何方法可以让 PDF 剪辑自动找到文本的边界?(一些数学运算
\textwidth
和其他测量graphics options={viewport=5cm 24.5cm 8cm 25.5cm,clip}
?)如果 2 为假。是否有任何方法可以将框格式化为两种颜色并带有更正的位置分割线。
tcolorbox
OBS:我知道我不需要展示每个示例源的每个结果。让我困扰的是,当示例中有序言时,无法获得样式 (3) 。
来源
外部文件和 MWE
文件:input_example
This is {\LaTeX}.
文件:input_example_preamble
\documentclass{article}
\begin{document}
This is {\LaTeX}.
\end{document}
MWE 具有listing
和tcolorbox
样式
\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}