c# adobe pdf reader : Add pages to pdf file Library software class asp.net windows html ajax SageTutorial9-part1552

SageTutorial,Release7.1
sage: for in range(5):
....:
print(i)
# now hit t enter twice
....:
0
1
2
3
4
Thesymbol=isusedforassignment.Thesymbol==isusedtocheckforequality:
sage: for in range(15):
....:
if gcd(i,15) == = 1:
....:
print(i)
....:
1
2
4
7
8
11
13
14
Keepinmindhowindentationdeterminestheblockstructureforif,for,andwhilestatements:
sage: def legendre(a,p):
....:
is_sqr_modp=-1
....:
for i i in n range(p):
....:
if a % % p p == = i^2 2 % % p:
....:
is_sqr_modp=1
....:
return is_sqr_modp
sage: legendre(2,7)
1
sage: legendre(3,7)
-1
OfcoursethisisnotanefficientimplementationoftheLegendresymbol! Itismeanttoillustratevariousaspects
ofPython/Sageprogramming. Thefunction{kronecker},whichcomeswithSage,computestheLegendresymbol
efficientlyviaaC-librarycalltoPARI.
Finally,wenotethatcomparisons,suchas==,!=,<=,>=,>,<,betweennumberswillautomaticallyconvertboth
numbersintothesametypeifpossible:
sage: 3.13.1 <= 1
True
False
sage: 2/3/2;
3/3/1
True
True
Almostanytwoobjectsmaybecompared;thereisnoassumptionthattheobjectsareequippedwithatotalordering.
sage: CC(3.1,1)
True
sage: VectorSpace(QQ,3)
# output can n be somewhat t random
True
6.9. Loops,Functions,ControlStatements,andComparisons
87
Add pages to pdf file - insert pages into PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide C# Users to Insert (Empty) PDF Page or Pages from a Supported File Format
add a page to a pdf in reader; add pages to pdf in preview
Add pages to pdf file - VB.NET PDF Page Insert Library: insert pages into PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use VB.NET APIs to Add a New Blank Page to PDF Document
add page number pdf file; add and delete pages in pdf
SageTutorial,Release7.1
Useboolforsymbolicinequalities:
sage: 1
x < < x x + 1
sage: bool(x 1)
True
WhencomparingobjectsofdifferenttypesinSage,inmostcasesSagetriestofindacanonicalcoercionofboth
objectstoacommonparent(seeParents,ConversionandCoercionformoredetails). Ifsuccessful,thecomparison
isperformedbetweenthecoercedobjects;ifnotsuccessful,theobjectsareconsiderednotequal.Fortestingwhether
twovariablesreferencethesameobjectuseis. Asweseeinthisexample,thePythonint1isunique,buttheSage
Integer1isnot:
sage: is 2/2
False
sage: int(1is int(2)/int(2)
True
sage: is 1
False
sage: == 2/2
True
Inthefollowingtwolines,thefirstequalityisFalsebecausethereisnocanonicalmorphismQ→F
5
,henceno
canonicalwaytocomparethe1inF
5
tothe1∈Q.Incontrast,thereisacanonicalmapZ→F
5
,hencethesecond
comparisonisTrue.Notealsothattheorderdoesn’tmatter.
sage: GF(5)(1== QQ(1); QQ(1== GF(5)(1)
False
False
sage: GF(5)(1== ZZ(1); ZZ(1== GF(5)(1)
True
True
sage: ZZ(1== QQ(1)
True
WARNING:ComparisoninSageismorerestrictivethaninMagma,whichdeclaresthe1∈F
5
equalto1∈Q.
sage: magma(’GF(5)!1 eq q Rationals()!1’)
# optional l - - magma
true
6.10 Profiling
SectionAuthor:MartinAlbrecht(malb@informatik.uni-bremen.de)
“Prematureoptimizationistherootofallevil.”-DonaldKnuth
Sometimesitisusefultocheckforbottlenecksincodetounderstandwhichpartstakethemostcomputationaltime;
thiscangiveagoodideaofwhichpartstooptimize.PythonandthereforeSageoffersseveralprofiling–asthisprocess
iscalled–options.
Thesimplesttouseisthepruncommandintheinteractiveshell. Itreturnsasummarydescribingwhichfunctions
tookhowmuchcomputationaltime. Toprofile(thecurrentlyslow! -asofversion1.0)matrixmultiplicationover
finitefields,forexample,do:
sage: k,a GF(2
**
8’a’).objgen()
sage: Matrix(k,10,10,[k.random_element() for in range(10
*
10)])
88
Chapter6. Programming
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
File: Split PDF; C# Page: Insert PDF pages; C# Page: Delete PDF pages; C# Read C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to
adding a page to a pdf document; add page pdf reader
VB.NET PDF Password Library: add, remove, edit PDF file password
This VB.NET example shows how to add PDF file password with access permission setting. passwordSetting.IsAssemble = True ' Add password to PDF file.
add pages to pdf without acrobat; adding page numbers in pdf
SageTutorial,Release7.1
sage: %prun B A
*
A
32893 function n calls s in 1.100 CPU seconds
Ordered by: internal l time
ncalls tottime e percall l cumtime percall l filename:lineno(function)
12127
0.160
0.000
0.160
0.000 :0(isinstance)
2000
0.150
0.000
0.280
0.000 matrix.py:2235(__getitem__)
1000
0.120
0.000
0.370
0.000 finite_field_element.py:392(__mul__)
1903
0.120
0.000
0.200
0.000 finite_field_element.py:47(__init__)
1900
0.090
0.000
0.220
0.000 finite_field_element.py:376(__compat)
900
0.080
0.000
0.260
0.000 finite_field_element.py:380(__add__)
1
0.070
0.070
1.100
1.100 matrix.py:864(__mul__)
2105
0.070
0.000
0.070
0.000 matrix.py:282(ncols)
...
Herencallsisthenumberofcalls,tottimeisthetotaltimespentinthegivenfunction(andexcludingtimemade
incallstosub-functions),percallisthequotientoftottimedividedbyncalls. cumtimeisthetotaltime
spentinthisandallsub-functions(i.e.,frominvocationuntilexit),percallisthequotientofcumtimedivided
byprimitivecalls,andfilename:lineno(function)providestherespectivedataofeachfunction. Therule
ofthumbhereis: Thehigherthefunctioninthatlisting,themoreexpensiveitis. . Thusitismoreinterestingfor
optimization.
Asusual,prun?providesdetailsonhowtousetheprofilerandunderstandtheoutput.
Theprofilingdatamaybewrittentoanobjectaswelltoallowcloserexamination:
sage: %prun -r r A
*
A
sage: stats = _
sage: stats?
Note:enteringstats = prun -r A\
*
AdisplaysasyntaxerrormessagebecauseprunisanIPythonshellcom-
mand,notaregularfunction.
For a a nice graphical representation of f profiling g data, you u can n use the hotshot profiler, a small script t called
hotshot2cachetreeandtheprogramkcachegrind(Unixonly). Thesameexamplewiththehotshotpro-
filer:
sage: k,a GF(2
**
8’a’).objgen()
sage: Matrix(k,10,10,[k.random_element() for in range(10
*
10)])
sage: import hotshot
sage: filename "pythongrind.prof"
sage: prof hotshot.Profile(filename, lineevents=1)
sage: prof.run("A
*
A")
<hotshot.Profile instance e at t 0x414c11ec>
sage: prof.close()
Thisresultsinafilepythongrind.profinthecurrentworkingdirectory.Itcannowbeconvertedtothecachegrind
formatforvisualization.
Onasystemshell,type
hotshot2calltree -o cachegrind.out.42 2 pythongrind.prof
Theoutputfilecachegrind.out.42cannowbeexaminedwithkcachegrind. Pleasenotethatthenaming
conventioncachegrind.out.XXneedstobeobeyed.
6.10. Profiling
89
C# PDF Password Library: add, remove, edit PDF file password in C#
This example shows how to add PDF file password with access permission setting. passwordSetting.IsAssemble = true; // Add password to PDF file.
add a page to pdf file; adding a page to a pdf in reader
C# PDF insert image Library: insert images into PDF in C#.net, ASP
using RasterEdge.Imaging.Basic; using RasterEdge.XDoc.PDF; Have a try with this sample C#.NET code to add an image to the first page of PDF file.
add pages to pdf file; add pages to an existing pdf
SageTutorial,Release7.1
90
Chapter6. Programming
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
options, including setting a single page, a series of pages, and random pages to be C#.NET Project DLLs for Deleting PDF Document Page. Add necessary references
add a page to a pdf document; add document to pdf pages
VB.NET PDF insert image library: insert images into PDF in vb.net
using RasterEdge.XDoc.PDF; Have a try with this sample VB.NET code to add an image to the first page of PDF file. ' Open a document.
add a page to a pdf in acrobat; add remove pages from pdf
CHAPTER
SEVEN
USINGSAGETEX
TheSageTeXpackageallowsyoutoembedtheresultsofSagecomputationsintoaLaTeXdocument. Touseit,you
willneedto“install”itfirst(seeMakeSageTeXknowntoTeX).
7.1 Anexample
Here is a very y brief example e of f using g SageTeX. . The full documentation can be found d in
SAGE_ROOT/local/share/doc/sagetex,
where SAGE_ROOT
is the e directory
where your
Sage installation is located.
That directory contains the documentation and an example file.
See
SAGE_ROOT/local/share/texmf/tex/generic/sagetexforsomepossiblyusefulPythonscripts.
ToseehowSageTeXworks,followthedirectionsforinstallingSageTeX(inMakeSageTeXknowntoTeX)andcopy
thefollowingtextintoafilenamed,say,st_example.tex:
Warning: Thetextbelowwillhaveseveralerrorsaboutunknowncontrolsequencesifyouareviewingthisinthe
“live”help.Usethestaticversiontoseethecorrecttext.
\documentclass{article}
\usepackage{sagetex}
\begin{document}
Using Sage\TeX, one e can use Sage e to o compute e things and put t them into
your \LaTeX{} document. For example, there are
$\sage{number_of_partitions(1269)}integer partitions of $1269$.
You don’t need to o compute e the e number yourself, or r even cut t and paste
it from m somewhere.
Here’s some Sage code:
\begin{sageblock}
f(x) = = exp(x)
*
sin(2
*
x)
\end{sageblock}
The second d derivative e of $fis
\[
\frac{\mathrm{d}^{2}}{\mathrm{d}x^{2}} \sage{f(x)=
\sage{diff(f, x, 2)(x)}.
\]
Here’s a a plot t of $ffrom $-1to $1$:
91
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
In order to run the sample code, the following steps would be necessary. Add necessary references: How to VB.NET: Delete Consecutive Pages from PDF.
add pages to pdf preview; add page to pdf in preview
C# PDF File Split Library: Split, seperate PDF into multiple files
set as 1, then the two output PDF files will contains the first page and the later three pages respectively C# DLLs: Split PDF Document. Add necessary references
add page number pdf; add page to a pdf
SageTutorial,Release7.1
\sageplot{plot(f, -1, , 1)}
\end{document}
RunLaTeXonst_example.texasusual.NotethatLaTeXwillhavesomecomplaints,whichwillinclude:
Package sagetex x Warning: : Graphics file
sage-plots-for-st_example.tex/plot-0.eps on n page e 1 1 does not t exist. . Plot
command is on input line 25.
Package sagetex x Warning: : There were undefined Sage e formulas s and/or
plots. Run Sage e on n st_example.sagetex.sage, , and d then run LaTeX on
st_example.tex again.
Notice that, , in n addition to the usual collection of files s produced d by LaTeX, , there is s a a file called
st_example.sagetex.sage. ThatisaSagescriptproducedwhenyourunLaTeXonst_example.tex.
ThewarningmessagetoldyoutorunSageonst_example.sagetex.sage,sotakeitsadviceanddothat.Itwill
tellyoutorunLaTeXonst_example.texagain,butbeforeyoudothat,noticethatanewfilehasbeencreated:
st_example.sagetex.sout. ThatfilecontainstheresultsofSage’scomputations,inaformatthatLaTeXcan
usetoinsertintoyourtext. AnewdirectorycontaininganEPSfileofyourplothasalsobeencreated. . RunLaTeX
againandyou’llseethateverythingthatSagecomputedandplottedisnowincludedinyourdocument.
Thedifferentmacrosusedaboveshouldbeprettyeasytounderstand.Asageblockenvironmenttypesetsyourcode
verbatimandalsoexecutesthecodewhenyourunSage.Whenyoudo\sage{foo},theresultputintoyourdocu-
mentiswhateveryougetfromrunninglatex(foo)insideSage.Plotcommandsareabitmorecomplicated,butin
theirsimplestform,\sageplot{foo}insertstheimageyougetfromdoingfoo.save(’filename.eps’).
Ingeneral,themantrais:
• runLaTeXonyour.texfile;
• runSageonthegenerated.sagefile;
• runLaTeXagain.
YoucanomitrunningSageifyouhaven’tchangedaroundanySagecommandsinyourdocument.
There’salotmoretoSageTeX,andsincebothSageandLaTeXarecomplex,powerfultools,it’sagoodideatoread
thedocumentationforSageTeX,whichisinSAGE_ROOT/local/share/doc/sagetex.
7.2 MakeSageTeXknowntoTeX
Sageislargelyself-contained,butsomepartsdoneedsomeinterventiontoworkproperly.SageTeXisonesuchpart.
TheSageTeXpackageallowsonetoembedcomputationsandplotsfromSageintoaLaTeXdocument. SageTeXis
installedinSagebydefault,buttouseSageTeXwithyourLaTeXdocuments,youneedtomakeyourTeXinstallation
awareofitbeforeitwillwork.
The key to this is that t TeX X needs s to o be able to find sagetex.sty, , which h can n be found in
SAGE_ROOT/local/share/texmf/tex/generic/sagetex/,whereSAGE_ROOTisthedirectorywhere
youbuiltorinstalledSage. IfTeXcanfindsagetex.sty,thenSageTeXwillwork. Thereareseveralwaysto
accomplishthis.
• Thefirstandsimplestwayissimplytocopysagetex.styintothesamedirectoryasyourLaTeXdocument.
Sincethecurrentdirectoryisalwayssearchedwhentypesettingadocument,thiswillalwayswork.
Thereareacouplesmallproblemswiththis,however:thefirstisthatyouwillendupwithmanyunnecessary
copiesofsagetex.styscatteredaroundyourcomputer.Thesecondandmoreseriousproblemisthatifyou
92
Chapter7. UsingSageTeX
SageTutorial,Release7.1
upgradeSageandgetanewversionofSageTeX,thePythoncodeandLaTeXcodeforSageTeXmaynolonger
match,causingerrors.
• ThesecondwayistousetheTEXINPUTSenvironmentvariable.Ifyouareusingthebashshell,youcando
export TEXINPUTS="SAGE_ROOT/local/share/texmf//:"
whereSAGE_ROOTisthelocationofyourSageinstallation.Notethatthedoubleslashandcolonattheendof
thatlineareimportant. Thereafter,TeXandfriendswillfindtheSageTeXstylefile. . Ifyouwanttomakethis
changepermanent,youcanaddtheabovelinetoyour.bashrcfile.Ifyouareusingadifferentshell,youmay
havetomodifytheabovecommandtomaketheenvironmentvariableknown;seeyourshell’sdocumentation
forhowtodothat.
OneflawwiththismethodisthatifyouuseapplicationslikeTeXShop,Kile,orEmacs/AucTeX,theywillnot
necessarilypickuptheenvironmentvariable,sincewhentheyrunLaTeX,theymaydosooutsideyourusual
shellenvironment.
IfyouevermoveyourSageinstallation,orinstallanewversionintoanewdirectory,you’llneedtoupdatethe
abovecommandtoreflectthenewvalueofSAGE_ROOT.
• Thethird(andbest)waytomakeTeXawareofsagetex.styistocopythatfileintoaconvenientplacein
yourhomedirectory. InmostTeXdistributions,thetexmfdirectoryinyourhomedirectoryisautomatically
searchedforpackages.Tofindoutexactlywhatthisdirectoryis,dothefollowingonthecommandline:
kpsewhich -var-value=TEXMFHOME
whichwillprintoutadirectory,suchas/home/drake/texmfor/Users/drake/Library/texmf.
Copythetex/directoryfromSAGE_ROOT/local/share/texmf/intoyourhometexmfdirectorywith
acommandlike
cp -R R SAGE_ROOT/local/share/texmf/tex x TEXMFHOME
whereSAGE_ROOTis,asusual,replacedwiththelocationofyourSageinstallationandTEXMFHOMEisthe
resultofthekpsewhichcommandabove.
IfyouupgradeSageanddiscoverthatSageTeXnolongerworks,youcansimplyrepeatthesestepsandtheSage
andTeXpartsofSageTeXwillagainbesynchronized.
• For r installation on a a multiuser r system, , you just modify the e above instructions appropriately y to copy
sagetex.styintoasystemwideTeXdirectory. InsteadofthedirectoryTEXMFHOME,probablythebest
choiceistousetheresultof
kpsewhich -var-value=TEXMFLOCAL
whichwilllikelyproducesomethinglike/usr/local/share/texmf. Copythetexdirectoryasabove
intotheTEXMFLOCALdirectory.NowyouneedtoupdateTeX’sdatabaseofpackages,whichyoucandosimply
byrunning
texhash TEXMFLOCAL
asroot,replacingTEXMFLOCALappropriately. NowallusersofyoursystemwillhaveaccesstotheLaTeX
package,andiftheycanalsorunSage,theywillbeabletouseSageTeX.
Warning: it’sveryimportantthatthefilesagetex.stythatLaTeXuseswhentypesettingyourdocument
matchtheversionofSageTeXthatSageisusing. IfyouupgradeyourSageinstallation,youreallyshoulddelete
alltheoldversionsofsagetex.styfloatingaround.
Becauseofthisproblem,werecommendcopyingtheSageTeXfilesintoyourhomedirectory’stexmfdirectory
(thethirdmethodabove). Thenthereisonlyonethingyouneedtodo(copyadirectory)whenyouupgradeSage
toinsurethatSageTeXwillworkproperly.
7.2. MakeSageTeXknowntoTeX
93
SageTutorial,Release7.1
7.3 SageTeXdocumentation
Whilenotstrictlypartofinstallation,itbearsmentioningherethatthedocumentationforSageTeXismaintainedin
SAGE_ROOT/local/share/doc/sagetex/sagetex.pdf. Thereisalsoanexamplefileinthesamedirec-
tory–seeexample.texandexample.pdf,thepre-builtresultoftypesettingthatfilewithLaTeXandSage.You
canalsogetthosefilesfromtheSageTeXbitbucketpage.
7.4 SageTeXandTeXLive
OnepotentiallyconfusingissueisthatthepopularTeXdistributionTeXLive2009includesSageTeX.Thismayseem
nice,butwithSageTeX,it’simportantthattheSagebitsandLaTeXbitsbesynchronized–whichisaproblemin
thiscase,sincebothSageandSageTeXareupdatedfrequently,andTeXLiveisnot.Whileatthetimeofthiswriting
(March2013),manyLinuxdistributionshavemovedontomorerecentreleasesofTeXLive,the2009releaselingers
andis,infact,thesourceofmostbugreportsaboutSageTeX!
Becauseofthis,itisstronglyrecommendedthatyoualwaysinstalltheLaTeXpartofSageTeXfromSage,asdescribed
above. TheinstructionsabovewillinsurethatbothhalvesofSageTeXarecompatibleandwillworkproperly.Using
TeXLivetoprovidetheLaTeXsideofSageTeXisnotsupported.
94
Chapter7. UsingSageTeX
CHAPTER
EIGHT
AFTERWORD
8.1 WhyPython?
8.1.1 AdvantagesofPython
TheprimaryimplementationlanguageofSageisPython(see[Py]),thoughcodethatmustbefastisimplementedina
compiledlanguage.Pythonhasseveraladvantages:
• Objectsavingiswell-supportedinPython. . ThereisextensivesupportinPythonforsaving(nearly)arbitrary
objectstodiskfilesoradatabase.
• Excellentsupportfordocumentationoffunctionsandpackagesinthesourcecode,includingautomaticextrac-
tionofdocumentationandautomatictestingofallexamples. Theexamplesareautomaticallytestedregularly
andguaranteedtoworkasindicated.
• Memorymanagement:Pythonnowhasawellthoughtoutandrobustmemorymanagerandgarbagecollector
thatcorrectlydealswithcircularreferences,andallowsforlocalvariablesinfiles.
• PythonhasmanypackagesavailablenowthatmightbeofgreatinteresttousersofSage:numericalanalysis
andlinearalgebra, 2Dand3Dvisualization,networking(fordistributedcomputationsandservers,e.g., via
twisted),databasesupport,etc.
• Portability:Pythoniseasytocompilefromsourceonmostplatformsinminutes.
• Exceptionhandling:Pythonhasasophisticatedandwellthoughtoutsystemofexceptionhandling,whereby
programsgracefullyrecovereveniferrorsoccurincodetheycall.
• Debugger:Pythonincludesadebugger,sowhencodefailsforsomereason,theusercanaccessanextensive
stacktrace,inspectthestateofallrelevantvariables,andmoveupanddownthestack.
• Profiler:ThereisaPythonprofiler,whichrunscodeandcreatesareportdetailinghowmanytimesandforhow
longeachfunctionwascalled.
• ALanguage:InsteadofwritinganewlanguageformathematicsaswasdoneforMagma,Maple,Mathematica,
Matlab,GP/PARI,GAP,Macaulay2,Simath,etc.,weusethePythonlanguage,whichisapopularcomputer
languagethatisbeingactivelydevelopedandoptimizedbyhundredsofskilledsoftwareengineers.Pythonisa
majoropen-sourcesuccessstorywithamaturedevelopmentprocess(see[PyDev]).
8.1.2 ThePre-Parser:DifferencesbetweenSageandPython
SomemathematicalaspectsofPythoncanbeconfusing,soSagebehavesdifferentlyfromPythoninseveralways.
• Notationforexponentiation:
**
versus^. InPython,^means“xor”,notexponentiation,soinPythonwe
have
95
SageTutorial,Release7.1
>>> 2^8
10
>>> 3^2
1
>>> 3
**
2
9
Thisuseof^mayappearodd,anditisinefficientforpuremathresearch,sincethe“exclusiveor”function
israrelyused. Forconvenience,Sagepre-parsesallcommandlinesbeforepassingthemtoPython,replacing
instancesof^thatarenotinstringswith
**
:
sage: 2^8
256
sage: 3^2
9
sage: "3^2"
’3^2’
ThebitwisexoroperatorinSageis^^.Thisalsoworksfortheinplaceoperator^^=:
sage: 3^^2
1
sage: 2
sage: ^^= 8
sage: a
10
• Integerdivision: : The e Pythonexpression2/3 doesnotbehavethe waymathematicians mightexpect. . In
Python,ifmandnareints,thenm/nisalsoanint,namelythequotientofmdividedbyn. Therefore2/3=0.
TherehasbeentalkinthePythoncommunityaboutchangingPythonso2/3returnsthefloatingpointnumber
0.6666...,andmaking2//3return0.
WedealwiththisintheSageinterpreter,bywrappingintegerliteralsinInteger( )andmakingdivisiona
constructorforrationalnumbers.Forexample:
sage: 2/3
2/3
sage: (2/3).parent()
Rational Field
sage: 2//3
0
sage: int(2)/int(3)
0
• Longintegers: Pythonhasnativesupportforarbitraryprecisionintegers, , inadditiontoC-int’s. . Theseare
significantlyslowerthanwhatGMPprovides,andhavethepropertythattheyprintwithanLattheendto
distinguishthemfromint’s(andthiswon’tchangeanytimesoon).Sageimplementsarbitraryprecisionintegers
usingtheGMPC-library,andtheseprintwithoutanL.
RatherthanmodifyingthePythoninterpreter(assomepeoplehavedoneforinternalprojects),weusethePython
languageexactlyasis,andwriteapre-parserforIPythonsothatthecommandlinebehaviorofIPythoniswhata
mathematicianexpects.ThismeansanyexistingPythoncodecanbeusedinSage.However,onemuststillobeythe
standardPythonruleswhenwritingpackagesthatwillbeimportedintoSage.
(ToinstallaPythonlibrary, forexamplethatyouhavefoundontheInternet, followthedirections,butrunsage
-pythoninsteadofpython.Veryoftenthismeanstypingsage -python setup.py install.)
96
Chapter8. Afterword
Documents you may be interested
Documents you may be interested