我正在尝试在一个框内显示一段代码。我想知道是否可以在框内显示其行号,并将代码稍微向右移动一点?
我有以下代码:
\expandafter\def\csname [email protected]\endcsname{}
\documentclass[10pt,journal,compsoc]{IEEEtran}
\PassOptionsToPackage{table}{xcolor}
\ifCLASSOPTIONcompsoc\usepackage[nocompress]{cite}
\else
\usepackage{cite}
\fi
\ifCLASSINFOpdf\else\fi
\hyphenation{op-tical net-works semi-conduc-tor}
\usepackage[english]{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\input{solidity-highlighting.tex}
\begin{document}
\section{Introduction}
\lstinputlisting[label={fig:withdraw}, belowskip=0
\baselineskip, basicstyle=\scriptsize\ttfamily, frame=tlrb, rulecolor=\color{black}]{hello.sol}
\end{document}
你好.sol:
function hello() public returns (bool) {
uint256 amount = 100
return amount * 100
return true;
}
输出(其行号也超出了列的左限制):
想要的输出(使用绘画我能做到最好):
答案1
我热情建议tcolorbox
。
\begin{filecontents*}{\jobname.sol}
function hello() public returns bool {
uint256 amount = 100
return amount * 100
return true;
}
\end{filecontents*}
\documentclass[10pt,journal,compsoc]{IEEEtran}
\usepackage[english]{babel}
\usepackage{pgfplots}
\usepackage{booktabs}
\usepackage{listings}
\usepackage[many]{tcolorbox}
\tcbuselibrary{listings}
\ifCLASSOPTIONcompsoc
\usepackage[nocompress]{cite}
\else
\usepackage{cite}
\fi
\pgfplotsset{compat=1.18}
\hyphenation{op-tical net-works semi-conduc-tor}
\definecolor{verylightgray}{rgb}{.97,.97,.97}
\newtcbinputlisting{\inputlisting}[2][]{%
listing file={#2},
top=0pt,
left=16pt,
bottom=0pt,
right=8pt,
colback=verylightgray,
colframe=black,
listing only,
breakable,
sharp corners,
boxrule=0.2pt,
listing options={#1},
}
\lstdefinelanguage{Solidity}{
keywords=[1]{% generic keywords including crypto operations
anonymous, assembly, assert, balance, break, call, callcode, case,
catch, class, constant, continue, constructor, contract, debugger,
default, delegatecall, delete, do, else, emit, event, experimental,
export, external, false, finally, for, function, gas, if, implements,
import, in, indexed, instanceof, interface, internal, is, length,
library, log0, log1, log2, log3, log4, memory, modifier, new, payable,
pragma, private, protected, public, pure, push, require, return,
returns, revert, selfdestruct, send, solidity, storage, struct,
suicide, super, switch, then, this, throw, transfer, true, try,
typeof, using, value, view, while, with, addmod, ecrecover, keccak256,
mulmod, ripemd160, sha256, sha3
},
keywordstyle=[1]\color{blue}\bfseries,
keywords=[2]{% types; money and time units
address, bool, byte, bytes, bytes1, bytes2, bytes3, bytes4, bytes5,
bytes6, bytes7, bytes8, bytes9, bytes10, bytes11, bytes12, bytes13,
bytes14, bytes15, bytes16, bytes17, bytes18, bytes19, bytes20, bytes21,
bytes22, bytes23, bytes24, bytes25, bytes26, bytes27, bytes28, bytes29,
bytes30, bytes31, bytes32, enum, int, int8, int16, int24, int32, int40,
int48, int56, int64, int72, int80, int88, int96, int104, int112, int120,
int128, int136, int144, int152, int160, int168, int176, int184, int192,
int200, int208, int216, int224, int232, int240, int248, int256, mapping,
string, uint, uint8, uint16, uint24, uint32, uint40, uint48, uint56,
uint64, uint72, uint80, uint88, uint96, uint104, uint112, uint120,
uint128, uint136, uint144, uint152, uint160, uint168, uint176, uint184,
uint192, uint200, uint208, uint216, uint224, uint232, uint240, uint248,
uint256, var, void, ether, finney, szabo, wei, days, hours, minutes,
seconds, weeks, years},
keywordstyle=[2]\color{teal}\bfseries,
keywords=[3]{% environment variables
block, blockhash, coinbase, difficulty, gaslimit, number, timestamp,
msg, data, gas, sender, sig, value, now, tx, gasprice, origin
},
keywordstyle=[3]\color{violet}\bfseries,
identifierstyle=\color{black},
sensitive=false,
comment=[l]{//},
morecomment=[s]{/*}{*/},
commentstyle=\color{gray}\ttfamily,
stringstyle=\color{red}\ttfamily,
morestring=[b]',
morestring=[b]"
}
\lstset{
language=Solidity,
backgroundcolor=\color{verylightgray},
extendedchars=true,
basicstyle=\footnotesize\ttfamily,
showstringspaces=false,
showspaces=false,
numbers=left,
numberstyle=\footnotesize,
numbersep=9pt,
tabsize=2,
breaklines=true,
showtabs=false,
captionpos=b
}
\begin{document}
\section{Introduction}
\inputlisting{\jobname.sol}
\end{document}
答案2
使用该选项framexleftmargin
来包含数字:
\expandafter\def\csname [email protected]\endcsname{}
\documentclass[10pt,journal,compsoc]{IEEEtran}
\PassOptionsToPackage{table}{xcolor}
\ifCLASSOPTIONcompsoc\usepackage[nocompress]{cite}
\else
\usepackage{cite}
\fi
\ifCLASSINFOpdf\else\fi
\hyphenation{op-tical net-works semi-conduc-tor}
\usepackage[english]{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\input{solidity-highlighting.tex}
\begin{document}
\section{Introduction}
\lstinputlisting[framexleftmargin=5mm,label={fig:withdraw}, belowskip=0
\baselineskip, basicstyle=\scriptsize\ttfamily, frame=tlrb, rulecolor=\color{black}]{hello.sol}
\end{document}