我正在使用的解决方案如何在框内代码中写入行号. 其代码略有变化:
\begin{filecontents*}{\jobname.sol}
function hello_world(uint a, uint b, uint c, uint d, uint e, uint f) 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}
\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,
extendedchars=true,
basicstyle=\footnotesize\ttfamily,
showstringspaces=false,
showspaces=false,
numbers=none,
numberstyle=\footnotesize,
numbersep=9pt,
tabsize=1,
breaklines=true,
showtabs=false,
captionpos=b
}
\begin{document}
\section{Introduction}
\inputlisting{\jobname.sol}
\end{document}
好像虚线有四个空格。
是否可以将换行符大小设置为两个空格?请注意,我已将其更改tabsize=1
为较小的值,但没有任何效果。
uint d
举个例子,看看和之前有两个空格bool {
:
function hello_world(uint a, uint b, uint c,
uint d, uint e, uint f) public returns bool {
uint256 amount = 100
return amount * 100
return true;
}
有关的:
答案1
使用breakindent
。
\documentclass[11pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{listings}
\usepackage{lstautogobble}
\lstdefinestyle{mystyle}
{
basicstyle=\ttfamily,
frame=single,
breaklines,
basewidth=0.6em,
breakindent=1.2em,
breakatwhitespace
}
\begin{document}
\begin{lstlisting}[style=mystyle,autogobble]
function hello_world(uint a, uint b, uint c, uint d, uint e, uint f) public returns bool {
uint256 amount = 100
return amount * 100
return true;
}
\end{lstlisting}
\begin{lstlisting}[style=mystyle,autogobble,postbreak=\hbox{$\hookrightarrow$\space}]
function hello_world(uint a, uint b, uint c, uint d, uint e, uint f) public returns bool {
uint256 amount = 100
return amount * 100
return true;
}
\end{lstlisting}
\end{document}
我已经basewidth
明确设置了(即一个字符的宽度),以便breakindent
可以精确设置为 2 个字符宽。如果您希望使用,第二个版本会打印一个钩子来区分换行符。
输出: