Advertisement
Guest User

Untitled

a guest
Jul 5th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.35 KB | None | 0 0
  1. documentclass[twocolumn]{article}
  2. usepackage{lipsum,widetext}
  3. usepackage[switch]{lineno}
  4. linenumbers
  5. begin{document}
  6. lipsum[1-10]
  7. begin{strip}
  8. lipsum[4]
  9. end{strip}
  10. lipsum[4]
  11. begin{widetext}
  12. lipsum[4]
  13. end{widetext}
  14. lipsum[4]
  15. end{document}
  16.  
  17. iffalse; awk '/S[H]ELL/' lineno.sty|sh;exit;fi
  18.  
  19. deffileversion{v4.32b} deffiledate{2005/10/15}
  20.  
  21. newcountlinenopenaltylinenopenalty=-100000
  22. mathchardeflinenopenaltypar=32000
  23.  
  24. let@LN@outputoutput
  25. newtoksoutput
  26. output=expandafter{the@LN@output}
  27. @LN@output={%
  28. LineNoTest
  29. if@tempswa
  30. LineNoHoldInsertsTest
  31. if@tempswa
  32. if@twocolumnlet@makecol@LN@makecolfi
  33. theoutput
  34. ifnumholdinginserts=-3
  35. globalholdinginserts 3
  36. fi
  37. else
  38. globalholdinginserts-3
  39. unvbox@cclv
  40. ifnumoutputpenalty=10000else
  41. penaltyoutputpenalty
  42. fi
  43. fi
  44. else
  45. MakeLineNo
  46. fi
  47. }
  48.  
  49.  
  50. defLineNoTest{%
  51. let@@par@@@par
  52. ifnuminterlinepenalty<-linenopenaltypar
  53. advanceinterlinepenalty-linenopenalty
  54. my@nobreaktrue
  55. fi
  56. @tempswatrue
  57. ifnumoutputpenalty>-linenopenaltyparelse
  58. ifnumoutputpenalty>-188000relax
  59. @tempswafalse
  60. fi
  61. fi
  62. }
  63.  
  64. defmy@nobreaktrue{letif@nobreakiftrue}
  65.  
  66. defLineNoHoldInsertsTest{%
  67. ifnumholdinginserts=3relax
  68. @tempswafalse
  69. fi
  70. }
  71. defMakeLineNo{@tempdimadp@cclv unvbox@cclv
  72. sbox@tempboxa{hbox toz@{makeLineNumber}}%
  73. stepcounter{linenumber}%
  74. dp@tempboxa=@tempdimaht@tempboxa=z@
  75. nointerlineskipkern-@tempdimabox@tempboxa
  76. ifnumoutputpenalty=-linenopenaltyparelse
  77. @tempcntaoutputpenalty
  78. advance@tempcnta -linenopenalty
  79. penalty@tempcnta
  80. fi
  81. }
  82.  
  83.  
  84. let@@@par@@par
  85. newcountlinenoprevgraf
  86.  
  87. deflinenumberpar{ifvmode@@@parelseifinner@@@parelse
  88. advanceinterlinepenalty linenopenalty
  89. linenoprevgrafprevgraf
  90. globalholdinginserts3%
  91. @@@par
  92. ifnumprevgraf>linenoprevgraf
  93. penalty-linenopenaltypar
  94. fi
  95. kernz@
  96. globalholdinginserts0%
  97. advanceinterlinepenalty -linenopenalty
  98. fifi
  99. }
  100.  
  101. deflinenumbers{let@@parlinenumberpar
  102. ifx@par@@@parlet@parlinenumberparfi
  103. ifxpar@@@parletparlinenumberparfi
  104. @ifnextchar[{resetlinenumber}%]
  105. {@ifstar{resetlinenumber}{}}%
  106. }
  107.  
  108. defnolinenumbers{let@@par@@@par
  109. ifx@parlinenumberparlet@par@@@parfi
  110. ifxparlinenumberparletpar@@@parfi
  111. }
  112.  
  113.  
  114. defpagewiselinenumbers{linenumberssetpagewiselinenumbers}
  115. defrunninglinenumbers{setrunninglinenumberslinenumbers}
  116.  
  117.  
  118. @namedef{linenumbers*}{parlinenumbers*}
  119. @namedef{runninglinenumbers*}{parrunninglinenumbers*}
  120.  
  121. defendlinenumbers{par@endpetrue}
  122. letendrunninglinenumbersendlinenumbers
  123. letendpagewiselinenumbersendlinenumbers
  124. expandafterletcsname endlinenumbers*endcsnameendlinenumbers
  125. expandafterletcsname endrunninglinenumbers*endcsnameendlinenumbers
  126. letendnolinenumbersendlinenumbers
  127.  
  128.  
  129. newcommandlinenomathNonumbers{%
  130. ifx@@par@@@parelse
  131. ifnuminterlinepenalty>-linenopenaltypar
  132. globalholdinginserts3%
  133. advanceinterlinepenalty linenopenalty
  134. advancepredisplaypenalty linenopenalty
  135. fi
  136. fi
  137. ignorespaces
  138. }
  139.  
  140. newcommandlinenomathWithnumbers{%
  141. ifx@@par@@@parelse
  142. ifnuminterlinepenalty>-linenopenaltypar
  143. globalholdinginserts3%
  144. advanceinterlinepenalty linenopenalty
  145. advancepredisplaypenalty linenopenalty
  146. advancepostdisplaypenalty linenopenalty
  147. advanceinterdisplaylinepenalty linenopenalty
  148. fi
  149. fi
  150. ignorespaces
  151. }
  152.  
  153. newcommandlinenumberdisplaymath{%
  154. deflinenomath{linenomathWithnumbers}%
  155. @namedef{linenomath*}{linenomathNonumbers}%
  156. }
  157.  
  158. newcommandnolinenumberdisplaymath{%
  159. deflinenomath{linenomathNonumbers}%
  160. @namedef{linenomath*}{linenomathWithnumbers}%
  161. }
  162.  
  163. defendlinenomath{%
  164. globalholdinginserts0
  165. @ignoretrue
  166. }
  167. expandafterletcsname endlinenomath*endcsnameendlinenomath
  168.  
  169. nolinenumberdisplaymath
  170.  
  171.  
  172. let@LN@addmarginpar@addmarginpar
  173. def@addmarginpar{%
  174. ifnumcount@currbox>-2relax
  175. expandafter@LN@addmarginpar
  176. else
  177. @cons@freelist@currbox
  178. protected@write@auxout{}{%
  179. stringnewlabel
  180. {csname @LNL@the@currboxendcsname}%
  181. {{theLineNumber}{thepage}@LN@ExtraLabelItems}}%
  182. fi}
  183.  
  184. let@LN@ExtraLabelItems@empty
  185.  
  186.  
  187. deflinelabel#1{%
  188. ifvmode
  189. ifinner else
  190. leavevmode @bsphack @savskp@
  191. fi
  192. else
  193. @bsphack
  194. fi
  195. ifhmode
  196. ifinner
  197. @parmoderr
  198. else
  199. @floatpenalty -@Mii
  200. @next@currbox@freelist
  201. {globalcount@currbox-2%
  202. expandaftergdefcsname @LNL@the@currboxendcsname{#1}}%
  203. {@floatpenaltyz@ @fltovf def@currbox{@tempboxa}}%
  204. begingroup
  205. setbox@currbox color@vbox vbox bgroup end@float
  206. endgroup
  207. @ignorefalse @esphack
  208. fi
  209. else
  210. @parmoderr
  211. fi
  212. }
  213.  
  214. defmakeLineNumberLeft{hsslinenumberfontLineNumberhskiplinenumbersep}
  215.  
  216. defmakeLineNumberRight{linenumberfonthskiplinenumbersephskipcolumnwidth
  217. hbox tolinenumberwidth{hssLineNumber}hss}
  218.  
  219. deflinenumberfont{normalfonttinysffamily}
  220.  
  221. newdimenlinenumbersep
  222. newdimenlinenumberwidth
  223.  
  224. linenumberwidth=10pt
  225. linenumbersep=10pt
  226.  
  227. defswitchlinenumbers{@ifstar
  228. {letmakeLineNumberOddmakeLineNumberRight
  229. letmakeLineNumberEvenmakeLineNumberLeft}%
  230. {letmakeLineNumberOddmakeLineNumberLeft
  231. letmakeLineNumberEvenmakeLineNumberRight}%
  232. }
  233.  
  234. defsetmakelinenumbers#1{@ifstar
  235. {letmakeLineNumberRunning#1%
  236. letmakeLineNumberOdd#1%
  237. letmakeLineNumberEven#1}%
  238. {ifxc@linenumberc@runninglinenumber
  239. letmakeLineNumberRunning#1%
  240. else
  241. letmakeLineNumberOdd#1%
  242. letmakeLineNumberEven#1%
  243. fi}%
  244. }
  245.  
  246. defleftlinenumbers{setmakelinenumbersmakeLineNumberLeft}
  247. defrightlinenumbers{setmakelinenumbersmakeLineNumberRight}
  248.  
  249. leftlinenumbers*
  250.  
  251. newcounter{linenumber}
  252. newcountc@pagewiselinenumber
  253. letc@runninglinenumberc@linenumber
  254.  
  255. newcommandresetlinenumber[1][1]{c@runninglinenumber#1}
  256.  
  257. defmakeRunningLineNumber{makeLineNumberRunning}
  258.  
  259. defsetrunninglinenumbers{%
  260. deftheLineNumber{thelinenumber}%
  261. letc@linenumberc@runninglinenumber
  262. letmakeLineNumbermakeRunningLineNumber
  263. }
  264.  
  265. setrunninglinenumbersresetlinenumber
  266.  
  267. defsetpagewiselinenumbers{%
  268. lettheLineNumberthePagewiseLineNumber
  269. letc@linenumberc@pagewiselinenumber
  270. letmakeLineNumbermakePagewiseLineNumber
  271. }
  272.  
  273. defmakePagewiseLineNumber{logtheLineNumbergetLineNumber
  274. ifoddNumberedPage
  275. makeLineNumberOdd
  276. else
  277. makeLineNumberEven
  278. fi
  279. }
  280.  
  281. deflogtheLineNumber{protected@write@auxout{}{%
  282. string@LN{thec@linenumber}{noexpandthec@page}}}
  283.  
  284. defLastNumberedPage{first}
  285. defLN@Pfirst{nextLNrelax}
  286.  
  287. letlastLNrelax % compare to last line on this page
  288. letfirstLNrelax % compare to first line on this page
  289. letpageLNrelax % get the page number, compute the linenumber
  290. letnextLNrelax % move to the next page
  291.  
  292. AtEndDocument{let@LN@gobbletwo}
  293.  
  294. def@LN#1#2{{expandafter@@LN
  295. csname LN@P#2C@LN@columnexpandafterendcsname
  296. csname LN@PO#2endcsname
  297. {#1}{#2}}}
  298.  
  299. def@@LN#1#2#3#4{ifx#1relax
  300. ifx#2relaxgdef#2{#3}fi
  301. expandafter@@@LNcsname LN@PLastNumberedPageendcsname#1
  302. xdef#1{lastLN{#3}firstLN{#3}pageLN{#4}{@LN@column}{#2}nextLNrelax}%
  303. else
  304. deflastLN##1{noexpandlastLN{#3}}%
  305. xdef#1{#1}%
  306. fi
  307. xdefLastNumberedPage{#4C@LN@column}}
  308.  
  309. def@@@LN#1#2{{defnextLN##1{noexpandnextLNnoexpand#2}%
  310. xdef#1{#1}}}
  311.  
  312. defNumberedPageCache{LN@Pfirst}
  313.  
  314. deftestLastNumberedPage#1{ifnum#1<c@linenumber
  315. letfirstLN@gobble
  316. fi}
  317.  
  318. deftestFirstNumberedPage#1{ifnum#1>c@linenumber
  319. defnextLN##1{testNextNumberedPageLN@Pfirst}%
  320. else
  321. letnextLN@gobble
  322. defpageLN{gotNumberedPage{#1}}%
  323. fi}
  324.  
  325. longdef @gobblethree #1#2#3{}
  326.  
  327. deftestNumberedPage{%
  328. letlastLNtestLastNumberedPage
  329. letfirstLNtestFirstNumberedPage
  330. letpageLN@gobblethree
  331. letnextLNtestNextNumberedPage
  332. NumberedPageCache
  333. }
  334.  
  335. deftestNextNumberedPage#1{ifx#1relax
  336. globaldefNumberedPageCache{gotNumberedPage0000}%
  337. PackageWarningNoLine{lineno}%
  338. {Linenumber reference failed,
  339. MessageBreak rerun to get it right}%
  340. else
  341. globalletNumberedPageCache#1%
  342. fi
  343. testNumberedPage
  344. }
  345.  
  346. letgetLineNumbertestNumberedPage
  347.  
  348. newififoddNumberedPage
  349. newififcolumnwiselinenumbers
  350. columnwiselinenumbersfalse
  351.  
  352. defgotNumberedPage#1#2#3#4{oddNumberedPagefalse
  353. ifodd if@twocolumn #3else #2firelaxoddNumberedPagetruefi
  354. advancec@linenumber 1relax
  355. ifcolumnwiselinenumbers
  356. subtractlinenumberoffset{#1}%
  357. else
  358. subtractlinenumberoffset{#4}%
  359. fi
  360. }
  361.  
  362. defrunningpagewiselinenumbers{%
  363. letsubtractlinenumberoffset@gobble
  364. }
  365.  
  366. defrealpagewiselinenumbers{%
  367. defsubtractlinenumberoffset##1{advancec@linenumber-##1relax}%
  368. }
  369.  
  370. realpagewiselinenumbers
  371.  
  372. defthePagewiseLineNumber{protect
  373. getpagewiselinenumber{thec@linenumber}}%
  374.  
  375. defgetpagewiselinenumber#1{{%
  376. c@linenumber #1relaxtestNumberedPage
  377. thelinenumber
  378. }}
  379.  
  380.  
  381. let@LN@orig@makecol@makecol
  382. def@LN@makecol{%
  383. @LN@orig@makecol
  384. setbox@outputbox vbox{%
  385. boxmaxdepth @maxdepth
  386. protected@write@auxout{}{%
  387. string@LN@col{if@firstcolumn1else2fi}%
  388. }%
  389. box@outputbox
  390. }% vbox
  391. }
  392.  
  393. def@LN@col#1{def@LN@column{#1}}
  394. @LN@col{1}
  395.  
  396. newcountc@linenumbermodulo
  397.  
  398. defthemodulolinenumber{{@tempcntac@linenumber
  399. divide@tempcntac@linenumbermodulo
  400. multiply@tempcntac@linenumbermodulo
  401. ifnum@tempcnta=c@linenumberthelinenumberfi
  402. }}
  403.  
  404.  
  405. newcommandmodulolinenumbers[1][0]{%
  406. letLineNumberthemodulolinenumber
  407. ifnum#1>1relax
  408. c@linenumbermodulo#1relax
  409. elseifnum#1=1relax
  410. defLineNumber{thelinenumber}%
  411. fifi
  412. }
  413.  
  414. setcounter{linenumbermodulo}{5}
  415. modulolinenumbers[1]
  416.  
  417. DeclareOption{left}{leftlinenumbers*}
  418.  
  419. DeclareOption{right}{rightlinenumbers*}
  420.  
  421. DeclareOption{switch}{setpagewiselinenumbers
  422. switchlinenumbers
  423. runningpagewiselinenumbers}
  424.  
  425. DeclareOption{switch*}{setpagewiselinenumbers
  426. switchlinenumbers*%
  427. runningpagewiselinenumbers}
  428.  
  429. DeclareOption{columnwise}{setpagewiselinenumbers
  430. columnwiselinenumberstrue
  431. realpagewiselinenumbers}
  432.  
  433. DeclareOption{pagewise}{setpagewiselinenumbers
  434. realpagewiselinenumbers}
  435.  
  436. DeclareOption{running}{setrunninglinenumbers}
  437.  
  438. DeclareOption{modulo}{modulolinenumbersrelax}
  439.  
  440.  
  441. DeclareOption{mathlines}{linenumberdisplaymath}
  442.  
  443. letdo@mlinenorelax
  444. DeclareOption{displaymath}{letdo@mlineno@empty}
  445.  
  446. DeclareOption{hyperref}{PackageWarningNoLine{lineno}{%
  447. Option [hyperref] is obsolete.
  448. MessageBreak The hyperref package is detected automatically.}}
  449.  
  450. AtBeginDocument{%
  451. @ifpackageloaded{nameref}{%
  452. def@LN@ExtraLabelItems{{}{}{}}}}
  453.  
  454. ProcessOptions
  455.  
  456.  
  457. ifxdo@mlineno@empty
  458. @ifundefined{mathindent}{
  459.  
  460. letLN@displaymath[
  461. letLN@enddisplaymath]
  462. renewcommand[{begin{linenomath}LN@displaymath}
  463. renewcommand]{LN@enddisplaymathend{linenomath}}
  464.  
  465. letLN@equationequation
  466. letLN@endequationendequation
  467. renewenvironment{equation}
  468. {linenomathLN@equation}
  469. {LN@endequationendlinenomath}
  470.  
  471. }% @ifundefined{mathindent}
  472.  
  473. letLN@eqnarrayeqnarray
  474. letLN@endeqnarrayendeqnarray
  475. renewenvironment{eqnarray}
  476. {linenomathLN@eqnarray}
  477. {LN@endeqnarrayendlinenomath}
  478.  
  479. fi
  480.  
  481.  
  482. definternallinenumbers{setrunninglinenumbers
  483. let@@parinternallinenumberpar
  484. ifx@par@@@parlet@parinternallinenumberparfi
  485. ifxpar@@@parletparinternallinenumberparfi
  486. ifx@parlinenumberparlet@parinternallinenumberparfi
  487. ifxparlinenumberparletparinternallinenumberparfi
  488. @ifnextchar[{resetlinenumber}%]
  489. {@ifstar{letc@linenumberc@internallinenumber
  490. c@linenumber@ne}{}}%
  491. }
  492.  
  493. letendinternallinenumbersendlinenumbers
  494. @namedef{internallinenumbers*}{internallinenumbers*}
  495. expandafterletcsname endinternallinenumbers*endcsnameendlinenumbers
  496.  
  497. newcountc@internallinenumber
  498. newcountc@internallinenumbers
  499.  
  500. definternallinenumberpar{ifvmode@@@parelseifinner@@@parelse@@@par
  501. begingroup
  502. c@internallinenumbersprevgraf
  503. setbox@tempboxahbox{vbox{makeinternalLinenumbers}}%
  504. dp@tempboxaprevdepth
  505. ht@tempboxaz@
  506. nobreakvskip-prevdepth
  507. nointerlineskipbox@tempboxa
  508. endgroup
  509. fifi
  510. }
  511.  
  512. defmakeinternalLinenumbers{ifnumc@internallinenumbers>0relax
  513. hbox toz@{makeLineNumber}globaladvancec@linenumber@ne
  514. advancec@internallinenumbersm@ne
  515. expandaftermakeinternalLinenumbersfi
  516. }
  517.  
  518.  
  519. newcommandlineref{%
  520. ifxc@linenumnerc@runninglinenumner
  521. expandafterlinerefr
  522. else
  523. expandafterlinerefp
  524. fi
  525. }
  526.  
  527. newcommandlinerefp[2][z@]{{%
  528. let@thelinenumberthelinenumber
  529. edefthelinenumber{advancec@linenumber#1relaxnoexpand@thelinenumber}%
  530. ref{#2}%
  531. }}
  532.  
  533. newcommandlinerefr[2][z@]{{%
  534. def@@linerefadd{advancec@linenumber#1}%
  535. expandafter@setrefcsname r@#2endcsname
  536. @linerefadd{#2}%
  537. }}
  538.  
  539. newcommand@linerefadd[2]{c@linenumber=#1@@linerefaddrelax
  540. thelinenumber}
  541.  
  542.  
  543. newcommandquotelinenumbers
  544. {@ifstarlinenumbers{@ifnextchar[linenumbers{linenumbers*}}}
  545.  
  546. newdimenquotelinenumbersep
  547. quotelinenumbersep=linenumbersep
  548. letquotelinenumberfontlinenumberfont
  549.  
  550. newcommandnumquotelist
  551. {leftlinenumbers
  552. linenumbersepquotelinenumbersep
  553. letlinenumberfontquotelinenumberfont
  554. addtolength{linenumbersep}{-@totalleftmargin}%
  555. quotelinenumbers
  556. }
  557.  
  558. newenvironment{numquote} {quotenumquotelist}{endquote}
  559. newenvironment{numquotation} {quotationnumquotelist}{endquotation}
  560. newenvironment{numquote*} {quotenumquotelist*}{endquote}
  561. newenvironment{numquotation*}{quotationnumquotelist*}{endquotation}
  562.  
  563. newenvironment{bframe}
  564. {par
  565. @tempdimatextwidth
  566. advance@tempdima 2bframesep
  567. setboxbframeboxhbox totextwidth{%
  568. hskip-bframesep
  569. vrule@widthbframerule@heightbaselineskip@depthbframesep
  570. advance@tempdima-2bframerule
  571. hskip@tempdima
  572. vrule@widthbframerule@heightbaselineskip@depthbframesep
  573. hskip-bframesep
  574. }%
  575. hbox{hskip-bframesep
  576. vrule@width@tempdima@heightbframerule@depthz@}%
  577. nointerlineskip
  578. copybframebox
  579. nobreak
  580. kern-baselineskip
  581. runninglinenumbers
  582. defmakeLineNumber{copybframeboxhss}%
  583. }
  584. {par
  585. kern-prevdepth
  586. kernbframesep
  587. nointerlineskip
  588. @tempdimatextwidth
  589. advance@tempdima 2bframesep
  590. hbox{hskip-bframesep
  591. vrule@width@tempdima@heightbframerule@depthz@}%
  592. }
  593.  
  594. newdimenbframerule
  595. bframerule=fboxrule
  596.  
  597. newdimenbframesep
  598. bframesep=fboxsep
  599.  
  600. newboxbframebox
  601.  
  602.  
  603. advancemaxdeadcycles 100
  604.  
  605. endinput
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement