如何在 showexpl LTXexample 中忽略一些缩进或不显示缩进符号?

如何在 showexpl LTXexample 中忽略一些缩进或不显示缩进符号?

抱歉,这个问题比较基础。我正在练习如何使用circuitikz,同时我想展示代码和输出的过程。为了优雅地显示pdf中的LaTeX源代码,我想做的是忽略一些缩进或不在showexpl LTXexample中显示缩进符号,这更影响观看体验。

这是 MWE。如果可以分别实现这两种场景(忽略或不显示缩进)就好了。

\documentclass{article}
\usepackage{listings} %插入代码块
\usepackage{tikz}
\usepackage{circuitikz}
\usepackage{showexpl} 
\lstset{%
    basicstyle=\ttfamily\small,
    commentstyle=\itshape\ttfamily\small,
    showspaces=false,
    showstringspaces=false,
    showtabs=false,
    breaklines=true,
    backgroundcolor=\color{gray!10!white},
    breakautoindent=false,
    captionpos=b,
}

\begin{document}
\begin{LTXexample}[pos=r,preset=\centering,width=0.5\linewidth,rangeaccept=false,title=potentiometer]
    \begin{circuitikz}
        \draw (0,0) to [potentiometer, name=P, mirror] ++(0,2); 
        \draw (P.wiper) to[L] ++(2,0);
    \end{circuitikz}
\end{LTXexample}
\end{document}

LTX示例输出

我想忽略或不显示红色框的内容

答案1

我没有得到你的输出^^I,但只是一个缩进:

在此处输入图片描述

即使我用制表符替换空格,我也看不到^^I^^I,但是

使用标签

提供了忽略行首的多个字符的listings选项。因此,例如,您可以使用(请注意,示例使用空格而不是表格):gobble

\documentclass{article}
\usepackage{listings}
\usepackage{tikz}
\usepackage{circuitikz}
\usepackage{showexpl} 
\lstset{%
    basicstyle=\ttfamily\small,
    commentstyle=\itshape\ttfamily\small,
    showspaces=false,
    showstringspaces=false,
    showtabs=false,
    breaklines=true,
    backgroundcolor=\color{gray!10!white},
    breakautoindent=false,
    captionpos=b,
}

\begin{document}
\lstset{gobble=4}
\begin{LTXexample}[pos=r,preset=\centering,width=0.5\linewidth,rangeaccept=false,title=potentiometer]\
    \begin{circuitikz}
        \draw (0,0) to [potentiometer, name=P, mirror] ++(0,2); 
        \draw (P.wiper) to[L] ++(2,0);
    \end{circuitikz}
\end{LTXexample}
\end{document}

要得到

减少缩进

如果您使用制表符,您至少可以使用\lstset{tabsize=1}它来减少缩进。不幸的是,listings它只允许数字 > 0。因此\lstet{tabsize=0}删除整个缩进会导致错误。

但是您可以定义一个新命令来激活忽略所有制表符的功能:

\makeatletter
\NewCommandCopy\lst@doProcessTabulator\lst@ProcessTabulator
\newcommand*{\lstignoretab}{%
  \let\lst@ProcessTabulator\relax
}
\newcommand*{\lstshowtab}{%
  \DeclareCommandCopy\lst@ProcessTabulator\lst@doProcessTabulator
}
\makeatother

现在,你可以使用以下方法在忽略制表符之间切换\lstignoretab

忽略制表符

并且不忽略它们使用\lstshowtab来获取,(默认tabsize=8):

使用标签

答案2

欢迎!

作为参考,手册中大致是这样写的circuitikz。我为代码添加了彩色背景(很不错)。对于开头的空白,你可以查看使用 linerange 选项时如何删除前导不必要的空格?

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{circuitikz}
%
% Thanks to Ulrike Fischer https://tex.stackexchange.com/a/57160/38080
% make the listing line number invisible to copy and paste
% it seems that sometimes it works, sometimes no!
%
\RequirePackage{accsupp}
\newcommand{\emptyaccsupp}[1]{\BeginAccSupp{ActualText={}}#1\EndAccSupp{}}%
%
\RequirePackage{showexpl}
\lstset{frameround=fttt}
\lstloadlanguages{TeX}
\lstset{explpreset={pos=l,
    width=-99pt,
    overhang=0pt,
    hsep=\columnsep,
    vsep=\bigskipamount,
    rframe=single,
    xleftmargin=1em,
    columns=flexible,
    language=[LaTeX]TEX,
    breaklines=true,
    basicstyle=\small\ttfamily,
    numbers=left,
    numbersep=.3em,
    numberstyle=\tiny\emptyaccsupp, 
    tabsize=3,
    backgroundcolor=\color{red!10!white}}}
\begin{document}
\begin{LTXexample}[pos=r,preset=\centering,width=0.5\linewidth,rangeaccept=false,title=potentiometer]
\begin{circuitikz}
    \draw (0,0) to [potentiometer, name=P, mirror] ++(0,2);
    \draw (P.wiper) to[L] ++(2,0);
\end{circuitikz}
\end{LTXexample}
\end{document}

在此处输入图片描述

相关内容