抱歉,这个问题比较基础。我正在练习如何使用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}
答案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}